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

Разработка и Конфигурация · 13 мин

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

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

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

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

Ниже разобран полный цикл: подготовка макета, написание модуля, сведения о внешней обработке, регистрация в базе и проверка результата. Инструкция ориентирована на управляемые формы (1С 8.3) и конфигурации на БСП — УТ 11, ERP, БП 3.0, КА 2. Для старых конфигураций на обычных формах подход отличается, о чём сказано отдельно.

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

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

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

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

Откройте конфигуратор и выберите «Файл → Новый → Внешняя обработка». Задайте имя без пробелов, например ВПФ_СчетФактура_Логотип. Сразу сохраните файл на диск — получится файл с расширением .epf. Для управляемых форм в свойствах обработки ничего дополнительно настраивать не нужно: форма обработки для ВПФ обычно вообще не создаётся, вся логика живёт в модуле объекта.

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

Как подготовить макет печатной формы

В дереве обработки добавьте макет типа «Табличный документ»: правый клик по ветке «Макеты» → «Добавить». Именно в макете рисуется внешний вид печатной формы: шапка, таблица товаров, подвал с итогами и подписями.

Макет строится из именованных областей. Выделите строки шапки, затем через «Таблица → Имена → Назначить имя» назовите область, например Шапка. Аналогично создайте области СтрокаТовары (одна строка табличной части), Итого и Подвал. В ячейках, куда подставляются данные, укажите текст в квадратных скобках — [НомерДокумента], [Контрагент] — и в свойствах ячейки установите «Заполнение: Параметр». Текст без скобок будет выводиться как есть.

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

Код модуля объекта: сведения и формирование формы

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

Каркас функции сведений выглядит так:

Функция СведенияОВнешнейОбработке() Экспорт

ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();

ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();

ПараметрыРегистрации.Версия = "1.0";

ПараметрыРегистрации.Назначение.Добавить("Документ.РеализацияТоваровУслуг");

Команда = ПараметрыРегистрации.Команды.Добавить();

Команда.Представление = НСтр("ru = 'Счет-фактура (с логотипом)'");

Команда.Идентификатор = "СчетФактураЛоготип";

Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();

Команда.ПоказыватьОповещение = Истина;

Возврат ПараметрыРегистрации;

КонецФункции

Процедура печати получает массив ссылок на документы и должна заполнить коллекцию печатных форм:

Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетФактураЛоготип") Тогда

ТабДок = СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати);

УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(

КоллекцияПечатныхФорм, "СчетФактураЛоготип",

НСтр("ru = 'Счет-фактура (с логотипом)'"), ТабДок);

КонецЕсли;

КонецПроцедуры

Внутри функции формирования выполняется запрос по массиву документов, затем в цикле по выборке выводятся области макета: Макет.ПолучитьОбласть("Шапка"), заполнение параметров через Область.Параметры.НомерДокумента = ... и вывод через ТабДок.Вывести(Область). Строки табличной части выводятся вложенным циклом областью СтрокаТовары. Не забудьте ТабДок.ВывестиГоризонтальныйРазделительСтраниц() между документами и УправлениеПечатью.ЗадатьОбластьПечатиДокумента() для корректной нумерации при печати нескольких документов.

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

Регистрация ВПФ в базе

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

После добавления откройте карточку обработки и проверьте раздел «Назначение»: там должны быть перечислены те документы, для которых форма доступна. Если список пуст, значит массив Назначение в коде заполнен неверно. Также проверьте «Быстрый доступ» — укажите, каким пользователям команда видна сразу, а кому нужно открывать её через «Ещё».

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

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

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

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

Пункт с заданным названием присутствует в списке

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

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

Значения параметров на форме
Норма

Подставляются реальные данные документа

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

Виден текст в квадратных скобках — не настроено заполнение ячейки

Табличная часть
Норма

Выводятся все строки с корректными итогами

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

Строки пропущены или итоги нулевые — ошибка в запросе

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

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

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

Документы сливаются — нет разделителя страниц

Особенности для разных конфигураций и режимов

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

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

Способы добавить печатную форму

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

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

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

Полная свобода, можно менять типовые макеты. Минус: усложняет обновления, требует аккуратного переноса изменений.

Редактирование типового макета пользователем

В ряде конфигураций макет можно поправить прямо в режиме предприятия. Подходит для мелких правок текста, но не для изменения логики.

Типичные ошибки и как их избежать

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

Вторая группа ошибок — работа с данными. Запрос по массиву объектов должен учитывать проведённые и непроведённые документы, а обращение к реквизитам через точку от ссылки в цикле порождает множество запросов и тормозит печать больших пакетов. Выбирайте все данные одним запросом с соединениями к нужным справочникам.

Типичные ошибки при создании ВПФ
01
Ячейки макета оставлены с заполнением «Текст» — на печать выходят квадратные скобки вместо значений
02
Идентификатор команды в сведениях не совпадает с именем в УправлениеПечатью.НужноПечататьМакет — форма молча не формируется
03
В Назначении указан неверный полный тип объекта (например, «Документы.Реализация...» вместо «Документ.Реализация...») — команда не появляется
04
Обращение к реквизитам через точку в цикле — печать 50 документов занимает минуты
05
Отладка в рабочей базе — падения сеансов пользователей при ошибках в коде
06
Забыт разделитель страниц — при пакетной печати документы сливаются в один лист

Как отладить ВПФ без риска

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

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

Итог

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

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

Частые вопросы о внешних печатных формах

Можно ли сделать ВПФ без программирования?

Частично. В ряде конфигураций макет печатной формы можно отредактировать прямо в режиме предприятия (меню «Ещё → Изменить макет» у типовой формы или через «Администрирование → Печатные формы»). Это подходит для правки текстов, логотипа, шрифтов. Но изменить логику вывода данных без кода нельзя — для этого нужна полноценная ВПФ.

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

Проверьте три вещи: включён ли механизм дополнительных обработок в настройках, заполнен ли массив Назначение в сведениях (тип указывается как «Документ.ИмяДокумента» в единственном числе) и не отключена ли обработка в списке дополнительных отчетов. Также проверьте, что у пользователя есть доступ к команде в настройке «Быстрый доступ».

Чем ВПФ отличается от внешнего отчёта?

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

Сломается ли ВПФ после обновления конфигурации?

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

Можно ли выводить в ВПФ картинку, например логотип или подпись?

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

Как напечатать сразу несколько документов одной ВПФ?

Выделите нужные документы в списке и вызовите команду печати — в массив объектов попадут все выделенные ссылки. Чтобы пакетная печать работала корректно, в коде необходимо выводить горизонтальный разделитель страниц между документами и использовать УправлениеПечатью.ЗадатьОбластьПечатиДокумента — тогда каждый документ начнётся с нового листа и будет правильно пронумерован.