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

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

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

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

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

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

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

Когда нужна своя печатная форма и какие есть варианты

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

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

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

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

Подходит для косметических правок типовых форм без программирования. Ограничение: работает не во всех конфигурациях и не для всех видов макетов.

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

Универсальный способ: свой макет, свой код, не зависит от обновлений конфигурации. Требует базовых навыков работы в конфигураторе.

Изменение типового макета в конфигурации

Даёт полный доступ, но правки теряются при обновлении либо требуют снятия с поддержки. Применять только при отсутствии альтернатив.

Подготовка: что понадобится перед началом работы

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

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

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

Откройте конфигуратор и выберите «Файл → Новый → Внешняя обработка». Задайте имя, например «АктСверкиНашейФирмы», и сохраните файл с расширением .epf. Затем добавьте макет: в дереве обработки правой кнопкой по «Макеты» → «Добавить», тип макета — «Табличный документ».

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

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

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

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

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

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

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

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

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

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

Команда.Идентификатор = "АктНашейФирмы";

Команда.Представление = НСтр("ru = 'Акт (наша форма)'");

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

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

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

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

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

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

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

КоллекцияПечатныхФорм, "АктНашейФирмы", "Акт (наша форма)",

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

КонецЕсли;

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

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

ТабличныйДокумент = Новый ТабличныйДокумент;

Макет = ПолучитьМакет("МакетАкта");

Для Каждого Ссылка Из МассивОбъектов Цикл

ОбластьШапка = Макет.ПолучитьОбласть("Шапка");

ОбластьШапка.Параметры.НомерДокумента = Ссылка.Номер;

ОбластьШапка.Параметры.ДатаДокумента = Формат(Ссылка.Дата, "ДЛФ=D");

ОбластьШапка.Параметры.Контрагент = Ссылка.Контрагент;

ТабличныйДокумент.Вывести(ОбластьШапка);

ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();

КонецЦикла;

Возврат ТабличныйДокумент;

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

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

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

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

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

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

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

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

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

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

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

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

Ваша форма видна в списке и открывается без ошибок

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

Команды нет или появляется сообщение об ошибке при формировании

Заполнение полей
Норма

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

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

Пустые поля, даты вида «01.01.0001», неформатированные числа

Многостраничная печать
Норма

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

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

Таблица обрезана, шапка теряется, документы склеены

Групповая печать из списка
Норма

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

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

Несколько документов выводятся подряд на одном листе

Итог

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

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

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

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

Частично. В ряде конфигураций макеты в формате офисного документа (DOCX) можно редактировать прямо из режима «Предприятие» через команду изменения макета в меню «Печать». Полноценную новую форму с собственной логикой без конфигуратора создать нельзя.

Что делать, если после обновления конфигурации форма перестала работать?

Чаще всего причина в переименовании процедур БСП или типовых общих модулей, к которым обращается ваш код. Откройте обработку в конфигураторе, проверьте вызовы ДополнительныеОтчетыИОбработки и УправлениеПечатью по актуальной версии библиотеки и поднимите номер версии формы в сведениях.

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

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

Можно ли выводить печатную форму сразу в PDF или Excel?

Да. Сформированный табличный документ можно сохранить программно методом Записать с указанием типа файла, а в пользовательском режиме — через «Файл → Сохранить копию» в окне предварительного просмотра, выбрав нужный формат.

Почему форма видна администратору, но не видна обычному пользователю?

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

Нужно ли снимать конфигурацию с поддержки для внешней печатной формы?

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