К статье
Практический материал

Документы и Печать · 11 мин

Как изменить внешнюю печатную форму в 1С

Как изменить внешнюю печатную форму в 1С: открытие EPf-файла в конфигураторе, правка макета и кода, регистрация формы, проверка результата и типичные ошибки.

Внешняя печатная форма в 1С — это файл с расширением .epf, который подключается к конфигурации без её изменения и позволяет печатать документы по собственному шаблону. Когда в форму нужно добавить реквизит, поменять шапку или исправить формулу, изменения вносятся не в саму конфигурацию, а в этот отдельный файл. Такой подход безопасен: типовая конфигурация остаётся на поддержке, а обновления не затирают доработки.

Работа состоит из трёх этапов: открыть файл обработки в конфигураторе, внести правки в макет и программный код, затем обновить регистрацию формы в информационной базе. Ошибки чаще всего возникают на последнем шаге — пользователь правит файл, но в базе продолжает использоваться старая копия, загруженная в справочник дополнительных отчётов и обработок.

Для внесения изменений потребуются права на открытие конфигуратора и, как правило, роль «Добавление и изменение дополнительных отчетов и обработок» в пользовательском режиме. Если конфигурация работает в файловом варианте, достаточно локального доступа к базе; в клиент-серверном варианте может понадобиться согласование с администратором.

Где хранится внешняя печатная форма и как её найти

Прежде чем что-то менять, нужно понять, откуда форма берётся. Подключённые внешние обработки хранятся в справочнике «Дополнительные отчеты и обработки» (раздел «Администрирование» → «Печатные формы, отчеты и обработки»). В карточке элемента видно имя файла, из которого обработка была загружена, версия и список объектов назначения — документов, для которых форма доступна.

Сам файл .epf может лежать в сетевой папке, на компьютере разработчика или быть доступен только внутри базы. Если исходного файла под рукой нет, его можно выгрузить: откройте карточку обработки и используйте команду сохранения на диск (в типовых конфигурациях на БСП она обычно доступна через меню «Ещё» или по гиперссылке имени файла). Полученный файл и будет рабочей копией для правки.

Важно убедиться, что вы правите именно ту версию, которая используется в базе. Если в разных папках лежит несколько одноимённых .epf-файлов, сравните дату изменения и содержимое макета с тем, что выводится на печать. Правка «не того» файла — самая частая причина ситуации, когда изменения внесены, а печать не меняется.

Форма вызывается из документаПодключена через БСП

Ищите её в справочнике «Дополнительные отчеты и обработки»

Файл .epf есть на дискеМожно править напрямую

Откройте его в конфигураторе и сверьте версию с базой

Исходника нетНужна выгрузка из базы

Сохраните обработку на диск из карточки справочника

Открытие файла обработки в конфигураторе

Запустите конфигуратор той же версии платформы, на которой работает база. Открывать конфигурацию базы при этом не обязательно — внешняя обработка редактируется автономно. Выберите «Файл» → «Открыть» и укажите путь к .epf-файлу. Появится структура обработки: формы, макеты и модуль объекта.

Если файл открывается с ошибкой «Нарушена целостность структуры файла» или не открывается вовсе, проверьте три вещи: файл не повреждён при копировании (сравните размер с оригиналом), он не заблокирован антивирусом или открытым сеансом 1С, и версия платформы не старше той, в которой обработка была сохранена. Обработка, сохранённая на новой платформе, может не открыться на старой.

Перед началом правок сделайте резервную копию файла — просто скопируйте его в отдельную папку с датой в имени. Это позволит откатиться к рабочему варианту, если изменения сломают форму. Для серверных баз дополнительно убедитесь, что у вас есть права на замену обработки в справочнике.

Изменение макета печатной формы

Макет — это табличный шаблон, из которого строится печатная форма. В структуре обработки откройте нужный макет (обычно он называется «Макет», «ПФ_MXL» или по имени документа). Вы увидите области: шапку, строки табличной части, подвал с итогами и подписями. Области выделяются по строкам и имеют имена, по которым код обращается к ним.

