Разработка и Конфигурация · 11 мин
Как добавить команду отчета на форму 1С
Как добавить команду отчета на форму 1С: через командный интерфейс, программно и в расширении. Настройка, типичные ошибки и ответы на вопросы разработчика.
Команда отчета на форме позволяет пользователю формировать отчет прямо из документа, справочника или списка, не переходя в раздел отчетов. В зависимости от задачи команду можно добавить штатными средствами конфигуратора — через командный интерфейс, общие команды, параметризуемые команды или программно через модуль формы.
Выбор способа зависит от того, нужна ли передача параметров (например, отбор по текущему контрагенту), работаете ли вы в типовой конфигурации на поддержке и должна ли команда появляться сразу у всех пользователей. Ниже разобраны основные варианты с точными действиями и ограничениями каждого.
Перед началом работы убедитесь, что у вас есть права на изменение конфигурации или на создание расширения, а база развернута в тестовой копии — любые изменения командного интерфейса сначала проверяются не в рабочей базе.
Определите, какой способ добавления команды подходит
В 1С существует несколько механизмов вывода команды на форму, и они не взаимозаменяемы. Глобальная команда отчета открывает отчет без привязки к данным формы. Параметризуемая команда передает в отчет значение (например, ссылку на объект), что удобно для отчетов по конкретному контрагенту или номенклатуре. Программное создание даёт максимальную гибкость, но требует изменения модуля формы.
Если конфигурация типовая и находится на полной поддержке, прямое изменение объектов приведет к снятию с поддержки и сложностям при обновлении. В этом случае используйте расширение конфигурации или подсистему «Дополнительные отчеты и обработки» из библиотеки стандартных подсистем (БСП), если она встроена в вашу конфигурацию.
Как выбрать способ
Добавьте глобальную команду отчета через командный интерфейс
Самый простой случай — отчет с глобальной командой. Откройте в конфигураторе объект «Отчет» и на закладке «Команды» проверьте, что у основной команды отчета снят флаг «Параметризуемая» (или параметр команды не задан). Такая команда доступна в командном интерфейсе любых форм и подсистем.
Чтобы вывести команду на конкретную форму, откройте нужную форму объекта, перейдите на закладку «Командный интерфейс». В списке доступных команд найдите команду вашего отчета и установите флаг видимости. Команду можно разместить в панели навигации формы или перетащить в командную панель формы, чтобы она отображалась как кнопка.
После сохранения конфигурации и обновления базы данных откройте форму в режиме предприятия и проверьте, что команда видна и отчет открывается. Если команда не появилась, проверьте права доступа к отчету у текущей роли пользователя — при отсутствии права «Просмотр» команда скрывается автоматически.
- 1Откройте отчет в конфигураторе, убедитесь, что команда не параметризуемая
- 2Откройте форму объекта, перейдите на закладку «Командный интерфейс»
- 3Найдите команду отчета и включите видимость в панели навигации или действий
- 4Сохраните конфигурацию и обновите базу данных (F7)
- 5Проверьте в режиме предприятия под пользователем с рабочими правами
Добавьте параметризуемую команду для отчета по текущему объекту
Когда отчет должен строиться по данным текущей строки или объекта — например, карточка взаиморасчетов по выбранному контрагенту — используется параметризуемая команда. В свойствах команды отчета укажите «Тип параметра команды», например «СправочникСсылка.Контрагенты», и включите режим использования параметра.
После этого команда автоматически появится в командном интерфейсе форм тех объектов, чей тип совпадает с типом параметра: в форме элемента справочника «Контрагенты» и в форме списка. В модуле отчета или в настройках СКД параметр команды можно использовать для установки отбора — платформа передает значение параметра в форму отчета автоматически, если в схеме компоновки есть параметр с соответствующим именем и включенным признаком использования.
Учтите ограничение: параметризуемая команда передает только одно значение одного типа. Если отчету нужны несколько параметров или сложная логика отбора, потребуется программный вызов отчета с параметрами.
Создайте команду программно в модуле формы
Программный способ нужен, когда штатных механизмов недостаточно: требуется своя кнопка с произвольным заголовком, проверка условий перед открытием отчета или передача нескольких параметров. Команда создается в обработчике «ПриСозданииНаСервере» формы.
Последовательность такая: добавьте команду формы через коллекцию «Команды», назначьте ей действие — имя процедуры-обработчика, затем добавьте кнопку в элементы формы и свяжите её с командой. В обработчике откройте форму отчета с нужными параметрами через структуру параметров.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Команда = Команды.Добавить("ОткрытьОтчетПоДокументу");
Команда.Действие = "Подключаемый_ОткрытьОтчет";
Команда.Заголовок = "Отчет по документу";
Кнопка = Элементы.Добавить("КнопкаОтчет", Тип("КнопкаФормы"), Элементы.ГруппаКнопок);
Кнопка.ИмяКоманды = "ОткрытьОтчетПоДокументу";
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОткрытьОтчет(Команда)
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", Новый Структура("Документ", Объект.Ссылка));
ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
ОткрытьФорму("Отчет.ОтчетПоДокументу.Форма", ПараметрыФормы);
КонецПроцедуры
Обратите внимание: параметр «СформироватьПриОткрытии» работает, если форма отчета стандартная (на базе СКД). Для отчетов с произвольной формой обработку параметров нужно реализовать в модуле формы отчета самостоятельно.
Добавьте команду через расширение конфигурации
Для типовых конфигураций на поддержке расширение — основной безопасный путь. Создайте расширение (Конфигурация → Расширения конфигурации), добавьте в него собственный отчет или заимствуйте существующий, затем заимствуйте форму объекта, на которую нужно вывести команду.
В заимствованной форме добавьте команду формы и кнопку так же, как при обычной разработке: расширения поддерживают добавление собственных команд, элементов формы и обработчиков. Изменение программного кода заимствованной формы ограничено — обработчики событий добавляются через аннотации «&После», «&Перед» или «&Вместо», поэтому кнопку удобнее создавать в обработчике «ПриСозданииНаСервере» с постфиксом расширения.
Если в конфигурацию встроена БСП, рассмотрите альтернативу без программирования: подсистема «Дополнительные отчеты и обработки» позволяет подключить внешний отчет и назначить его размещение в разделах и на формах через пользовательские настройки, вообще не трогая конфигуратор.
Сравнение подходов
Быстро и без кода; подходит для изменяемых конфигураций; не подходит для типовых на поддержке
Полная гибкость и свои условия; требует изменения конфигурации и тестирования при обновлениях
Сохраняет поддержку типовой; есть ограничения на изменение заимствованных форм
Без конфигуратора и без снятия с поддержки; доступно только если подсистема встроена в конфигурацию
Проверьте результат и права доступа
После добавления команды проверьте её под учетной записью с правами реального пользователя, а не под администратором. Частая ситуация: команда видна разработчику, но скрыта у менеджера, потому что у его роли нет права «Просмотр» на отчет или на объект, из которого открывается команда.
Проверьте также поведение при незаписанном объекте: если команда передает ссылку текущего документа, а документ еще не записан, в отчет уйдет пустая ссылка. Правильное решение — в обработчике команды проверять «Объект.Ссылка.Пустая()» или «Модифицированность» и предлагать сначала записать объект.
Как проверить результат
Команда отображается и отчет открывается
Команды нет — проверьте роли и права на отчет
Отчет формируется с отбором по текущему объекту
Отчет пустой или без отбора — проверьте имена параметров в СКД
Выводится предупреждение о необходимости записи
Отчет открывается с пустой ссылкой
Доработка в расширении, обновление проходит штатно
Конфигурация снята с поддержки, изменения конфликтуют
Типичные ошибки и их последствия
Большинство проблем при добавлении команды отчета связаны не с синтаксисом, а с организационными решениями: изменение типовой конфигурации напрямую, неверные имена параметров, забытые права. Ниже — ошибки, которые встречаются чаще всего.
Отдельный риск — производительность: если в обработчике команды отчет формируется на сервере с тяжелым запросом, форма может «подвисать» у пользователя. Для длительных операций используйте фоновое выполнение отчета штатными средствами БСП или формируйте отчет по кнопке в самой форме отчета.
Часто задаваемые вопросы
Почему команда отчета не отображается на форме после добавления?
Наиболее вероятные причины: у роли пользователя нет права «Просмотр» на отчет, команда не включена в командном интерфейсе конкретной формы, либо не выполнено обновление базы данных после изменения конфигурации. Проверьте также, что отчет включен в состав функциональных опций, если они используются.
Можно ли добавить команду отчета на форму списка с передачей текущей строки?
Да. Используйте параметризуемую команду с типом параметра, совпадающим с типом ссылки списка, — платформа автоматически передаст ссылку текущей строки. Либо программно получайте текущую строку через «Элементы.Список.ТекущиеДанные» и передавайте ссылку в параметры формы отчета.
Как добавить команду, не снимая типовую конфигурацию с поддержки?
Два рабочих варианта: расширение конфигурации с заимствованием формы и добавлением собственной команды, либо подсистема «Дополнительные отчеты и обработки» БСП, если она есть в конфигурации — она позволяет подключить внешний отчет и настроить его размещение без изменения кода.
Почему параметр команды не попадает в отбор отчета на СКД?
Проверьте, что в схеме компоновки данных параметр назван так, как ожидает вызов, у параметра включено использование и снят флаг «Ограничение доступности». Также убедитесь, что параметр добавлен в настройки отчета и участвует в отборе, а не только объявлен в схеме.
Как сделать, чтобы отчет формировался сразу при нажатии команды?
При открытии стандартной формы отчета передайте параметр «СформироватьПриОткрытии» со значением «Истина» вместе со структурой отборов. Для отчета с собственной формой реализуйте формирование в обработчике «ПриОткрытии» формы отчета.
Можно ли вывести одну команду отчета сразу на несколько форм?
Да. Глобальная команда отчета доступна в командном интерфейсе любых форм — достаточно включить её видимость в каждой нужной форме. Параметризуемая команда появится автоматически во всех формах объектов подходящего типа, дополнительная настройка не требуется.
Что важно запомнить
Способ добавления команды отчета выбирается по условиям: глобальная команда — для простого открытия, параметризуемая — для отчета по текущему объекту, программная — для нестандартной логики, расширение или дополнительные отчеты БСП — для типовых конфигураций на поддержке. Всегда проверяйте результат под правами реального пользователя и обрабатывайте случай незаписанного объекта.