К статье
Практический материал

Разработка и Конфигурация · 11 мин

Как добавить команду отчета на форму 1С

Как добавить команду отчета на форму 1С: через командный интерфейс, программно и в расширении. Настройка, типичные ошибки и ответы на вопросы разработчика.

Команда отчета на форме позволяет пользователю формировать отчет прямо из документа, справочника или списка, не переходя в раздел отчетов. В зависимости от задачи команду можно добавить штатными средствами конфигуратора — через командный интерфейс, общие команды, параметризуемые команды или программно через модуль формы.

Выбор способа зависит от того, нужна ли передача параметров (например, отбор по текущему контрагенту), работаете ли вы в типовой конфигурации на поддержке и должна ли команда появляться сразу у всех пользователей. Ниже разобраны основные варианты с точными действиями и ограничениями каждого.

Перед началом работы убедитесь, что у вас есть права на изменение конфигурации или на создание расширения, а база развернута в тестовой копии — любые изменения командного интерфейса сначала проверяются не в рабочей базе.

Определите, какой способ добавления команды подходит

В 1С существует несколько механизмов вывода команды на форму, и они не взаимозаменяемы. Глобальная команда отчета открывает отчет без привязки к данным формы. Параметризуемая команда передает в отчет значение (например, ссылку на объект), что удобно для отчетов по конкретному контрагенту или номенклатуре. Программное создание даёт максимальную гибкость, но требует изменения модуля формы.

Если конфигурация типовая и находится на полной поддержке, прямое изменение объектов приведет к снятию с поддержки и сложностям при обновлении. В этом случае используйте расширение конфигурации или подсистему «Дополнительные отчеты и обработки» из библиотеки стандартных подсистем (БСП), если она встроена в вашу конфигурацию.

Маршрут решения

Как выбрать способ

Нужно просто открыть отчет из формы без передачи параметровДобавьте глобальную команду отчета в командный интерфейс формы через панель навигации или командную панель
Отчет должен строиться по текущему объекту (контрагенту, документу)Используйте параметризуемую команду объекта или программную передачу параметров в форму отчета
Конфигурация типовая на поддержкеДелайте доработку через расширение конфигурации или механизм дополнительных отчетов БСП
Нужна нестандартная логика: проверки, несколько отчетов, свои кнопкиСоздавайте команду программно в модуле формы с обработчиком

Добавьте глобальную команду отчета через командный интерфейс

Самый простой случай — отчет с глобальной командой. Откройте в конфигураторе объект «Отчет» и на закладке «Команды» проверьте, что у основной команды отчета снят флаг «Параметризуемая» (или параметр команды не задан). Такая команда доступна в командном интерфейсе любых форм и подсистем.

Чтобы вывести команду на конкретную форму, откройте нужную форму объекта, перейдите на закладку «Командный интерфейс». В списке доступных команд найдите команду вашего отчета и установите флаг видимости. Команду можно разместить в панели навигации формы или перетащить в командную панель формы, чтобы она отображалась как кнопка.

После сохранения конфигурации и обновления базы данных откройте форму в режиме предприятия и проверьте, что команда видна и отчет открывается. Если команда не появилась, проверьте права доступа к отчету у текущей роли пользователя — при отсутствии права «Просмотр» команда скрывается автоматически.

Порядок действий для глобальной команды
  1. 1
    Откройте отчет в конфигураторе, убедитесь, что команда не параметризуемая
  2. 2
    Откройте форму объекта, перейдите на закладку «Командный интерфейс»
  3. 3
    Найдите команду отчета и включите видимость в панели навигации или действий
  4. 4
    Сохраните конфигурацию и обновите базу данных (F7)
  5. 5
    Проверьте в режиме предприятия под пользователем с рабочими правами

Добавьте параметризуемую команду для отчета по текущему объекту

Когда отчет должен строиться по данным текущей строки или объекта — например, карточка взаиморасчетов по выбранному контрагенту — используется параметризуемая команда. В свойствах команды отчета укажите «Тип параметра команды», например «СправочникСсылка.Контрагенты», и включите режим использования параметра.