Типовые правки макета: добавить или убрать колонку, изменить текст статичных надписей, вставить новый параметр. Параметры в ячейках обозначаются квадратными скобками, например [НаименованиеОрганизации]. Чтобы добавить новый параметр, впишите его в ячейку и задайте свойство ячейки «Заполнение» = «Параметр» (или «Шаблон», если нужно сочетать текст и значение). После этого параметр нужно заполнить в коде — иначе на печать выйдет пустая ячейка или сам текст в скобках.

При добавлении колонки в табличную часть помните про ширину листа: сумма ширин колонок не должна превышать область печати, иначе форма «разъедется» на два листа. Проверить это можно через настройку параметров страницы макета и пробный вывод. Также следите за именами областей: если переименуете область в макете, то же имя должно использоваться в коде при вызове ПолучитьОбласть().

Правка программного кода обработки

Логика формирования печатной формы находится в модуле объекта обработки. В типовых внешних формах, построенных на Библиотеке стандартных подсистем, есть экспортная процедура Печать() с параметрами — массивом объектов, коллекцией макетов и выходными параметрами. Именно она вызывается подсистемой печати, когда пользователь нажимает кнопку печати в документе.

Чтобы заполнить новый параметр макета, найдите место, где формируется соответствующая область: код получает область из макета, заполняет параметры через Область.Параметры.ИмяПараметра = Значение и выводит её в табличный документ. Добавьте присваивание своего параметра в том же блоке, взяв значение из реквизитов документа или вычислив его.

Если нужных данных нет в переданной ссылке на документ, их получают запросом или обращением через точку к реквизитам объекта. Учитывайте производительность: запрос внутри цикла по строкам замедлит печать больших документов — лучше вынести выборку за цикл. После правок выполните синтаксическую проверку модуля (кнопка с «галочкой» на панели инструментов конфигуратора), чтобы отловить опечатки до загрузки в базу.

Порядок внесения изменений
  1. 1
    Сохраните резервную копию .epf-файла
  2. 2
    Откройте обработку в конфигураторе через «Файл» → «Открыть»
  3. 3
    Внесите правки в макет и модуль объекта
  4. 4
    Выполните синтаксическую проверку модуля
  5. 5
    Сохраните файл и загрузите его в справочник «Дополнительные отчеты и обработки»
  6. 6
    Напечатайте тестовый документ и сверьте результат

Регистрация изменённой формы в базе

После сохранения файла обновите обработку в пользовательском режиме. Откройте «Администрирование» → «Печатные формы, отчеты и обработки» (предварительно включив использование дополнительных отчётов и обработок, если флажок снят). Найдите нужную обработку в списке, откройте карточку и загрузите файл заново: в типовых конфигурациях для этого служит команда замены файла или повторная загрузка через «Загрузить из файла».

При загрузке платформа сверяет сведения из функции СведенияОВнешнейОбработке(): вид, версию, назначение. Если вы изменили версию в этой функции, в карточке обновится номер версии — удобный способ убедиться, что загрузилась именно новая копия. Не меняйте без необходимости вид обработки и безопасный режим, иначе подсистема может отказать в регистрации.

В клиент-серверных базах с несколькими активными сеансами пользователи могут продолжать видеть старую форму до перезахода в программу. Если после замены файла печать не изменилась, попросите пользователя перезапустить сеанс и проверьте версию в карточке обработки ещё раз.

Проверка результата и типичные ошибки

Проверяйте форму на реальном документе, максимально похожем на рабочие: с заполненной табличной частью, длинными наименованиями и ненулевыми итогами. Сравните результат с прежней версией: итоговые суммы, подписи, наличие всех строк. Особое внимание уделите граничным случаям — пустой табличной части, документу без необязательных реквизитов, длинному тексту, который может не влезть в ячейку.

Контрольные точки

Как проверить результат

Версия в карточке обработки
Норма

Совпадает с версией из СведенияОВнешнейОбработке

Тревожный признак

Старая версия — файл не перезагружен

Печать тестового документа
Норма

Все параметры заполнены, итоги сходятся

Тревожный признак

Пустые ячейки, текст в квадратных скобках

Ширина формы
Норма

Влезает на один лист по ширине

Тревожный признак

