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