Документы и Печать · 12 мин
1С: как сделать печатную форму документа
Как создать и изменить печатную форму документа в 1С: работа с макетами, конструктором печати, внешними формами. Пошаговая инструкция и типичные ошибки.
Печатная форма — это то, как документ из 1С выглядит на бумаге: счёт на оплату, акт выполненных работ, накладная, доверенность. Практически каждая организация рано или поздно сталкивается с необходимостью изменить стандартную форму: добавить логотип, вывести дополнительные реквизиты, изменить формулировки или сделать собственный бланк.
В 1С есть несколько способов решить эту задачу: от простого редактирования макета в конфигураторе до подключения внешней печатной формы без изменения конфигурации. Выбор зависит от того, какая у вас конфигурация (типовая или самописная), стоит ли она на поддержке и насколько глубокие изменения нужны.
Материал рассчитан на пользователей и начинающих разработчиков 1С:Предприятие 8.3. Рассмотрим оба подхода — работу через конфигуратор и через механизм дополнительных печатных форм, который доступен даже без прав программиста.
Как устроена печатная форма в 1С
Прежде чем что-то менять, полезно понимать, из чего состоит печать документа. Любая печатная форма в 1С — это связка двух элементов: макета и программного кода, который заполняет макет данными.
Макет — это шаблон, похожий на таблицу Excel. Он хранится либо в самом объекте конфигурации (Документы → нужный документ → Макеты), либо в общих макетах. В макете задаются области: шапка, строка табличной части, подвал. Внутри ячеек размещаются тексты, параметры (в фигурных скобках, например [НомерДокумента]) и шаблоны.
Код, который формирует печать, обычно находится в модуле менеджера объекта (процедура Печать или ДобавитьКомандыПечати в типовых конфигурациях на БСП). Он получает данные документа, выводит области макета в табличный документ и возвращает его пользователю.
Подготовка: что проверить перед изменением формы
Сначала определите, типовая у вас конфигурация или доработанная, и стоит ли она на поддержке. Откройте «Конфигурация → Поддержка → Настройка поддержки». Если конфигурация типовая и обновляется автоматически, любые изменения внутри конфигуратора будут перезаписаны при очередном обновлении или потребуют ручного сравнения-объединения.
Второй момент — права. Для работы в конфигураторе нужны права на изменение конфигурации и толстый клиент. Для подключения внешних печатных форм достаточно прав администратора в пользовательском режиме.
Третий шаг — сделайте резервную копию базы (Администрирование → Обслуживание → Резервное копирование, либо выгрузка через конфигуратор). Ошибка в макете или коде обычно не портит данные, но некорректные изменения конфигурации могут нарушить обновление.
Способ 1: редактирование макета в конфигураторе
Этот способ подходит для самописных конфигураций и случаев, когда конфигурация уже снята с поддержки. Откройте конфигуратор, найдите нужный документ в дереве конфигурации и разверните ветку «Макеты». Если макета нет, создайте его: правый клик по «Макеты» → «Добавить» → тип «Табличный документ».
Дальше действуйте по шагам:
- 1Откройте конфигуратор и найдите документ в дереве конфигурации
- 2Создайте макет типа «Табличный документ» или откройте существующий
- 3Выделите нужные строки и задайте имя области через «Таблица → Имена → Назначить имя» (например, Шапка, Строка, Подвал)
- 4В ячейках, куда подставляются данные, укажите тип заполнения «Параметр» и имя параметра
- 5Сохраните макет и напишите процедуру формирования в модуле менеджера объекта
- 6Обновите конфигурацию базы данных (F7) и проверьте печать в пользовательском режиме
Ключевой момент — именованные области. Программа выводит макет не целиком, а по областям: сначала «Шапка», потом в цикле «Строка» для каждой позиции табличной части, затем «Подвал» с итогами и подписями. Имя области задаётся через меню «Таблица → Имена → Назначить имя» при выделенных строках.
Для ячеек с данными в свойствах ячейки (правый клик → Свойства) установите «Заполнение: Параметр». Тогда в коде значение подставляется через Область.Параметры.ИмяПараметра = Значение;. Если нужна статичная надпись — оставьте «Заполнение: Текст».
Код формирования печатной формы
Минимальная процедура печати в модуле менеджера документа выглядит так: получить макет, заполнить параметры областей, вывести их в табличный документ.
Процедура Печать(ТабДок, Ссылка) Экспорт
Макет = Документы.РеализацияТоваровУслуг.ПолучитьМакет("МакетПечати");
Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ Документ.РеализацияТоваровУслуг ГДЕ Ссылка = &Ссылка");
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Шапка = Запрос.Выполнить().Выбрать();
Шапка.Следующий();
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.Заполнить(Шапка);
ТабДок.Вывести(ОбластьШапка);
КонецПроцедурыОбратите внимание: имена параметров в коде должны точно совпадать с именами параметров в макете, включая регистр букв. Несовпадение — самая частая причина пустых полей в готовой форме.
Способ 2: внешняя печатная форма без изменения конфигурации
Для типовых конфигураций (Бухгалтерия предприятия, Управление торговлей, Зарплата и управление персоналом) правильный путь — внешняя печатная форма. Это файл с расширением .epf, который подключается к базе и добавляет свою кнопку в меню «Печать» документа, не трогая саму конфигурацию.
Создаётся внешняя форма в конфигураторе: «Файл → Новый → Внешняя обработка». В модуле объекта обработки обязательно нужна экспортная функция СведенияОВнешнейОбработке(), которая сообщает системе: для каких документов предназначена форма, как называется команда печати и какая процедура её формирует. Макет добавляется в обработку обычным образом.
Подключение выполняется в пользовательском режиме: «Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки». Там же нужно включить сам механизм флажком «Дополнительные отчеты и обработки». После добавления файла укажите размещение — список документов, в которых появится новая кнопка печати.
При подключении внешней формы стандартная кнопка печати остаётся — вы ничего не ломаете. Если внешняя форма перестала работать после обновления конфигурации, её можно отключить одним движением, и штатная печать продолжит работать.
Способ 3: конструктор печати и быстрые правки
В конфигураторе есть встроенный конструктор печати, который сам создаёт макет и заготовку процедуры. Откройте документ, перейдите на закладку «Макеты» и нажмите «Конструкторы → Конструктор печати». Выберите реквизиты шапки, табличной части и подвала — конструктор сгенерирует область макета и код.
Это удобно как стартовая точка: дальше макет дорабатывается вручную — добавляются рамки, логотип (картинка вставляется в макет через «Таблица → Рисунки»), колонтитулы, условное форматирование ячеек.
Ещё один быстрый вариант для мелких правок в некоторых типовых конфигурациях — редактирование макета прямо из пользовательского режима. В ряде документов при печати доступна кнопка изменения макета (если администратор разрешил это в настройках печатных форм). Возможности ограничены, но для правки надписей и добавления реквизитов часто достаточно.
Сравнение способов
Полный контроль, подходит для самописных и снятых с поддержки конфигураций. Минус — сложности при обновлении типовых решений.
Оптимально для типовых конфигураций на поддержке: обновления не затрагивают форму. Требует знания встроенного языка 1С.
Быстрый старт для новой формы: генерирует макет и код автоматически. Результат почти всегда требует ручной доработки дизайна.
Компромисс: изменения хранятся отдельно от конфигурации и переживают обновления. Подходит, когда нужно изменить и форму, и логику типового объекта.
Проверка результата и типичные ошибки
После внедрения формы проверьте её на реальных документах разных типов: с длинной табличной частью (перенос на несколько страниц), с пустыми необязательными реквизитами, с длинными наименованиями контрагентов и номенклатуры. Именно на таких данных всплывают проблемы с шириной колонок и переносами строк.
Как проверить результат
Номер, дата, контрагент и суммы выводятся в форму
Пустые поля — имена параметров в макете не совпадают с кодом
Строки переносятся, итоги и подписи на последней странице
Подвал «оторвался» или таблица обрезана — нужно настроить ПроверитьВывод/ПроверитьПрисоединение
Новая форма появилась в меню «Печать» документа
Кнопки нет — проверьте размещение внешней обработки и права пользователя
Для контроля разрыва страниц в коде используйте методы ТабДок.ПроверитьВывод() и ПроверитьПрисоединение(): они позволяют заранее узнать, поместится ли область на текущей странице, и при необходимости вывести разрыв страницы. Без этой проверки итоговая строка или подписи могут уехать на отдельный лист.
Ограничения и когда нужен разработчик
Самостоятельно, без навыков программирования, реально сделать: правку надписей и реквизитов в существующем макете, добавление логотипа, подключение готовой внешней формы, написанной специалистом. Для этого достаточно внимательности и резервной копии.
К разработчику 1С стоит обращаться, если нужно: выводить данные из нескольких связанных документов, строить формы со сложными условиями (разные шапки для разных типов операций), добавлять штрихкоды и QR-коды, интегрировать форму с ЭДО или делать групповую печать по списку документов. Ошибки в таких доработках могут привести к неверным данным в официальных документах, что уже вопрос не только техники, но и ответственности перед контрагентами.
Перед доработкой формы распечатайте или сохраните в PDF текущую версию и положите рядом с требованиями. Так проще сверять результат и быстрее откатиться, если что-то пошло не так — старый макет можно сохранить в файл через «Файл → Сохранить копию» прямо из редактора макета.
Что важно запомнить
Печатная форма в 1С = макет + код заполнения. Для типовых конфигураций на поддержке используйте внешние печатные формы или расширения, для собственных — прямое редактирование макета в конфигураторе. Всегда делайте резервную копию, проверяйте форму на длинных и «неудобных» документах и следите за совпадением имён параметров.
Частые вопросы
Можно ли изменить печатную форму без конфигуратора?
Да, частично. В ряде типовых конфигураций администратор может разрешить редактирование макета прямо из формы печати документа — доступна правка текстов и добавление реквизитов. Для полноценной новой формы без конфигуратора подойдёт подключение готовой внешней печатной формы (.epf) через «Администрирование → Печатные формы, отчеты и обработки».
Почему после обновления конфигурации моя печатная форма пропала?
Значит, изменения вносились напрямую в типовую конфигурацию, и обновление заменило доработанные объекты типовыми. Чтобы этого избежать, выносите формы во внешние обработки или расширения конфигурации — они не затрагиваются обновлением.
Как добавить логотип компании в печатную форму?
Откройте макет в конфигураторе, выберите «Таблица → Рисунки → Вставить» и загрузите изображение. Логотип лучше размещать в области шапки. Если логотип должен меняться в зависимости от организации, храните картинку в реквизите справочника «Организации» и выводите её программно через область-рисунок.
Что делать, если поля в форме выводятся пустыми?
Чаще всего имя параметра в макете не совпадает с именем в коде — сравните их посимвольно, включая регистр. Вторая причина: параметр есть, но запрос не возвращает соответствующее поле, и заполнению просто нечего взять. Проверьте текст запроса и состав выбираемых полей.
Как сделать, чтобы подписи не отрывались от таблицы на последней странице?
Используйте метод ТабДок.ПроверитьВывод(МассивОбластей), передав в него последнюю строку таблицы вместе с областью подвала. Если связка не помещается — выведите горизонтальный разделитель страниц перед выводом, и подвал целиком перейдёт на новый лист.
Внешняя печатная форма подключена, но кнопки в документе нет. Что проверить?
Проверьте три вещи: включён ли механизм «Дополнительные отчеты и обработки» в настройках, указано ли размещение обработки (список документов) в её карточке и есть ли у пользователя права на использование дополнительных обработок. Также убедитесь, что в функции СведенияОВнешнейОбработке() корректно задано назначение формы.