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