После этого команда автоматически появится в командном интерфейсе форм тех объектов, чей тип совпадает с типом параметра: в форме элемента справочника «Контрагенты» и в форме списка. В модуле отчета или в настройках СКД параметр команды можно использовать для установки отбора — платформа передает значение параметра в форму отчета автоматически, если в схеме компоновки есть параметр с соответствующим именем и включенным признаком использования.

Учтите ограничение: параметризуемая команда передает только одно значение одного типа. Если отчету нужны несколько параметров или сложная логика отбора, потребуется программный вызов отчета с параметрами.

Создайте команду программно в модуле формы

Программный способ нужен, когда штатных механизмов недостаточно: требуется своя кнопка с произвольным заголовком, проверка условий перед открытием отчета или передача нескольких параметров. Команда создается в обработчике «ПриСозданииНаСервере» формы.

Последовательность такая: добавьте команду формы через коллекцию «Команды», назначьте ей действие — имя процедуры-обработчика, затем добавьте кнопку в элементы формы и свяжите её с командой. В обработчике откройте форму отчета с нужными параметрами через структуру параметров.

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Команда = Команды.Добавить("ОткрытьОтчетПоДокументу");

Команда.Действие = "Подключаемый_ОткрытьОтчет";

Команда.Заголовок = "Отчет по документу";

Кнопка = Элементы.Добавить("КнопкаОтчет", Тип("КнопкаФормы"), Элементы.ГруппаКнопок);

Кнопка.ИмяКоманды = "ОткрытьОтчетПоДокументу";

КонецПроцедуры

&НаКлиенте

Процедура Подключаемый_ОткрытьОтчет(Команда)

ПараметрыФормы = Новый Структура;

ПараметрыФормы.Вставить("Отбор", Новый Структура("Документ", Объект.Ссылка));

ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);

ОткрытьФорму("Отчет.ОтчетПоДокументу.Форма", ПараметрыФормы);

КонецПроцедуры

Обратите внимание: параметр «СформироватьПриОткрытии» работает, если форма отчета стандартная (на базе СКД). Для отчетов с произвольной формой обработку параметров нужно реализовать в модуле формы отчета самостоятельно.

Добавьте команду через расширение конфигурации

Для типовых конфигураций на поддержке расширение — основной безопасный путь. Создайте расширение (Конфигурация → Расширения конфигурации), добавьте в него собственный отчет или заимствуйте существующий, затем заимствуйте форму объекта, на которую нужно вывести команду.

В заимствованной форме добавьте команду формы и кнопку так же, как при обычной разработке: расширения поддерживают добавление собственных команд, элементов формы и обработчиков. Изменение программного кода заимствованной формы ограничено — обработчики событий добавляются через аннотации «&После», «&Перед» или «&Вместо», поэтому кнопку удобнее создавать в обработчике «ПриСозданииНаСервере» с постфиксом расширения.

Если в конфигурацию встроена БСП, рассмотрите альтернативу без программирования: подсистема «Дополнительные отчеты и обработки» позволяет подключить внешний отчет и назначить его размещение в разделах и на формах через пользовательские настройки, вообще не трогая конфигуратор.

Сравнение подходов

Командный интерфейс формы

Быстро и без кода; подходит для изменяемых конфигураций; не подходит для типовых на поддержке

Программное создание в модуле формы

Полная гибкость и свои условия; требует изменения конфигурации и тестирования при обновлениях

Расширение конфигурации

Сохраняет поддержку типовой; есть ограничения на изменение заимствованных форм

Дополнительные отчеты БСП

Без конфигуратора и без снятия с поддержки; доступно только если подсистема встроена в конфигурацию

Проверьте результат и права доступа

После добавления команды проверьте её под учетной записью с правами реального пользователя, а не под администратором. Частая ситуация: команда видна разработчику, но скрыта у менеджера, потому что у его роли нет права «Просмотр» на отчет или на объект, из которого открывается команда.

Проверьте также поведение при незаписанном объекте: если команда передает ссылку текущего документа, а документ еще не записан, в отчет уйдет пустая ссылка. Правильное решение — в обработчике команды проверять «Объект.Ссылка.Пустая()» или «Модифицированность» и предлагать сначала записать объект.

