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