При сопровождении и доработке систем на платформе 1С:Предприятие 8.3 программисты часто сталкиваются с ситуацией, когда печатная форма документа выводится с изменениями, но в макетах конфигурации или активных расширениях этих изменений нет. Мы можем исправить макет в основной конфигурации, удалить или отключить расширение, но документ все равно продолжает упрямо выводиться по старому или нежелательному шаблону.
В этой статье мы подробно разберем, где в конфигурациях на базе БСП (Библиотеки стандартных подсистем), таких как 1С:Бухгалтерия 3.0, могут скрываться макеты печатных форм, как локализовать проблему и по шагам исправить макет внешней печатной формы.
Когда стандартные методы поиска в Конфигураторе не приносят результатов, необходимо проанализировать три основных места, где система может брать макет для печати:
1С:Предприятие. В этом случае измененный макет сохраняется в специальном регистре сведений ПользовательскиеМакетыПечати и переопределяет типовой макет из конфигурации.*.epf, загруженный в базу данных, и перехватывает стандартную команду печати.Давайте подробно разберем, как проверить каждую из этих версий и как внести исправления в макет внешней печатной формы.
Прежде чем открывать Конфигуратор и искать внешние файлы, нам следует проверить, не был ли изменен макет встроенными средствами администрирования в режиме пользователя.
Для этого выполним следующие действия:
Если в списке макетов чисто или нужного документа там нет, переходим к следующему шагу — поиску внешних печатных форм.
Очень часто разработчики внедряют новые печатные формы или изменяют старые не через расширения, а через механизм дополнительных отчетов и обработок. Это позволяет не снимать конфигурацию с поддержки и оперативно обновлять формы документов.
Выясним, где хранятся эти обработки и как их найти:
ДополнительныеОтчетыИОбработки).Физически этот макет находится внутри двоичного файла обработки, который хранится в базе данных в реквизите с типом ХранилищеЗначения. Именно поэтому мы не можем найти его поиском по конфигурации или расширению.
Если мы определили, что документ печатается из внешней обработки, нам нужно отредактировать макет внутри файла *.epf и обновить его в базе данных. Рассмотрим детальный алгоритм работы.
1. Выгрузка обработки на диск:
В справочнике Дополнительные отчеты и обработки откроем карточку найденной печатной формы. Нажмем кнопку Выгрузить в файл... и сохраним файл с расширением *.epf на жесткий диск.
2. Редактирование макета в Конфигураторе:
Запустим Конфигуратор. Перейдем в меню Файл — Открыть и выберем сохраненный ранее файл *.epf. Перед нами откроется окно внешней обработки.
Развернем ветку Макеты. Нажмите дважды на нужный табличный документ (макет), чтобы открыть его графический редактор. Внесем необходимые изменения: поправим текст, изменим ширину колонок, исправим границы ячеек или формулы.
Обратите внимание на то, как устроен программный вывод макета в модуле объекта внешней обработки. Обычно процедура формирования печатной формы выглядит следующим образом:
Процедура Печать(МассивОбъектовНазначения, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
// Проверяем, нужна ли наша печатная форма
ТабличныйДокумент = СформироватьПечатнуюФорму(МассивОбъектовНазначения, ОбъектыПечати);
// Выводим сформированный документ в общую коллекцию БСП
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"ИмяМакетаВнешнейФормы",
"Наименование печатной формы",
ТабличныйДокумент
);
КонецПроцедуры
После завершения редактирования макета сохраним изменения во внешней обработке (сочетание клавиш Ctrl + S) и закроем Конфигуратор.
3. Обновление внешней обработки в базе данных:
Вернемся в режим 1С:Предприятие в карточку нашей дополнительной обработки. Нажмем кнопку Обновить из файла..., выберем измененный файл на диске и нажмем Записать и закрыть. С этого момента система начнет использовать обновленный макет при печати документа.
Да, это возможно, но с некоторыми важными ограничениями. Если разработчик внешней печатной формы спроектировал ее по стандартам БСП (используя функции общего модуля УправлениеПечатью для вывода табличных документов), то макет этой обработки появится в общем списке Макеты печатных форм (раздел Администрирование).
В режиме пользователя мы можем выделить этот макет, нажать Изменить и перекрасить ячейки, изменить шрифт или добавить текстовую информацию (например, условия доставки или реквизиты нового договора). Однако мы столкнемся со следующими ограничениями:
<АдресДоставки>, система не сможет заполнить его автоматически, так как в коде внешней обработки нет алгоритма для заполнения этого нового параметра.Заголовок), программа выдаст ошибку во время выполнения кода и печать сорвется.Поэтому для любых серьезных структурных изменений макета (добавление новых реквизитов, изменение логики расчета) всегда используйте выгрузку обработки в Конфигуратор.
Мы выяснили, что если изменения макета в основной конфигурации или расширениях не влияют на печать документа, проблема практически всегда кроется в наличии внешней печатной формы (дополнительной обработки) или зарегистрированного пользовательского макета в БСП. Действуя по нашему алгоритму, вы сможете быстро локализовать источник проблемы, выгрузить обработку, внести изменения в Конфигураторе и обновить логику печати безболезненно для пользователей.