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

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

Как открыть форму внешней печатной формы в 1С

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

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

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

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

Что такое внешняя печатная форма и когда у неё есть форма

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

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

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

Открытие EPF-файла напрямую через меню «Файл»

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

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

Порядок действий
  1. 1
    Откройте 1С в режиме «Предприятие» под пользователем с достаточными правами
  2. 2
    Выберите «Файл → Открыть» и укажите EPF-файл печатной формы
  3. 3
    Подтвердите предупреждение безопасности, если оно появится
  4. 4
    Проверьте, открылась ли форма настроек или сразу сформировался табличный документ
  5. 5
    Если окно пустое — откройте файл в конфигураторе и убедитесь, что у обработки есть формы

Учтите ограничение прав: интерактивное открытие внешних обработок требует права «Интерактивное открытие внешних обработок». В типовых конфигурациях оно есть у полноправного пользователя, но у рядовых пользователей может быть отключено. В этом случае меню «Открыть» либо недоступно, либо файл не запускается.

Открытие через «Дополнительные отчеты и обработки»

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

Чтобы зарегистрировать обработку, включите флаг «Дополнительные отчеты и обработки» в настройках, откройте одноимённый список, создайте новый элемент и загрузите EPF-файл. Конфигурация прочитает сведения из функции СведенияОВнешнейОбработке(): вид (должен быть «ПечатнаяФорма»), назначение (к каким документам привязана) и список команд. После записи элемента команда появится в кнопке «Печать» указанных документов.

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

Программное открытие формы из встроенного языка

Разработчику часто нужно открыть форму внешней печатной обработки программно — например, из другой обработки, при тестировании или для передачи параметров. Базовый приём — создать объект обработки и вызвать метод ПолучитьФорму():

Обработка = ВнешниеОбработки.Создать("C:\ПечатныеФормы\СчетНаОплату.epf");

Форма = Обработка.ПолучитьФорму("ФормаНастроек");

Форма.Открыть();

Если имя формы не указано, ПолучитьФорму() без параметра вернёт основную форму обработки. Передать параметры можно двумя способами: через свойства объекта обработки до получения формы (если в модуле объекта есть экспортные переменные или реквизиты) или через параметры формы, если она создана в управляемом режиме с объявленными параметрами.

В управляемом приложении для обработок, зарегистрированных в справочнике дополнительных обработок, удобнее открывать форму по навигационной ссылке или через ОткрытьФорму("ВнешняяОбработка.ИмяОбработки.Форма.ИмяФормы"). Этот вариант работает только для обработок, подключённых к информационной базе, — для файла на диске такая строка вызова недоступна.

bsl
Обработка = ВнешниеОбработки.Создать("C:\Forms\PrintForm.epf");
Форма = Обработка.ПолучитьФорму();
Форма.ОткрытьМодально();

Открытие формы в конфигураторе для редактирования

Чтобы изменить форму печатной обработки, откройте EPF-файл в конфигураторе через «Файл → Открыть». В дереве объекта раскройте ветку «Формы», выберите нужную и откройте её двойным щелчком. Для управляемых форм откроется редактор с деревом элементов, реквизитами и модулем формы; для обычных — конструктор формы старого вида.

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

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

Типичные ошибки при открытии формы

Чаще всего пользователи и разработчики сталкиваются с небольшим набором повторяющихся проблем. Знание их признаков сильно сокращает время диагностики.

Типичные ошибки
01
Открытие EPF в режиме «Тонкий клиент» при коде, рассчитанном на толстый клиент — метод ПолучитьФорму() недоступен, форма не создаётся
02
Попытка открыть обычную форму в управляемом приложении — окно не появляется или возникает ошибка о невозможности отображения
03
Отсутствие права «Интерактивное открытие внешних обработок» — меню «Открыть» недоступно, файл не запускается
04
Правка EPF на диске без перезагрузки в справочник дополнительных обработок — в базе продолжает работать старая версия
05
Вызов ПолучитьФорму() с именем, которого нет в дереве обработки, — ошибка «Форма не найдена»

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

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

Как проверить, что всё работает правильно

После подключения печатной формы пройдите короткий контроль: откройте документ нужного типа, нажмите «Печать» и убедитесь, что в списке есть новая команда. При её выборе должна либо открыться форма настроек обработки, либо сразу сформироваться табличный документ с данными именно этого документа.

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

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

Команда в меню «Печать» документа
Норма

Команда видна и запускает формирование

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

Команды нет — проверить назначение и публикацию обработки

Открытие формы настроек
Норма

Форма открывается без ошибок, реквизиты заполнены

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

Ошибка в ПриОткрытии или пустое окно — смотреть журнал регистрации

Сформированный табличный документ
Норма

Данные соответствуют текущему документу

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

Пустой макет или данные другого объекта — ошибка в передаче ссылки

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

Итог

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

Форму внешней печатной обработки открывают тремя путями: «Файл → Открыть» для ручного запуска, регистрация в «Дополнительных отчетах и обработках» для работы из документов и программный вызов ВнешниеОбработки.Создать() с ПолучитьФорму() для отладки. Большинство проблем связано с правами, типом формы (обычная/управляемая) и неактуальной копией обработки в базе.

Частые вопросы

Почему при открытии EPF появляется предупреждение безопасности?

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

Форма не открывается в тонком клиенте, хотя в толстом работает. В чём причина?

Метод ПолучитьФорму() и обычные формы внешних обработок недоступны в тонком клиенте. Решение — переработать обработку под управляемые формы либо запускать её в толстом клиенте, если конфигурация это позволяет. Для современных типовых конфигураций корректный путь — управляемая форма.

Как передать ссылку на документ в форму печатной обработки?

При штатном подключении через «Дополнительные отчеты и обработки» платформа сама передаёт массив объектов печати в команду обработки. При программном вызове присвойте ссылку экспортной переменной модуля объекта до вызова ПолучитьФорму() или передайте её через параметры управляемой формы при ОткрытьФорму().

Обновил EPF-файл, но в документе печатается старый макет. Что делать?

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

Можно ли открыть форму внешней обработки по ссылке из браузера или другой формы?

Да, если обработка подключена к базе через справочник дополнительных обработок. Для неё формируется навигационная ссылка вида на внешнюю обработку, и форму можно открыть методом ОткрытьФорму() с указанием имени обработки и формы. Для EPF-файла на диске такой механизм недоступен — только создание объекта через ВнешниеОбработки.Создать().

Что делать, если при открытии формы возникает ошибка «Нарушение прав доступа»?

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