Как реализовать печать комплекта документов с внешними печатными формами в 1С:ERP и УТ 11

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

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

Анализ проблемы несовпадения параметров

Рассмотрим стандартную ситуацию. Процедура Печать в модуле менеджера любого типового документа обычно принимает 5 параметров. Пятый параметр — ПараметрыПечати — является ключевым при печати комплекта, так как именно в нем передается признак ДоступнаПечатьПоКомплектно и, что самое важное, АдресКомплектаПечатныхФорм.

В то же время, согласно стандартам БСП, экспортная процедура Печать во внешней печатной форме должна содержать строго 4 параметра:

  1. МассивОбъектов — ссылки на документы;
  2. КоллекцияПечатныхФорм — таблица с результатами формирования макетов;
  3. ОбъектыПечати — список объектов для привязки к табличным документам;
  4. ПараметрыВывода — дополнительные настройки вывода.

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

Настройка команды печати в модуле менеджера

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


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

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

Работа с параметрами печати и временным хранилищем

Проанализируем ситуацию внутри функции формирования комплекта. Когда пользователь настраивает состав документов в интерфейсе, система сохраняет эти настройки во временное хранилище. Адрес этого хранилища передается в структуре ПараметрыПечати под ключом АдресКомплектаПечатныхФорм.

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


Если ТипЗнч(ПараметрыПечати) = Тип("Структура") И ПараметрыПечати.Свойство("АдресКомплектаПечатныхФорм", АдресКомплекта) Тогда
    КомплектПечатныхФорм = ПолучитьИзВременногоХранилища(АдресКомплекта);
Иначе
    // Если адрес не передан, получаем настройки по умолчанию из регистра
    КомплектПечатныхФорм = РегистрыСведений.НастройкиПечатиОбъектов.КомплектПечатныхФорм(
        Метаданные.Документы.ЗаказКлиента.ПолноеИмя, 
        МассивОбъектов, 
        Неопределено);
КонецЕсли;

Здесь КомплектПечатныхФорм — это структура или таблица, содержащая перечень выбранных макетов, количество копий и порядок печати. Без этих данных процедура формирования комплекта не поймет, какие именно формы (включая внешние) нужно выводить на экран.

Реализация процедуры Печать для поддержки комплекта

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

Рассмотрим пример реализации в процедуре Печать модуля менеджера:


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

Этот код позволяет «пробросить» ПараметрыПечати вглубь механизмов БСП. Метод СформироватьКомплектВнешнихПечатныхФорм регистра сведений НастройкиПечатиОбъектов отвечает за то, чтобы в итоговый табличный документ попали те формы, которые были подключены как внешние обработки.

Рекомендации по использованию в ERP 2.5

В последних версиях 1С:ERP (начиная с 2.5.6 и выше) механизм работы с комплектами стал еще более тесно завязан на регистр НастройкиПечатиОбъектов. Разберем важные моменты:

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

← На главную