При разработке и внедрении внешних печатных форм (ВПФ) для конфигурации 1С:Управление нашей фирмой и других решений на базе Библиотеки стандартных подсистем (БСП) разработчики нередко сталкиваются с двумя вопросами: почему программа выводит старый или типовой макет вместо добавленного во внешнюю обработку и как полноценно проверить алгоритм формирования печатной формы с помощью отладчика.
Разберем детально обе проблемы, выясним логику работы подсистемы печати БСП и рассмотрим рабочие способы отладки внешних печатных форм на управляемых формах.
В типовых конфигурациях 1С на управляемых формах макеты печатных форм могут редактироваться пользователями прямо в режиме «1С:Предприятие» без изменения конфигурации. Для хранения измененных вариантов используется РегистрСведений.ПользовательскиеМакетыПечати (раздел Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм).
Механизм работы подсистемы печати устроен следующим образом:
ПользовательскиеМакетыПечати..epf, полностью игнорируются, так как сохраненный пользовательский макет имеет наивысший приоритет.Чтобы восстановить вывод актуального макета из внешней печатной формы, выполним следующие шаги:
ПользовательскиеМакетыПечати.Также важно помнить о механизме справочника ДополнительныеОтчетыИОбработки: при подключении внешней печатной формы ее файл сохраняется в базе данных. Если вы изменили файл на диске, обязательно выполните повторную загрузку файла .epf в карточку элемента справочника.
Наиболее удобный способ разработки и отладки внешних печатных форм — встроить во внешнюю обработку собственную вспомогательную форму. Это позволяет запускать обработку через меню Файл → Открыть без необходимости постоянной перезагрузки файла в справочник дополнительных обработок.
Разберем по шагам создание тестовой формы:
ДокументСсылка с типом ссылки на проверяемый документ (например, ДокументСсылка.РасходнаяНакладная).
&НаКлиенте
Процедура СформироватьПечать(Команда)
СформироватьПечатьНаСервере();
КонецПроцедуры
&НаСервере
Процедура СформироватьПечатьНаСервере()
ОбъектОбработки = РеквизитВФорму(РеквизитФормы);
МассивОбъектов = Новый Массив;
МассивОбъектов.Добавить(ДокументСсылка);
КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("ИмяМакета");
ОбъектыПечати = Новый СписокЗначений;
ПараметрыВывода = УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода();
ОбъектОбработки.Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
ТабличныйДокумент = КоллекцияПечатныхФорм[0].ТабличныйДокумент;
ТабличныйДокумент.Показать("Тест внешней печатной формы");
КонецПроцедуры
Теперь при открытии файла .epf через Файл → Открыть в режиме предприятия мы можем установить точку останова в процедуре Печать модуля объекта внешней обработки и детально отследить формирование табличного документа.
Если печатная форма уже подключена через справочник ДополнительныеОтчетыИОбработки и нужно проверить ее поведение в реальном контуре документа, используем пошаговую отладку:
ДополнительныеОтчетыИОбработки.Печать объекта внешней обработки, нажмем клавишу F11 (Шагнуть в), чтобы перейти внутрь кода модуля объекта подключенной ВПФ.Проанализируем технические параметры, без которых отладчик может не останавливаться на точках останова:
-debug (или с включенной HTTP-отладкой).СведенияОВнешнейОбработке() рекомендуется устанавливать свойство БезопасныйРежим = Ложь.