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