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

На печать выводилась, а в комплект нет.

Дело оказалось в том, что я вставлял в нижнюю часть таблицы строки между итогом таблицы и печатью:

	ИскОбласть = ТабДок.НайтиТекст("Всего наименований");
	Если ИскОбласть = Неопределено Тогда
		Сообщить("Не найдена область с текстом ""Всего наименований""");
		Возврат;
	КонецЕсли;  
	ПозицияВставки = ИскОбласть.Верх + 1; 
	
	ИсходнаяОбласть = Макет.Область(1, 1, Макет.ВысотаТаблицы, Макет.ШиринаТаблицы);
	ОбластьПриемник = ТабДок.Область(ПозицияВставки, 1, ПозицияВставки + Макет.ВысотаТаблицы - 1, ТабДок.ШиринаТаблицы);
	ТабДок.ВставитьОбласть(ИсходнаяОбласть, ОбластьПриемник, ТипСмещенияТабличногоДокумента.ПоВертикали);
	
	Для Стр = 1 По Макет.ВысотаТаблицы Цикл
		РезСтр = ОбластьПриемник.Верх + Стр - 1;
		ТабДок.Область(РезСтр, 1, РезСтр, ТабДок.ШиринаТаблицы).Объединить();
	КонецЦикла;

При этом размер области Документ_1 не менялся. Соответственно, печать обрезалась.

Соответственно, процедура печати стала выглядеть так:

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

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

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

	КоллекцияПечатныхФорм[0].ТабличныйДокумент = ПодготовленныйТабДок;
	
КонецПроцедуры

Код по изменению размера области в конце процедуры, нужно сначала присвоить пустое имя, а потом еще раз присвоить имя для области.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *