Как добавить нетиповую подсистему в список выбора дополнительных отчетов и обработок 1С?

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

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

Выясним причину поведения БСП

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

Шаг 1. Программная регистрация подсистемы в БСП

Рассмотрим основной метод решения задачи. Чтобы наша подсистема появилась в диалоговом окне размещения дополнительных обработок, необходимо внести изменения в специализированный общий модуль.

  1. Откроем конфигуратор и найдем общий модуль ДополнительныеОтчетыИОбработкиПереопределяемый.
  2. Найдем в модуле экспортную процедуру ОпределитьРазделыСДополнительнымиОбработками. Она отвечает за формирование списка разделов для внешних обработок.
  3. Добавим в массив Разделы метаданные нашей нетиповой подсистемы.
  4. Для подключения внешних отчетов аналогичную операцию выполним в процедуре ОпределитьРазделыСДополнительнымиОтчетами.

Посмотрим на пример кода в общем модуле ДополнительныеОтчетыИОбработкиПереопределяемый:


Процедура ОпределитьРазделыСДополнительнымиОбработками(Разделы) Экспорт
    
    // Добавляем нетиповую подсистему в список доступных разделов
    Разделы.Добавить(Метаданные.Подсистемы.МояНетиповаяПодсистема);

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

Процедура ОпределитьРазделыСДополнительнымиОтчетами(Разделы) Экспорт
    
    // Добавляем подсистему для формирования отчетов
    Разделы.Добавить(Метаданные.Подсистемы.МояНетиповаяПодсистема);

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

Шаг 2. Создание общих команд вызова в подсистеме

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

  1. В дереве метаданных перейдем в ветку Общие -> Команды и создадим новую команду (например, ДополнительныеОбработкиМояПодсистема).
  2. В свойствах команды установим параметр Группа:
    • для внешних обработок выберем группу Панель действий.Сервис;
    • для внешних отчетов выберем группу Панель отчетов.Отчеты (или соответствующую группу отчетов раздела).
  3. Включим созданную команду в состав нашей нетиповой подсистемы.
  4. Включим созданную команду в состав функциональной опции ИспользоватьДополнительныеОтчетыИОбработки.

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


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

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

Шаг 3. Настройка прав доступа и командного интерфейса

Разберем финальные настройки, без которых команды могут быть недоступны конечным пользователям:

  1. Права доступа: Убедимся, что ролям пользователей предоставлены права на чтение справочника ДополнительныеОтчетыИОбработки, а также на использование созданных общих команд и самой нетиповой подсистемы.
  2. Командный интерфейс: Откроем настройки командного интерфейса нетиповой подсистемы и проверим флаги видимости для созданных команд в разделах «Сервис» и «Отчеты».

Альтернативный вариант: Использование расширения конфигурации

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

  1. Добавим в расширение модуль ДополнительныеОтчетыИОбработкиПереопределяемый.
  2. Применим аннотацию &После к соответствующим процедурам определения разделов.
  3. Добавим нетиповую подсистему и общие команды в состав расширения.

Рассмотрим пример кода в модуле расширения:


&После("ОпределитьРазделыСДополнительнымиОбработками")
Процедура Расш1_ОпределитьРазделыСДополнительнымиОбработками(Разделы)
    
    Разделы.Добавить(Метаданные.Подсистемы.МояНетиповаяПодсистема);

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

Ограничения БСП и архитектурные особенности

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

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

← На главную