Колонки переносятся на второй лист

Ошибки при печати
Норма

Форма открывается без сообщений

Тревожный признак

Ошибка вызова метода или обращения к реквизиту

Теперь о типичных ошибках. Первая — правки внесены в файл, но обработка в базе не обновлена: печать идёт по-старому. Вторая — параметр добавлен в макет, но не заполняется в коде, и на печати остаются квадратные скобки. Третья — переименована область макета без правки вызова ПолучитьОбласть(), из-за чего печать падает с ошибкой «Область не найдена». Четвёртая — обращение к реквизиту, которого нет у части документов: для документов одного вида форма работает, для другого — выдаёт ошибку.

Типичные ошибки
01
Забыли перезагрузить файл в справочник — в базе работает старая версия формы
02
Добавили параметр в макет, но не заполнили его в коде — на печати видны квадратные скобки
03
Переименовали область макета без правки кода — ошибка «Область не найдена» при печати
04
Проверяли только на пустом документе — ошибки на реальных данных всплыли у пользователей

Когда внешней формы недостаточно: альтернативы

Не всякую задачу разумно решать правкой .epf-файла. Если в конфигурации включён механизм редактирования макетов прямо в пользовательском режиме (в типовых решениях на БСП есть «Редактирование макета печатной формы»), простые правки надписей и расположения полей выполняются без конфигуратора вообще. Это быстрее и не требует прав разработчика, но подходит только для типовых форм, а не для внешних.

Если требуется сложная логика — несколько вариантов формы, выбор по условию, интеграция со штрихкодами — иногда проще создать новую внешнюю обработку на основе шаблона БСП, чем наращивать старую. А когда форма должна вызываться по кнопке из нестандартного места или участвовать в обмене, задача уже относится к доработке конфигурации или расширению, и внешняя печатная форма здесь не поможет.

Сравнение вариантов

Правка внешней формы (.epf)

Подходит для изменения макета и логики подключённой формы; конфигурация не затрагивается

Редактирование макета в режиме предприятия

Быстро и без конфигуратора, но работает только для типовых форм, где включён этот механизм

Расширение конфигурации

Для глубокой интеграции с типовыми объектами; требует аккуратности при обновлении конфигурации

Часто задаваемые вопросы

Можно ли изменить внешнюю печатную форму без конфигуратора?

Нет, файл .epf редактируется только в конфигураторе. В пользовательском режиме можно лишь заменить файл в справочнике дополнительных обработок. Если конфигуратор недоступен, попросите разработчика внести правки и передать вам готовый файл для загрузки.

Почему после правки файла печать не изменилась?

Чаще всего файл не был повторно загружен в справочник «Дополнительные отчеты и обработки» — база продолжает использовать старую копию. Также проверьте, что вы правили именно тот файл, который подключён к базе, и перезапустите сеанс 1С.

Что делать, если при печати появляется ошибка «Область не найдена»?

Имя области в макете не совпадает с именем, указанным в коде при вызове ПолучитьОбласть(). Откройте макет, сверьте имена областей (включая регистр букв и пробелы) с вызовами в модуле объекта и приведите их к одному значению.

Безопасно ли менять внешнюю форму — не сломается ли обновление конфигурации?

Внешние обработки не входят в состав конфигурации, поэтому типовое обновление их не затрагивает. Риск другой: после обновления могут измениться имена реквизитов или процедур БСП, на которые опирается форма, и её придётся адаптировать. Поэтому после обновления конфигурации внешние формы стоит проверять.

Как добавить в форму новый реквизит документа?

Добавьте параметр в нужную ячейку макета (заполнение «Параметр» или «Шаблон»), затем в модуле объекта в месте вывода этой области присвойте параметру значение реквизита документа. Сохраните файл, перезагрузите обработку в базе и проверьте печать на документе, где реквизит заполнен и где он пуст.

Итог

Что важно запомнить

Внешняя печатная форма правится в конфигураторе: макет отвечает за внешний вид, модуль объекта — за данные. После правок файл обязательно перезагружают в справочник дополнительных обработок и проверяют печать на реальном документе. Перед изменениями делайте резервную копию файла.