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

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

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

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

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

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

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

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

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

Макет — это шаблон, похожий на таблицу Excel. Он хранится либо в самом объекте конфигурации (Документы → нужный документ → Макеты), либо в общих макетах. В макете задаются области: шапка, строка табличной части, подвал. Внутри ячеек размещаются тексты, параметры (в фигурных скобках, например [НомерДокумента]) и шаблоны.

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

Подготовка: что проверить перед изменением формы

Сначала определите, типовая у вас конфигурация или доработанная, и стоит ли она на поддержке. Откройте «Конфигурация → Поддержка → Настройка поддержки». Если конфигурация типовая и обновляется автоматически, любые изменения внутри конфигуратора будут перезаписаны при очередном обновлении или потребуют ручного сравнения-объединения.

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

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

Способ 1: редактирование макета в конфигураторе

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

Дальше действуйте по шагам:

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

Ключевой момент — именованные области. Программа выводит макет не целиком, а по областям: сначала «Шапка», потом в цикле «Строка» для каждой позиции табличной части, затем «Подвал» с итогами и подписями. Имя области задаётся через меню «Таблица → Имена → Назначить имя» при выделенных строках.

Для ячеек с данными в свойствах ячейки (правый клик → Свойства) установите «Заполнение: Параметр». Тогда в коде значение подставляется через Область.Параметры.ИмяПараметра = Значение;. Если нужна статичная надпись — оставьте «Заполнение: Текст».

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

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

bsl
Процедура Печать(ТабДок, Ссылка) Экспорт
	Макет = Документы.РеализацияТоваровУслуг.ПолучитьМакет("МакетПечати");
	Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ Документ.РеализацияТоваровУслуг ГДЕ Ссылка = &Ссылка");
	Запрос.УстановитьПараметр("Ссылка", Ссылка);
	Шапка = Запрос.Выполнить().Выбрать();
	Шапка.Следующий();
	ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
	ОбластьШапка.Параметры.Заполнить(Шапка);
	ТабДок.Вывести(ОбластьШапка);
КонецПроцедуры

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

Способ 2: внешняя печатная форма без изменения конфигурации

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

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

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

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

Способ 3: конструктор печати и быстрые правки

В конфигураторе есть встроенный конструктор печати, который сам создаёт макет и заготовку процедуры. Откройте документ, перейдите на закладку «Макеты» и нажмите «Конструкторы → Конструктор печати». Выберите реквизиты шапки, табличной части и подвала — конструктор сгенерирует область макета и код.

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

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

Сравнение способов

Правка макета в конфигураторе

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

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

Оптимально для типовых конфигураций на поддержке: обновления не затрагивают форму. Требует знания встроенного языка 1С.

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

Быстрый старт для новой формы: генерирует макет и код автоматически. Результат почти всегда требует ручной доработки дизайна.

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

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

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

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

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

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

Все параметры заполнены
Норма

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

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

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

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

Строки переносятся, итоги и подписи на последней странице

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

Подвал «оторвался» или таблица обрезана — нужно настроить ПроверитьВывод/ПроверитьПрисоединение

Кнопка печати
Норма

Новая форма появилась в меню «Печать» документа

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

Кнопки нет — проверьте размещение внешней обработки и права пользователя

Для контроля разрыва страниц в коде используйте методы ТабДок.ПроверитьВывод() и ПроверитьПрисоединение(): они позволяют заранее узнать, поместится ли область на текущей странице, и при необходимости вывести разрыв страницы. Без этой проверки итоговая строка или подписи могут уехать на отдельный лист.

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

Ограничения и когда нужен разработчик

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

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

Перед доработкой формы распечатайте или сохраните в PDF текущую версию и положите рядом с требованиями. Так проще сверять результат и быстрее откатиться, если что-то пошло не так — старый макет можно сохранить в файл через «Файл → Сохранить копию» прямо из редактора макета.
ПЗ
Практическое замечание
Итог

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

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

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

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

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

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

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

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

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

Что делать, если поля в форме выводятся пустыми?

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

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

Используйте метод ТабДок.ПроверитьВывод(МассивОбластей), передав в него последнюю строку таблицы вместе с областью подвала. Если связка не помещается — выведите горизонтальный разделитель страниц перед выводом, и подвал целиком перейдёт на новый лист.

Внешняя печатная форма подключена, но кнопки в документе нет. Что проверить?

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