При разработке новых модулей и нетиповых разделов в конфигурациях 1С на базе Библиотеки стандартных подсистем (БСП) разработчики часто сталкиваются с ситуацией: новая подсистема создана, но при попытке зарегистрировать внешнюю обработку или отчет эта подсистема не появляется в окне выбора размещения. В этой статье мы подробно разберем, почему возникает данная проблема, и пошагово проанализируем процесс подключения нетипового раздела к штатному механизму БСП.
Разберем, как работает механизм вывода разделов. Подсистемы конфигурации не попадают в список выбора дополнительных отчетов и обработок автоматически. Библиотека стандартных подсистем формирует этот перечень программно на основании состава метаданных и специализированных переопределяемых процедур. Если нетиповая подсистема не была зарегистрирована в коде БСП, платформа 1С просто не «знает» о том, что в данный раздел командного интерфейса разрешено размещать дополнительные обработки или отчеты.
Рассмотрим основной метод решения задачи. Чтобы наша подсистема появилась в диалоговом окне размещения дополнительных обработок, необходимо внести изменения в специализированный общий модуль.
ДополнительныеОтчетыИОбработкиПереопределяемый.ОпределитьРазделыСДополнительнымиОбработками. Она отвечает за формирование списка разделов для внешних обработок.Разделы метаданные нашей нетиповой подсистемы.ОпределитьРазделыСДополнительнымиОтчетами.Посмотрим на пример кода в общем модуле ДополнительныеОтчетыИОбработкиПереопределяемый:
Процедура ОпределитьРазделыСДополнительнымиОбработками(Разделы) Экспорт
// Добавляем нетиповую подсистему в список доступных разделов
Разделы.Добавить(Метаданные.Подсистемы.МояНетиповаяПодсистема);
КонецПроцедуры
Процедура ОпределитьРазделыСДополнительнымиОтчетами(Разделы) Экспорт
// Добавляем подсистему для формирования отчетов
Разделы.Добавить(Метаданные.Подсистемы.МояНетиповаяПодсистема);
КонецПроцедуры
Программного добавления подсистемы в модуль недостаточно для полного функционирования. Для того чтобы в самом интерфейсе подсистемы появились пункты меню «Дополнительные обработки» или «Дополнительные отчеты», необходимо создать соответствующие общие команды и привязать их к командному интерфейсу.
ДополнительныеОбработкиМояПодсистема).Панель действий.Сервис;Панель отчетов.Отчеты (или соответствующую группу отчетов раздела).ИспользоватьДополнительныеОтчетыИОбработки.Проанализируем программный код модуля созданной команды. В процедуре ОбработкаКоманды необходимо вызвать штатный клиентский метод БСП:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("РазделИмя", "МояНетиповаяПодсистема");
ДополнительныеОтчетыИОбработкиКлиент.ОткрытьФормуКомандДополнительныхОтчетовИОбработок(
ПараметрыОткрытия,
ПараметрыВыполненияКоманды
);
КонецПроцедуры
Разберем финальные настройки, без которых команды могут быть недоступны конечным пользователям:
ДополнительныеОтчетыИОбработки, а также на использование созданных общих команд и самой нетиповой подсистемы.Если типовая конфигурация находится на полной поддержке и изменять основной состав метаданных нежелательно, всю процедуру подключения можно выполнить через расширение конфигурации.
ДополнительныеОтчетыИОбработкиПереопределяемый.&После к соответствующим процедурам определения разделов.Рассмотрим пример кода в модуле расширения:
&После("ОпределитьРазделыСДополнительнымиОбработками")
Процедура Расш1_ОпределитьРазделыСДополнительнымиОбработками(Разделы)
Разделы.Добавить(Метаданные.Подсистемы.МояНетиповаяПодсистема);
КонецПроцедуры
Важно учитывать ограничение платформы и БСП: механизм размещения глобальных дополнительных отчетов и обработок спроектирован для работы с подсистемами первого уровня (разделами командного интерфейса). Подчиненные (вложенные) подсистемы в список выбора для глобального размещения не выводятся.
Если же ваша обработка является назначаемой (например, заполнение формы, печатная форма или создание связанных объектов), привязывать её к разделам не требуется. В этом случае достаточно добавить целевые объекты (справочники или документы) в определяемый тип ОбъектСДополнительнымиКомандами, после чего команда обработки станет доступна непосредственно в формах этих объектов.