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