Как программно вызвать печать внешней печатной формы из внешней обработки в ЗУП 3?

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

При разработке собственных инструментов в конфигурации ЗУП 3 часто возникает задача массовой печати различных документов (договоров, дополнительных соглашений, согласий). Простого вызова метода ТабДок.Показать() недостаточно, если мы хотим использовать типовой механизм БСП, который обеспечивает корректное отображение, возможности сохранения и интеграцию с сервисом 1С:Кабинет сотрудника.

Основные принципы работы с механизмом печати БСП

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

Рассмотрим, как правильно подготовить параметры и открыть форму печати программно.

Реализация вызова формы печати из внешней обработки

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

  1. Создаем коллекцию с помощью УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм.
  2. Формируем описание печатной формы, включая имя макета и сам табличный документ.
  3. Передаем сформированную структуру в параметры открытия формы ПечатьДокументов.

Посмотрим на пример кода, который реализует эту задачу:


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

Важные рекомендации по работе с БСП

При проектировании системы массовой печати важно учитывать следующие нюансы:

Использование предложенного метода позволяет соблюсти стандарты разработки фирмы «1С» и обеспечивает максимальную совместимость вашего решения с будущими обновлениями конфигурации ЗУП 3.

← На главную