Каталог решений - Как вывести табличный документ на печать в управляемой форме внешней обработки

Как вывести табличный документ на печать в управляемой форме внешней обработки

Как вывести табличный документ на печать в управляемой форме внешней обработки

В наличии

Во внешней обработке формировался табличный документ, и его нужно было вывести на печать красиво.

Категория:

Описание

Добрый день!

Столкнулся с таким вопросом — у меня есть внешняя обработка по загрузке сотрудников из Excel-файла. (кстати, пользовался новым методом 8.3.6, который стал доступен с 8.3.6.1977 — ТабличныйДокумент.Прочитать, за что спасибо публикации //sale.itcity.ru/public/341855/) и весь код был в основном расположен в модуле управляемой формы. А мне нужно было из нее вывести табличный документ с ошибками загрузки на печать, причем метод ТабличныйДокумент.Показать мне не подходил, так как в нем не было никаких кнопок (печать, сохранить, отправить), которые добавляют удобства работы.

 

Во-первых, что делать с макетом? В обычных формах было все просто: Макет = ПолучитьМакет(«ИмяМакета»), в управляемом интерфейсе такого не получится. Подобная конструкция в модуле управляемой формы неизменно вызывает ошибку, в каком бы контексте она не использовалась. Поэтому мне пришлось добавить к обработке реквизит, с типом произвольный и в модуле объекта обработки,  после всех стандартных процедур типа СведенияОВнешнейОбработке() добавить строчку:

//выполняется до открытия формы
РеквизитМакет = ЭтотОбъект.ПолучитьМакет("Макет");

Далее в модуле формы уже обращался к нему стандартно:

//возвращает табличный документ с ошибками
функция ПечатьОшибокСервер(резПроверки) экспорт
ТД=Новый ТабличныйДокумент;	
макет = Объект.РеквизитМакет;
областьМ = макет.ПолучитьОбласть("Область");
областьМ.Параметры.текстошибки =  СокрЛП(резПроверки);
тд.Вывести(областьМ);
конецфункции

А вот затем встал вопрос, как же красиво вывести получившийся ТабличныйДокумент на печать. Стандартные функции для внешних обработок типа УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,    «Макет», «Макет»,    ТабДок);  не подходят, но после изучения методом тыка была найдена подходящая в модуле УправлениеПечатьюКлиент (этот модуль есть в ЗУП 3.0, на котором я проверял обработку):

&НаКлиенте
Процедура печатьОшибок(Команда) 
резПроверки = ПроверкаНаСервере();

ТабДокОшибок = ПечатьОшибокСервер("ошибки");	
//массив
коллекция = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("Макет");
//структура в массиве
структураКоллекции = коллекция .получить(0);
структураКоллекции .ТабличныйДокумент =ТабДокОшибок ;
УправлениеПечатьюКлиент.ПечатьДокументов(коллекция,,ЭтаФорма);
	//не подходит - ТабДокОшибок.показать("Ошибки");
	
КонецПроцедуры 

Весь секрет оказался в том, что в полученную коллекцию надо добавить наш табличный документ в строке структураКоллекции .ТабличныйДокумент =ТабДокОшибок ;  и после этого у пользователя появляется красивая печатная форма:

has been added to your cart:
Оформление заказа