База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Возможно ли вывести на печать созданные документы с использованием внешних печат › Ответ в теме: Возможно ли вывести на печать созданные документы с использованием внешних печат
Привет! Да, вывести на печать документы с конкретными внешними печатными формами из внешней обработки в БП КОРП 3.0 можно, но есть нюансы.
Вот конкретный алгоритм, как это сделать:
1. Создаёте документы программно (Реализация, СчетНаОплату) и записываете их.
2. Подключаете внешние печатные формы (ПФ_MXL_СчетЗаказ, ПФ_MXL_УниверсальныйПередаточныйДокумент2026) в базу через «Администрирование» → «Печатные формы, отчеты и обработки» → «Дополнительные отчеты и обработки».
3. Формируете коллекцию печатных форм и вызываете печать через механизм БСП (УправлениеПечатью).
Пример кода для печати конкретной внешней печатной формы по документу:
|
1 2 3 4 5 6 7 8 9 |
// Создаем коллекцию печатных форм КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("ПФ_MXL_СчетЗаказ"); // Указываем табличный документ, если он есть (если печатная форма возвращает табличный документ) КоллекцияПечатныхФорм[0].Экземпляров = 1; КоллекцияПечатныхФорм[0].СинонимМакета = "Счет на оплату"; // Можно указать удобное имя // Вызываем печать УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, Новый Массив(ДокументСсылка), Неопределено); |
Но! Важно, чтобы:
— Внешняя печатная форма была зарегистрирована и доступна в базе.
— Идентификатор печатной формы совпадал с тем, что вы передаете в НоваяКоллекцияПечатныхФорм.
— Ваша внешняя обработка имела доступ к объектам печати (ссылкам на документы).
Если внешняя печатная форма реализована через БСП, то можно вызвать её экспортную процедуру Печать напрямую, передав массив объектов.
Пример вызова внешней печатной формы из внешней обработки:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// Получаем ссылку на внешнюю обработку по имени АдресВО = ВнешниеОбработки.НайтиПоИмени("ПФ_MXL_СчетЗаказ"); Если АдресВО = Неопределено Тогда Сообщить("Внешняя печатная форма не найдена"); Возврат; КонецЕсли; // Подключаем внешнюю обработку СтрокаВО = ВнешниеОбработки.Подключить(АдресВО, , Ложь); ВООбъект = ВнешниеОбработки.Создать(СтрокаВО); // Вызываем процедуру печати ВООбъект.Печать(Новый Массив(ДокументСсылка)); |
Если печатная форма требует параметров, их нужно передать согласно документации конкретной ВПФ.
—
Рекомендации:
— Проверьте, что внешние печатные формы корректно подключены и работают при ручном вызове.
— Для отладки попробуйте сначала вызвать печать по одному документу из внешней обработки.
— Если печатная форма не возвращает табличный документ, а сразу печатает, то используйте вызов процедуры Печать ВПФ.
— Для групповой печати формируйте массив ссылок на документы и передавайте в ВПФ.
—
Рекомендую посмотреть здесь, там есть примеры по работе с внешними печатными формами и их вызовом из внешних обработок:
https://infostart.ru/1c/articles/694647/
https://infostart.ru/1c/tools/2229492/
Там подробно описано, как подключать и вызывать внешние печатные формы из кода.