Где в 1С:Комплексная автоматизация 2 указать новый документ для использования внешних печатных форм?

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

При разработке нового документа в конфигурациях на платформе «1С:Предприятие 8.3», использующих Библиотеку стандартных подсистем (включая «1С:Комплексная автоматизация 2» и «1С:ERP»), разработчики часто сталкиваются с проблемой: внешняя печатная форма (ВПФ) не отображается в списке доступных команд печати или не может быть привязана к документу в справочнике ДополнительныеОтчетыИОбработки. В старых редакциях конфигураций за это отвечал состав типа общей команды, однако в современных версиях механизмы печати работают иначе. Разберем по шагам, где именно регистрируется документ и какие сопутствующие настройки БСП требуются для корректной работы механизма.

Причина проблемы: переход к подсистеме печати БСП

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

Шаг 1. Регистрация документа в общем модуле

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

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


Процедура ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) Экспорт

    // Стандартные вызовы подсистемы...
    СписокОбъектов.Добавить(Документы.НашНовыйДокумент);

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

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


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

Шаг 2. Требования к модулю менеджера документа

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

Даже если у документа нет собственных встроенных макетов, откроем модуль менеджера документа и обязательно объявим экспортную процедуру:


Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
    // Если встроенных команд нет, процедуру оставляем пустой.
    // Она необходима для соблюдения контракта БСП.
КонецПроцедуры

Шаг 3. Внедрение команд печати в форму документа

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

  1. В командной панели формы документа создадим группу с видом Подменю и присвоим ей имя ПодменюПечать.
  2. В модуле формы в процедуре ПриСозданииНаСервере вызовем инициализацию подключаемых команд печати:

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

Также проверим наличие стандартных обработчиков нажатия кнопок печати на клиенте (например, вызов УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати), если форма создается полностью с нуля.

Шаг 4. Настройка модуля внешней печатной формы

Посмотрим на требования к самой подключаемой внешней обработке. В модуле объекта ВПФ должна присутствовать обязательная функция СведенияОВнешнейОбработке(). Проверим, как указано назначение:


Функция СведенияОВнешнейОбработке() Экспорт

    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
    ПараметрыРегистрации.Версия = "1.0";
    ПараметрыРегистрации.БезопасныйРежим = Истина;
    
    // Указываем точное имя метаданных документа
    ПараметрыРегистрации.Назначение.Добавить("Документ.НашНовыйДокумент");
    
    // Настройка команд печати...
    Команда = ПараметрыРегистрации.Команды.Добавить();
    Команда.Представление = НСтр("ru = 'Печатная форма'");
    Команда.Идентификатор = "ПечатьФормы";
    Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
    Команда.ПоказыватьОповещение = Истина;
    
    Возврат ПараметрыРегистрации;

КонецФункции

Шаг 5. Обновление служебных идентификаторов БСП

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

Для корректной синхронизации запустим сеанс «1С:Предприятие» от имени администратора с параметром командной строки:

/C ЗапуститьОбновлениеИнформационнойБазы

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

← На главную