Внешняя печатная форма с несколькими макетами для конфигураций на БСП (1С:Предприятие 8.2/8.3)
Один файл внешней печатной формы и несколько команд печати на конфигурациях с БСП (УТ 11, БП 3.х и т.д.)
- Описание
- Подробнее
Описание
Когда несколько печатных форм используют одни и те же данные, но отличаются макетом, самое простое решение — создать для каждого макета свою внешнюю печатную форму.
Но чтобы не плодить сущности, логично было бы на основе одного и того же запроса выдавать разные табличные документы.
Живой пример: для отправки товара на комиссию в крупные интернет-магазины требуется сопроводить товар файлом-спецификацией. В спецификации указан артикул, наименование, цена товара, баркод и куча дополнительных реквизитов. У каждого магазина свой формат.
Сначала в функцию СведенияОВнешнейОбработке добавляем наши команды:
ДобавитьКоманду(ТаблицаКоманд, "Спецификация Стильвер", "СпецификацияСтильвер", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
ДобавитьКоманду(ТаблицаКоманд, "Спецификация Вайлдберриз", "СпецификацияВайлдберриз", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
Потом меняем процедуру Печать:
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СпецификацияСтильвер") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"СпецификацияСтильвер",
"Спецификация Стильвер",
ПечатьФормы(МассивОбъектов, "ПФ_MXL_СпецификацияСтильвер"));
ИначеЕсли УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СпецификацияВайлдберриз") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"СпецификацияВайлдберриз",
"Спецификация Вайлдберриз",
ПечатьФормы(МассивОбъектов, "ПФ_MXL_СпецификацияВайлдберриз"));
КонецЕсли;
КонецПроцедурыВ функцию Печатьформы добавляем входной параметр ИмяМакета, и в зависимости от его значения переписываем формирование табличного документа.
Функция ПечатьФормы(МассивОбъектов, ИмяМакета) Экспорт
ТабличныйДокумент = новый ТабличныйДокумент;
Макет = ПолучитьМакет(ИмяМакета);
....
КонецФункции
