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

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

Как сделать внешнюю печатную форму в 1С

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

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

Механизм работает во всех типовых решениях на управляемых формах: «1С:Бухгалтерия 8», «1С:Управление торговлей», «1С:ERP», «1С:Зарплата и управление персоналом» и других. Печатная форма регистрируется через стандартный механизм «Дополнительные отчеты и обработки», после чего появляется в меню «Печать» нужных документов.

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

Что понадобится перед началом работы

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

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

Создание файла внешней обработки в конфигураторе

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

Дальше в обработку нужно добавить макет — шаблон будущего документа. В дереве обработки нажмите правой кнопкой на «Макеты → Добавить», выберите тип «Табличный документ» и нарисуйте форму: шапку с реквизитами, табличную часть с областями «Строка» и «Подвал». Областям присваиваются имена, а в ячейках, куда подставляются данные, устанавливается тип заполнения «Параметр» или «Шаблон».

Имена областей и параметров макета должны в точности совпадать с теми, к которым вы обратитесь из кода. Расхождение даже в одном символе — самая частая причина пустых полей и ошибок «Поле не найдено».

Модуль объекта: функция регистрации и код печати

Ключевой элемент внешней печатной формы — экспортная функция СведенияОВнешнейОбработке() в модуле объекта. Именно по ней 1С понимает, что это за файл, к каким объектам он относится и какие команды предоставляет. Внутри функции формируется структура с видом обработки «ПечатнаяФорма», версией, назначением (массив объектов, например «Документ.СчетНаОплатуПокупателю») и таблицей команд.

bsl
Функция СведенияОВнешнейОбработке() Экспорт
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
	ПараметрыРегистрации.Версия = "1.0";
	ПараметрыРегистрации.Назначение.Добавить("Документ.СчетНаОплатуПокупателю");
	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	НоваяКоманда.Представление = НСтр("ru = 'Счет на оплату (внешний)'");
	НоваяКоманда.Идентификатор = "СчетВнешний";
	НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
	НоваяКоманда.ПоказыватьОповещение = Ложь;
	Возврат ПараметрыРегистрации;
КонецФункции

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

Подключение формы к базе

В пользовательском режиме перейдите в «Администрирование → Печатные формы, отчеты и обработки» и включите флажок «Дополнительные отчеты и обработки», если он ещё не установлен. Затем откройте одноимённую ссылку, нажмите «Добавить из файла» и выберите сохранённый .epf.

После загрузки карточка обработки покажет назначение — список объектов, к которым привязана команда. Проверьте, что нужный документ присутствует в списке; если назначение пустое, добавьте его вручную через ссылку «Размещение». Запишите карточку — после этого команда появится в меню «Печать» указанных документов.

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

Проверка результата и отладка

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

Для отладки удобно временно открыть обработку напрямую через «Файл → Открыть» и вызывать печать из неё, либо запустить пользовательский сеанс под отладчиком с точкой останова в процедуре Печать. Так видно, приходят ли ссылки на документы и что возвращает запрос.

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

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

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

Команда видна в документах указанного типа

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

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

Заполнение макета
Норма

Все параметры подставлены, суммы и номенклатура выведены

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

Пустые ячейки — имена параметров не совпадают с полями запроса

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

Каждый документ выводится с новой страницы

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

Данные склеиваются — не вызывается ВывестиГоризонтальныйРазделительСтраниц

Типичные ошибки и ограничения

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

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

Типичные ошибки
01
Несовпадение имён параметров макета и полей запроса — ячейки остаются пустыми без сообщения об ошибке
02
Неверная сигнатура процедуры Печать — команда молча не выполняется
03
Указание несуществующего объекта в Назначение — обработка не привязывается к документу
04
Тестирование сразу в рабочей базе — ошибка кода прерывает сеансы пользователей
05
Хранение единственной копии .epf только в базе — при удалении обработки теряется исходник

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

Альтернативы внешней обработке

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

Внешняя печатная форма (.epf)

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

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

Подходит, когда кроме печати нужно менять формы, роли или модули. Требует аккуратного контроля совместимости при обновлениях.

Доработка конфигурации

Последний вариант для глубоких изменений. Снимает объекты с полной поддержки и усложняет обновление.

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

Итог

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

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

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

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

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

Почему команда печати не появляется в документе?

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

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

В процедуре Печать в параметре МассивОбъектов приходят все выделенные ссылки. Организуйте цикл по ним, для каждого документа выводите области макета, а между документами вызывайте метод ВывестиГоризонтальныйРазделительСтраниц у табличного документа — тогда каждый документ начнётся с новой страницы.

Сломается ли внешняя печатная форма при обновлении 1С?

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

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

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

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

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