Документы и Печать · 11 мин
Как изменить внешнюю печатную форму в 1С
Как изменить внешнюю печатную форму в 1С: открытие EPf-файла в конфигураторе, правка макета и кода, регистрация формы, проверка результата и типичные ошибки.
Внешняя печатная форма в 1С — это файл с расширением .epf, который подключается к конфигурации без её изменения и позволяет печатать документы по собственному шаблону. Когда в форму нужно добавить реквизит, поменять шапку или исправить формулу, изменения вносятся не в саму конфигурацию, а в этот отдельный файл. Такой подход безопасен: типовая конфигурация остаётся на поддержке, а обновления не затирают доработки.
Работа состоит из трёх этапов: открыть файл обработки в конфигураторе, внести правки в макет и программный код, затем обновить регистрацию формы в информационной базе. Ошибки чаще всего возникают на последнем шаге — пользователь правит файл, но в базе продолжает использоваться старая копия, загруженная в справочник дополнительных отчётов и обработок.
Для внесения изменений потребуются права на открытие конфигуратора и, как правило, роль «Добавление и изменение дополнительных отчетов и обработок» в пользовательском режиме. Если конфигурация работает в файловом варианте, достаточно локального доступа к базе; в клиент-серверном варианте может понадобиться согласование с администратором.
Где хранится внешняя печатная форма и как её найти
Прежде чем что-то менять, нужно понять, откуда форма берётся. Подключённые внешние обработки хранятся в справочнике «Дополнительные отчеты и обработки» (раздел «Администрирование» → «Печатные формы, отчеты и обработки»). В карточке элемента видно имя файла, из которого обработка была загружена, версия и список объектов назначения — документов, для которых форма доступна.
Сам файл .epf может лежать в сетевой папке, на компьютере разработчика или быть доступен только внутри базы. Если исходного файла под рукой нет, его можно выгрузить: откройте карточку обработки и используйте команду сохранения на диск (в типовых конфигурациях на БСП она обычно доступна через меню «Ещё» или по гиперссылке имени файла). Полученный файл и будет рабочей копией для правки.
Важно убедиться, что вы правите именно ту версию, которая используется в базе. Если в разных папках лежит несколько одноимённых .epf-файлов, сравните дату изменения и содержимое макета с тем, что выводится на печать. Правка «не того» файла — самая частая причина ситуации, когда изменения внесены, а печать не меняется.
Ищите её в справочнике «Дополнительные отчеты и обработки»
Откройте его в конфигураторе и сверьте версию с базой
Сохраните обработку на диск из карточки справочника
Открытие файла обработки в конфигураторе
Запустите конфигуратор той же версии платформы, на которой работает база. Открывать конфигурацию базы при этом не обязательно — внешняя обработка редактируется автономно. Выберите «Файл» → «Открыть» и укажите путь к .epf-файлу. Появится структура обработки: формы, макеты и модуль объекта.
Если файл открывается с ошибкой «Нарушена целостность структуры файла» или не открывается вовсе, проверьте три вещи: файл не повреждён при копировании (сравните размер с оригиналом), он не заблокирован антивирусом или открытым сеансом 1С, и версия платформы не старше той, в которой обработка была сохранена. Обработка, сохранённая на новой платформе, может не открыться на старой.
Перед началом правок сделайте резервную копию файла — просто скопируйте его в отдельную папку с датой в имени. Это позволит откатиться к рабочему варианту, если изменения сломают форму. Для серверных баз дополнительно убедитесь, что у вас есть права на замену обработки в справочнике.
Изменение макета печатной формы
Макет — это табличный шаблон, из которого строится печатная форма. В структуре обработки откройте нужный макет (обычно он называется «Макет», «ПФ_MXL» или по имени документа). Вы увидите области: шапку, строки табличной части, подвал с итогами и подписями. Области выделяются по строкам и имеют имена, по которым код обращается к ним.
Типовые правки макета: добавить или убрать колонку, изменить текст статичных надписей, вставить новый параметр. Параметры в ячейках обозначаются квадратными скобками, например [НаименованиеОрганизации]. Чтобы добавить новый параметр, впишите его в ячейку и задайте свойство ячейки «Заполнение» = «Параметр» (или «Шаблон», если нужно сочетать текст и значение). После этого параметр нужно заполнить в коде — иначе на печать выйдет пустая ячейка или сам текст в скобках.
При добавлении колонки в табличную часть помните про ширину листа: сумма ширин колонок не должна превышать область печати, иначе форма «разъедется» на два листа. Проверить это можно через настройку параметров страницы макета и пробный вывод. Также следите за именами областей: если переименуете область в макете, то же имя должно использоваться в коде при вызове ПолучитьОбласть().
Правка программного кода обработки
Логика формирования печатной формы находится в модуле объекта обработки. В типовых внешних формах, построенных на Библиотеке стандартных подсистем, есть экспортная процедура Печать() с параметрами — массивом объектов, коллекцией макетов и выходными параметрами. Именно она вызывается подсистемой печати, когда пользователь нажимает кнопку печати в документе.
Чтобы заполнить новый параметр макета, найдите место, где формируется соответствующая область: код получает область из макета, заполняет параметры через Область.Параметры.ИмяПараметра = Значение и выводит её в табличный документ. Добавьте присваивание своего параметра в том же блоке, взяв значение из реквизитов документа или вычислив его.
Если нужных данных нет в переданной ссылке на документ, их получают запросом или обращением через точку к реквизитам объекта. Учитывайте производительность: запрос внутри цикла по строкам замедлит печать больших документов — лучше вынести выборку за цикл. После правок выполните синтаксическую проверку модуля (кнопка с «галочкой» на панели инструментов конфигуратора), чтобы отловить опечатки до загрузки в базу.
- 1Сохраните резервную копию .epf-файла
- 2Откройте обработку в конфигураторе через «Файл» → «Открыть»
- 3Внесите правки в макет и модуль объекта
- 4Выполните синтаксическую проверку модуля
- 5Сохраните файл и загрузите его в справочник «Дополнительные отчеты и обработки»
- 6Напечатайте тестовый документ и сверьте результат
Регистрация изменённой формы в базе
После сохранения файла обновите обработку в пользовательском режиме. Откройте «Администрирование» → «Печатные формы, отчеты и обработки» (предварительно включив использование дополнительных отчётов и обработок, если флажок снят). Найдите нужную обработку в списке, откройте карточку и загрузите файл заново: в типовых конфигурациях для этого служит команда замены файла или повторная загрузка через «Загрузить из файла».
При загрузке платформа сверяет сведения из функции СведенияОВнешнейОбработке(): вид, версию, назначение. Если вы изменили версию в этой функции, в карточке обновится номер версии — удобный способ убедиться, что загрузилась именно новая копия. Не меняйте без необходимости вид обработки и безопасный режим, иначе подсистема может отказать в регистрации.
В клиент-серверных базах с несколькими активными сеансами пользователи могут продолжать видеть старую форму до перезахода в программу. Если после замены файла печать не изменилась, попросите пользователя перезапустить сеанс и проверьте версию в карточке обработки ещё раз.
Проверка результата и типичные ошибки
Проверяйте форму на реальном документе, максимально похожем на рабочие: с заполненной табличной частью, длинными наименованиями и ненулевыми итогами. Сравните результат с прежней версией: итоговые суммы, подписи, наличие всех строк. Особое внимание уделите граничным случаям — пустой табличной части, документу без необязательных реквизитов, длинному тексту, который может не влезть в ячейку.
Как проверить результат
Совпадает с версией из СведенияОВнешнейОбработке
Старая версия — файл не перезагружен
Все параметры заполнены, итоги сходятся
Пустые ячейки, текст в квадратных скобках
Влезает на один лист по ширине
Колонки переносятся на второй лист
Форма открывается без сообщений
Ошибка вызова метода или обращения к реквизиту
Теперь о типичных ошибках. Первая — правки внесены в файл, но обработка в базе не обновлена: печать идёт по-старому. Вторая — параметр добавлен в макет, но не заполняется в коде, и на печати остаются квадратные скобки. Третья — переименована область макета без правки вызова ПолучитьОбласть(), из-за чего печать падает с ошибкой «Область не найдена». Четвёртая — обращение к реквизиту, которого нет у части документов: для документов одного вида форма работает, для другого — выдаёт ошибку.
Когда внешней формы недостаточно: альтернативы
Не всякую задачу разумно решать правкой .epf-файла. Если в конфигурации включён механизм редактирования макетов прямо в пользовательском режиме (в типовых решениях на БСП есть «Редактирование макета печатной формы»), простые правки надписей и расположения полей выполняются без конфигуратора вообще. Это быстрее и не требует прав разработчика, но подходит только для типовых форм, а не для внешних.
Если требуется сложная логика — несколько вариантов формы, выбор по условию, интеграция со штрихкодами — иногда проще создать новую внешнюю обработку на основе шаблона БСП, чем наращивать старую. А когда форма должна вызываться по кнопке из нестандартного места или участвовать в обмене, задача уже относится к доработке конфигурации или расширению, и внешняя печатная форма здесь не поможет.
Сравнение вариантов
Подходит для изменения макета и логики подключённой формы; конфигурация не затрагивается
Быстро и без конфигуратора, но работает только для типовых форм, где включён этот механизм
Для глубокой интеграции с типовыми объектами; требует аккуратности при обновлении конфигурации
Часто задаваемые вопросы
Можно ли изменить внешнюю печатную форму без конфигуратора?
Нет, файл .epf редактируется только в конфигураторе. В пользовательском режиме можно лишь заменить файл в справочнике дополнительных обработок. Если конфигуратор недоступен, попросите разработчика внести правки и передать вам готовый файл для загрузки.
Почему после правки файла печать не изменилась?
Чаще всего файл не был повторно загружен в справочник «Дополнительные отчеты и обработки» — база продолжает использовать старую копию. Также проверьте, что вы правили именно тот файл, который подключён к базе, и перезапустите сеанс 1С.
Что делать, если при печати появляется ошибка «Область не найдена»?
Имя области в макете не совпадает с именем, указанным в коде при вызове ПолучитьОбласть(). Откройте макет, сверьте имена областей (включая регистр букв и пробелы) с вызовами в модуле объекта и приведите их к одному значению.
Безопасно ли менять внешнюю форму — не сломается ли обновление конфигурации?
Внешние обработки не входят в состав конфигурации, поэтому типовое обновление их не затрагивает. Риск другой: после обновления могут измениться имена реквизитов или процедур БСП, на которые опирается форма, и её придётся адаптировать. Поэтому после обновления конфигурации внешние формы стоит проверять.
Как добавить в форму новый реквизит документа?
Добавьте параметр в нужную ячейку макета (заполнение «Параметр» или «Шаблон»), затем в модуле объекта в месте вывода этой области присвойте параметру значение реквизита документа. Сохраните файл, перезагрузите обработку в базе и проверьте печать на документе, где реквизит заполнен и где он пуст.
Что важно запомнить
Внешняя печатная форма правится в конфигураторе: макет отвечает за внешний вид, модуль объекта — за данные. После правок файл обязательно перезагружают в справочник дополнительных обработок и проверяют печать на реальном документе. Перед изменениями делайте резервную копию файла.