Контрольные точки

Как проверить результат

Видимость команды у обычного пользователя
Норма

Команда отображается и отчет открывается

Тревожный признак

Команды нет — проверьте роли и права на отчет

Передача параметра в отчет
Норма

Отчет формируется с отбором по текущему объекту

Тревожный признак

Отчет пустой или без отбора — проверьте имена параметров в СКД

Новый незаписанный объект
Норма

Выводится предупреждение о необходимости записи

Тревожный признак

Отчет открывается с пустой ссылкой

Обновление типовой конфигурации
Норма

Доработка в расширении, обновление проходит штатно

Тревожный признак

Конфигурация снята с поддержки, изменения конфликтуют

Типичные ошибки и их последствия

Большинство проблем при добавлении команды отчета связаны не с синтаксисом, а с организационными решениями: изменение типовой конфигурации напрямую, неверные имена параметров, забытые права. Ниже — ошибки, которые встречаются чаще всего.

Типичные ошибки
01
Изменение типовой формы напрямую — конфигурация снимается с поддержки, при обновлении доработка теряется или конфликтует
02
Имя параметра в СКД не совпадает с передаваемым — отчет открывается без отбора, пользователь видит лишние данные
03
Команда добавлена, но не проверены права — у пользователей команда не видна, поступают жалобы на «пропавшую кнопку»
04
Нет проверки записанности объекта — в отчет передается пустая ссылка, отчет пустой
05
Кнопка создана программно, но не указано действие команды — при нажатии возникает ошибка «Процедура не обнаружена»

Отдельный риск — производительность: если в обработчике команды отчет формируется на сервере с тяжелым запросом, форма может «подвисать» у пользователя. Для длительных операций используйте фоновое выполнение отчета штатными средствами БСП или формируйте отчет по кнопке в самой форме отчета.

Часто задаваемые вопросы

Почему команда отчета не отображается на форме после добавления?

Наиболее вероятные причины: у роли пользователя нет права «Просмотр» на отчет, команда не включена в командном интерфейсе конкретной формы, либо не выполнено обновление базы данных после изменения конфигурации. Проверьте также, что отчет включен в состав функциональных опций, если они используются.

Можно ли добавить команду отчета на форму списка с передачей текущей строки?

Да. Используйте параметризуемую команду с типом параметра, совпадающим с типом ссылки списка, — платформа автоматически передаст ссылку текущей строки. Либо программно получайте текущую строку через «Элементы.Список.ТекущиеДанные» и передавайте ссылку в параметры формы отчета.

Как добавить команду, не снимая типовую конфигурацию с поддержки?

Два рабочих варианта: расширение конфигурации с заимствованием формы и добавлением собственной команды, либо подсистема «Дополнительные отчеты и обработки» БСП, если она есть в конфигурации — она позволяет подключить внешний отчет и настроить его размещение без изменения кода.

Почему параметр команды не попадает в отбор отчета на СКД?

Проверьте, что в схеме компоновки данных параметр назван так, как ожидает вызов, у параметра включено использование и снят флаг «Ограничение доступности». Также убедитесь, что параметр добавлен в настройки отчета и участвует в отборе, а не только объявлен в схеме.

Как сделать, чтобы отчет формировался сразу при нажатии команды?

При открытии стандартной формы отчета передайте параметр «СформироватьПриОткрытии» со значением «Истина» вместе со структурой отборов. Для отчета с собственной формой реализуйте формирование в обработчике «ПриОткрытии» формы отчета.

Можно ли вывести одну команду отчета сразу на несколько форм?

Да. Глобальная команда отчета доступна в командном интерфейсе любых форм — достаточно включить её видимость в каждой нужной форме. Параметризуемая команда появится автоматически во всех формах объектов подходящего типа, дополнительная настройка не требуется.

Итог

Что важно запомнить

Способ добавления команды отчета выбирается по условиям: глобальная команда — для простого открытия, параметризуемая — для отчета по текущему объекту, программная — для нестандартной логики, расширение или дополнительные отчеты БСП — для типовых конфигураций на поддержке. Всегда проверяйте результат под правами реального пользователя и обрабатывайте случай незаписанного объекта.