Множественная печать из табличной части

1. HaIIpuKoJIe 14.12.19 15:39 Сейчас в теме
Добрый день. Подскажите пожалуйста как сделать печать нескольких документов из одной Тч. На внешней обработке есть Тч в которой есть пустые строки, нужно вызвать печать несколько раз, то есть печатаем строки пока не дойдем до пустой строки. Потом печатаем следующие строки пока не дойдем до следующей пустой строки.
Сейчас печать реализована так:
&НаКлиенте
Процедура Печать(Команда)  
	
	ТабДокТовары = ВыполнитьКомандуНаСервере();    
	
	Коллекция = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("Макет");
	
	СтруктураКоллекции = Коллекция.Получить(0);
	СтруктураКоллекции.ТабличныйДокумент = ТабДокТовары ;
	УправлениеПечатьюКлиент.ПечатьДокументов(Коллекция,,ЭтаФорма);
	
КонецПроцедуры


&НаСервере
Функция  ВыполнитьКомандуНаСервере()
	
	ТабДок = Новый ТабличныйДокумент;
	//СчетКт = ПланыСчетов.Хозрасчетный.НДС;
	
	Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
	ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
	ОбластьШапка.Параметры.ПредставлениеПолучателя = Объект.Контрагент.НаименованиеПолное;
	ОбластьШапка.Параметры.ДатаДокумента = (Формат(Объект.ДатаОтгрузки, "ДЛФ=Д"));;
	
	
	
	ТабДок.Вывести(ОбластьШапка);
	
	ОбластьЗаказыШапка = Макет.ПолучитьОбласть("ЗаказыШапка");
	ТабДок.Вывести(ОбластьЗаказыШапка);
	
	ОбластьЗаказыТЧ = Макет.ПолучитьОбласть("ЗаказыТЧ");
	Для Каждого ТекущаяСтрока Из Объект.Заказы Цикл
		ОбластьЗаказыТЧ.Параметры.НомерЗаказа = ТекущаяСтрока.НомерСтроки;
		ОбластьЗаказыТЧ.Параметры.СсылкаЗаказа = ТекущаяСтрока.Заказ;			
		ТабДок.Вывести(ОбластьЗаказыТЧ);
	КонецЦикла;
	
	ОбластьПромежутокЗаказ = Макет.ПолучитьОбласть("ПромежутокЗаказ");
	ТабДок.Вывести(ОбластьПромежутокЗаказ);
	
	ОбластьШапкаТЧ = Макет.ПолучитьОбласть("ШапкаТЧ");
	ТабДок.Вывести(ОбластьШапкаТЧ);
	
	ОбластьДанные = Макет.ПолучитьОбласть("СтрокаТЧ");
	Для Каждого ТекущаяСтрока Из Объект.Товары Цикл
		ОбластьДанные.Параметры.Номенклатура=ТекущаяСтрока.Номенклатура;
		ОбластьДанные.Параметры.Характеристика=ТекущаяСтрока.Характеристика;
		ОбластьДанные.Параметры.Количество=ТекущаяСтрока.Количество;
		ОбластьДанные.Параметры.Номер=ТекущаяСтрока.НомерСтроки;
		
		
		ТабДок.Вывести(ОбластьДанные);
	КонецЦикла;
	
	
	//ТабДок.ЗакончитьАвтогруппировкуСтрок();
	ТабДок.ТолькоПросмотр = Истина;
	ТабДок.АвтоМасштаб = Истина;
	
	Возврат ТабДок
	
КонецФункции
Показать
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. AlexandrSmith 69 14.12.19 17:47 Сейчас в теме
(1) Если ваш код именно такой, то необходимо:
1) Разбить ТабДокТовары в соответствии с вашей необходимостью на массив мТабДокТовары[N], по вашим требованиям к документу.
2) Подставить СтруктураКоллекции.ТабличныйДокумент = мТабДокТовары[N]; в цикле
3) Разместить функцию печати УправлениеПечатьюКлиент.ПечатьДокументов(Коллекция,,ЭтаФорма) в этом же цикле, если это функция печати у вас.

Если же каждая из переменных и процедур выполняет, какие-то эксклюзивные дополнительные функции, то тогда алгоритм (выше) возможно не для вас.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот