Правильная пост-обработка макетов нескольких документов. БСП

Я уже делился как заниматься пост-обработкой макетов. Но был один недостаток — такая обработка корректно работает только при печати одного документа.

Немного доработал в модуле менеджера обработки ПечатьСчетаНаОплату и теперь можно обрабатывать документы правильно и в случае массовой печати:


&После("СформироватьПечатнуюФорму")
Процедура дор_СформироватьПечатнуюФорму(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ИмяМакета, СинонимМакета, ОбъектыПечати, ПараметрыВывода)
	Если Врег(ИмяМакета) = Врег("СчетЗаказ") Тогда
		Попытка
			Инд = 0;
			Для Каждого Ссылка ИЗ МассивОбъектов Цикл     
				Инд = Инд + 1;
				ТабличныйДокумент = КоллекцияПечатныхФорм[0].ТабличныйДокумент;
				Область = ТабличныйДокумент.Области["Документ_" + XMLСтрока(Инд)];          
				Маркер = "Счет";
				Замена = "Счит";
				ИскОбласть = ТабличныйДокумент.НайтиТекст(Маркер, , Область);
				Если ИскОбласть <> Неопределено Тогда
					ИскОбласть.Текст = СтрЗаменить(ИскОбласть.Текст, Маркер, Замена);
				КонецЕсли;
			КонецЦикла;                                   
		Исключение
		КонецПопытки;
	КонецЕсли;
КонецПроцедуры

Как именуются области макета, подсмотрел в функции УправлениеПечатью.ЗадатьОбластьПечатиДокумента.

Кстати, там можно увидеть, что писатели кода 1С не умеют использовать XMLСтрока:

Результат получается таким:

Почему использую пост-обработку? Обычно процедуры печати монолитны и в них сложно вмешиваться расширением, если только использовать неуклюжее «Изменение и контроль». Мой способ проще и надежнее.

Среда: Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.156.30) Объем: 1 час

fixin

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

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

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

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