Работа с внешними печатными формами (ВПФ) в конфигурациях на базе обычных форм, таких как "Управление торговлей", редакция 10.3, имеет свои технические особенности. Часто пользователи и начинающие разработчики сталкиваются с ситуацией, когда изменения, внесенные в макет через Конфигуратор, упорно не желают отображаться при печати документа. Рассмотрим подробно, почему это происходит и как правильно настроить систему, чтобы ваши правки вступили в силу.
Первое, что нам необходимо понять: в 1С версии 8.3 (и 8.2) с обычными формами внешняя печатная форма — это не просто файл на диске. Это объект, который загружается в информационную базу и хранится в специальном справочнике. Если вы просто отредактировали файл .epf на компьютере, 1С об этом "не знает", пока вы не обновите данные в базе.
Проанализируем путь регистрации ВПФ в интерфейсе программы:
Именно здесь хранится список всех подключенных форм. Найдем в списке наш "Счет на оплату" и откроем его карточку. В этот момент мы можем обнаружить главную причину проблемы: несоответствие файла в шапке и в табличной части.
Выясним причину, по которой изменения могут не сохраняться. В УТ 10.3 карточка внешней формы содержит две области для работы с файлом. Рассмотрим, как правильно выполнить замену:
В верхней части окна (шапке) есть кнопка "Заменить файл внешней обработки" (пиктограмма папки со стрелкой). Нажав ее, мы выбираем наш отредактированный файл на диске. Однако этого часто бывает недостаточно. В нижней части окна расположена таблица "Принадлежность печатной формы к объектам". В этой таблице указано, для каких документов (например, "Заказ покупателя" или "Счет на оплату") предназначена эта форма.
Важный нюанс: иногда требуется обновить файл именно в этой строке таблицы. Для этого нужно нажать на кнопку выбора в колонке с файлом внутри табличной части и повторно указать путь к вашему .epf. После этого обязательно нажмем кнопку "ОК" или "Записать", чтобы изменения зафиксировались в базе данных.
Если визуальное обновление файла не помогло, нам стоит заглянуть "под капот" обработки в Конфигураторе. Рассмотрим ситуацию, когда код обработки написан некорректно для использования в качестве внешней формы. Часто разработчики копируют код из типовой конфигурации, забывая адаптировать его.
Посмотрим на пример кода в модуле обработки. Найдем функцию Печать(). Одной из критических ошибок является использование метода ПолучитьОбщийМакет вместо ПолучитьМакет. Разберем разницу:
// ОШИБОЧНЫЙ ВАРИАНТ
// Программа берет макет из самой конфигурации 1С, игнорируя ваши правки в файле
Макет = ПолучитьОбщийМакет("СчетЗаказ");
// ПРАВИЛЬНЫЙ ВАРИАНТ ДЛЯ ВПФ
// Программа обращается к макету, который находится внутри вашей внешней обработки
Макет = ПолучитьМакет("СчетЗаказ");
Если в коде указано ПолучитьОбщийМакет, то сколько бы вы ни правили макет внутри своей обработки, 1С всегда будет выводить стандартную системную форму. Проверьте все вхождения этого метода и замените их. Также убедитесь, что имя макета в кавычках (например, "СчетЗаказ") строго соответствует имени объекта Макет в дереве метаданных вашей внешней обработки.
Рассмотрим ситуацию, когда форма зарегистрирована, но при нажатии кнопки "Печать" в документе она не отображается. Выясним технические требования к структуре ВПФ:
Печать() с ключевым словом Экспорт. Она должна возвращать объект типа ТабличныйДокумент.Проанализируем еще одну редкую, но неприятную причину: кэширование. При запуске внешней печатной формы 1С копирует её во временную папку пользователя. Иногда система продолжает использовать старую копию из этой папки.
Чтобы исключить этот фактор, попробуем выполнить следующие действия:
%TEMP% в строке проводника).Также полезно проверить результат, создав в справочнике внешних печатных форм новую запись с другим наименованием и загрузив туда отредактированный файл. Это позволит убедиться, что система обращается именно к свежему объекту, а не к старой записи справочника.
Для ускорения процесса отладки рассмотрим метод "Файл — Открыть". Вместо того чтобы каждый раз загружать форму в справочник, мы можем открыть файл .epf напрямую через меню 1С. Однако стоит помнить, что стандартная ВПФ обычно не имеет своей формы (окна), а содержит только модуль.
Чтобы этот метод сработал, профессиональные разработчики добавляют в обработку временную Форму объекта и кнопку, которая вызывает функцию Печать(), передавая в неё ссылку на какой-нибудь существующий документ. Это позволяет мгновенно видеть изменения макета в Конфигураторе без лишних манипуляций в пользовательском режиме.
Подведем итог: для успешного редактирования печатной формы в УТ 10.3 необходимо обеспечить три условия: правильное использование метода ПолучитьМакет в коде, корректное обновление файла в обеих частях карточки регистрации и проверку соответствия имен макетов. Соблюдение этих шагов позволит вам быстро и без привлечения программиста вносить любые изменения в первичные документы.