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

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

Как делать печатные формы в 1С

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

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

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

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

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

Любая печатная форма состоит из двух частей: макета и кода вывода. Макет — это шаблон, чаще всего в формате табличного документа (аналог листа Excel), где определены области, ячейки, параметры и оформление. Код — процедура на встроенном языке, которая заполняет параметры макета данными конкретного документа и формирует итоговый табличный документ.

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

Простая правка существующей формы без программирования

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

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

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

Создание новой печатной формы в конфигураторе

Когда нужна принципиально новая форма, последовательность такая. Сначала создайте макет: в ветке «Макеты» объекта добавьте новый макет типа «Табличный документ». Можно воспользоваться конструктором печати (меню «Конструкторы» → «Конструктор печати») — он автоматически создаст макет с шапкой, табличной частью и подвалом, а также сгенерирует процедуру вывода.

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

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

bsl
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ЗаказПокупателя.МакетЗаказа");
	ТабДок = Новый ТабличныйДокумент;
	Для Каждого Ссылка Из МассивОбъектов Цикл
		ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
		ОбластьШапка.Параметры.НомерДокумента = Ссылка.Номер;
		ТабДок.Вывести(ОбластьШапка);
	КонецЦикла;
КонецПроцедуры

Последний шаг — регистрация команды печати. В модуле менеджера в процедуре ДобавитьКомандуПечати добавьте строку с идентификатором макета и представлением кнопки. После обновления конфигурации новая кнопка появится в меню «Печать» документа.

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

Внешние печатные формы для типовых конфигураций

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

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

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

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

Правка типового макета

Быстро для мелких изменений, но только если конфигурация снята с поддержки или изменения разрешены расширением

Новая форма через расширение

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

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

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

Конструктор печати

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

Работа с табличными частями и итогами

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

Итоги (сумма документа, сумма прописью, НДС) выводятся в области «Подвал». Сумму прописью формируют функцией РаботаСКурсамиВалют.СформироватьСуммуПрописью() или через ЧислоПрописью() — в типовых конфигурациях есть готовые функции общего назначения, не нужно писать собственный алгоритм.

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

Перед написанием своей процедуры печати скопируйте код вывода похожей типовой формы и адаптируйте его. Так вы сохраните корректную работу с параметрами КоллекцияПечатныхФорм и ОбъектыПечати, без которых форма не попадёт в общую форму предпросмотра.
ПЗ
Практическое замечание

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

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

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

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

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

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

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

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

Кнопки нет — проверьте регистрацию команды и размещение внешней обработки

Заполнение данных
Норма

Все параметры подставляются, пустых подписей-параметров нет

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

Видны пустые места или текст вида [Параметр] — код не заполняет параметр

Многостраничный документ
Норма

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

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

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

Экспорт в PDF/Excel
Норма

Форматирование сохраняется

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

Съезжают колонки — пересмотрите объединённые ячейки макета

Ограничения и когда привлекать разработчика

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

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

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

Итог

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

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

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

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

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

Почему после обновления конфигурации пропали мои изменения в печатной форме?

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

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

В макете табличного документа вставьте картинку через меню «Таблица» → «Рисунки» → «Картинка». В типовых конфигурациях логотип часто подставляется автоматически из настроек организации — проверьте карточку организации и настройки печати, возможно, править макет вообще не потребуется.

Кнопка печати появилась, но при нажатии выходит ошибка. Что проверить?

Чаще всего не совпадает идентификатор команды печати и имя макета, либо процедура Печать не обрабатывает параметр КоллекцияПечатныхФорм. Откройте текст ошибки — в нём указаны модуль и строка. Для внешней формы дополнительно проверьте, что функция СведенияОВнешнейОбработке возвращает корректный идентификатор команды.

Как вывести в форму данные, которых нет в самом документе?

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

Подходит ли один макет для печати и для отправки по email?

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