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

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

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

Разберем механизмы взаимодействия с БСП

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

Шаг 1. Регистрация в модуле УправлениеПечатьюПереопределяемый

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

Рассмотрим пример кода, который необходимо добавить:


Процедура ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) Экспорт
    СписокОбъектов.Добавить(Метаданные.Документы.ИмяВашегоНовогоДокумента);
КонецПроцедуры

Этот шаг является критически важным, так как именно на основе этого списка БСП строит дерево метаданных в форме выбора объектов для дополнительных обработок.

Шаг 2. Настройка модуля менеджера документа

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


Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
    // Здесь могут быть описаны внутренние печатные формы,
    // но для регистрации внешних процедура может оставаться пустой.
КонецПроцедуры

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

Шаг 3. Регистрация в подсистеме «Подключаемые команды»

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

Добавим наш документ следующим образом:


Процедура ПриОпределенииОбъектовСПодключаемымиКомандами(СписокОбъектов) Экспорт
    СписокОбъектов.Добавить(Метаданные.Документы.ИмяВашегоНовогоДокумента);
КонецПроцедуры

Шаг 4. Обновление идентификаторов объектов метаданных

Часто бывает так, что программный код написан верно, но документ все равно не появляется в списке. Это происходит из-за того, что справочник ИдентификаторыОбъектовМетаданных не актуализирован. Рассмотрим способы решения этой проблемы:

  1. Запуск с ключом обновления: Запустим базу 1С:Предприятие с дополнительным параметром командной строки /C ЗапуститьОбновлениеИнформационнойБазы. Обратите внимание, что буква "C" должна быть латинской. Это инициирует процедуры обновления БСП, включая перезаполнение идентификаторов.
  2. Программное обновление: Если запуск с ключом не помог, выполним следующий код в консоли кода или во внешней обработке:
    
    Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(Истина, Ложь, Ложь);
    

Шаг 5. Проверка типа данных в справочнике дополнительных обработок

Проанализируем структуру метаданных самой конфигурации. Откроем в конфигураторе справочник ДополнительныеОтчетыИОбработки. Найдем табличную часть Назначение и реквизит ОбъектНазначения. Проверим его тип.

Важный момент: если тип этого реквизита не является «Любая ссылка», а представляет собой «Описатель типов», необходимо убедиться, что ваш новый документ включен в этот составной тип данных. Если его там нет, добавим галочку напротив нашего документа вручную.

Шаг 6. Настройка формы документа

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

  1. В обработчике ПриСозданииНаСервере добавим вызов: ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтаФорма);
  2. В обработчике ПриЧтенииНаСервере добавим: ПодключаемыеКоманды.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
  3. Создадим на форме команду, которая будет отвечать за выполнение команд печати, и свяжем её с обработчиком:
    
    &НаКлиенте
    Процедура Подключаемый_ВыполнитьКоманду(Команда)
        ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтаФорма, Команда, Объект);
    КонецПроцедуры
    

Подведем итоги

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

← На главную