Как подключить отчет по движениям и меню Отчеты для нового документа в расширении (БСП)?

Программист 1С v8.3 (Управляемые формы) 1С:Управление нашей фирмой Управленческий учет IT и автоматизация бизнеса
← На главную

При разработке расширений для современных конфигураций 1С (таких как УНФ, ERP, КА, Бухгалтерия), основанных на Библиотеке Стандартных Подсистем (БСП), часто возникает задача создания новых документов. После создания метаданных и формы документа разработчики сталкиваются с ситуацией, когда стандартное меню "Отчеты" или команда "Отчет по движениям" не появляются в командной панели, даже если в модуль формы был добавлен необходимый программный код подсистемы подключаемых команд.

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

Суть проблемы: код есть, кнопок нет

Рассмотрим типичную ситуацию. Мы добавили в расширение новый документ (например, МаршрутныйЛист). Чтобы в документе появились стандартные команды (печати, отчетов, заполнения), мы добросовестно перенесли код из типовых документов в модуль формы нашего нового объекта.

Обычно этот код выглядит следующим образом:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
    ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры

// ... и другие процедуры "Подключаемый_..."

Мы обновляем конфигурацию, запускаем обработку Обновление вспомогательных данных, открываем документ, но меню "Отчеты" отсутствует. Почему так происходит? Дело в том, что механизм БСП работает в два этапа:

  1. Регистрация: Система должна "знать", что к этому типу документа вообще применимы какие-либо варианты отчетов.
  2. Отрисовка: Код в форме документа запрашивает список зарегистрированных команд и рисует их на форме.

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

Шаг 1. Регистрация документа в подсистеме Вариантов Отчетов

В БСП за список объектов, у которых есть команды отчетов, отвечает общий модуль ВариантыОтчетовПереопределяемый. Нам необходимо внедриться в процедуру ОпределитьОбъектыСКомандамиОтчетов.

Поскольку мы работаем в расширении, мы не можем просто изменить типовой модуль. Нам нужно заимствовать его и использовать аннотацию &После (или &ИзменениеИКонтроль, если требуется более сложная логика, но для простого добавления &После предпочтительнее и безопаснее).

Давайте посмотрим, как это сделать:

  1. Найдите в дереве конфигурации общий модуль ВариантыОтчетовПереопределяемый.
  2. Добавьте его в расширение (контекстное меню -> Добавить в расширение).
  3. В модуле расширения создайте следующую процедуру:

&После("ОпределитьОбъектыСКомандамиОтчетов")
Процедура Расш1_ОпределитьОбъектыСКомандамиОтчетов(Объекты)
    
    // Регистрируем наш новый документ
    Объекты.Добавить(Метаданные.Документы.STR_МаршрутныеЛисты);
    
КонецПроцедуры

Здесь STR_МаршрутныеЛисты — это имя вашего нового документа, созданного в расширении. Этим кодом мы сообщаем системе: "Для этого документа нужно собирать и показывать панель отчетов".

Шаг 2. Нюансы кнопки "Отчет по движениям"

Часто разработчики ищут не просто выпадающее меню "Отчеты", а конкретную кнопку "Отчет по движениям" (часто в виде пиктограммы дебета/кредита в командной панели), которая открывает отчет о движениях документа по регистрам.

Здесь ситуация сложнее. В типовых конфигурациях (УНФ, ERP) эта кнопка может быть реализована двумя способами:

  1. Как вариант отчета БСП: В этом случае после выполнения Шага 1 в меню "Отчеты" появится пункт "Движения документа" (если в системе настроен универсальный отчет по движениям).
  2. Как Общая Команда: Это отдельный объект метаданных ОбщаяКоманда (например, ПоказатьДвиженияДокумента), который включен в состав командной панели формы типовых документов.

Важное ограничение расширений: Если в вашей конфигурации используется подход через ОбщуюКоманду, вы столкнетесь с проблемой платформы. В расширении нельзя изменить тип параметра команды, если эта команда заимствована из основной конфигурации. То есть вы не можете просто "галочкой" добавить свой новый документ в список типов, для которых работает типовая кнопка "Движения".

Решение для отдельной кнопки:

Если вам нужна именно отдельная кнопка, и типовая реализована через общую команду, вам придется создать свою собственную команду в расширении.

  1. Создайте в расширении новую команду, например Расш1_ОтчетПоДвижениям.
  2. Установите тип параметра команды — ДокументСсылка.STR_МаршрутныеЛисты.
  3. В модуле команды пропишите код вызова отчета. Обычно можно подсмотреть код в типовой общей команде и скопировать его. Чаще всего это вызов открытия формы отчета по движениям с отбором по ссылке.
  4. Вынесите эту команду на форму вашего документа в командную панель.

Пример кода для команды (упрощенно):


&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    
    ПараметрыОткрытия = Новый Структура("Документ", ПараметрКоманды);
    ОткрытьФорму("Отчет.ДвиженияДокумента.Форма", ПараметрыОткрытия, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка);
    
КонецПроцедуры

Шаг 3. Обновление вспомогательных данных

После того как мы добавили код регистрации в ВариантыОтчетовПереопределяемый, изменения не появятся мгновенно. БСП активно кэширует настройки отчетов и команд.

Чтобы система увидела изменения, необходимо выполнить следующие действия:

  1. Примените изменения в конфигураторе (F7).
  2. Запустите режим "1С:Предприятие".
  3. Откройте "Функции для технического специалиста" (если их нет в меню, включите в Настройки -> Параметры -> Режим технического специалиста).
  4. Найдите обработку Обновление вспомогательных данных (или запустите метод Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника() через внешнюю обработку, но штатная обработка надежнее).
  5. В некоторых случаях требуется перезапуск сеанса пользователя.

Шаг 4. Проверка прав доступа

Если даже после всех действий отчеты не появились, проверьте роли.

Резюме

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

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

← На главную