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

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

Как сделать бланк в 1С: макеты, печатные формы и настройка

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

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

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

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

Какой способ создания бланка выбрать

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

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

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

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

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

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

Программное формирование табличного документа

Для разовых или нестандартных бланков без макета: документ строится кодом из областей и ячеек. Требует навыков встроенного языка 1С.

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

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

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

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

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

Тип заполнения ячейки задаётся в палитре свойств: «Текст» — статичная надпись, «Параметр» — значение подставит код, «Шаблон» — строка с подстановками вида «Счёт № [Номер] от [Дата]». Чаще всего удобен шаблон: он позволяет видеть структуру строки прямо в макете.

Код вывода бланка на печать

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

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

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

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

Внешняя печатная форма без изменения конфигурации

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

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

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

Оформление бланка: границы, шрифты, логотип

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

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

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

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

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

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

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

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

Все поля бланка содержат данные документа

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

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

Разбиение на страницы
Норма

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

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

Подвал уехал на отдельный лист, заголовок таблицы только на первой странице

Вывод табличной части
Норма

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

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

Строки дублируются или пропущены — ошибка в цикле вывода областей

Печать на принтере
Норма

Бланк помещается на лист без обрезки полей

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

Крайние колонки обрезаны — нужно настроить поля и масштаб в параметрах страницы

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

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

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

Можно ли сделать бланк в 1С без конфигуратора?

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

Чем макет отличается от печатной формы?

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

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

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

Как вывести в бланк сумму прописью?

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

Можно ли сохранить бланк в PDF или Excel?

Да. Сформированный табличный документ сохраняется через «Файл → Сохранить как» в форматы mxл, Excel, PDF, HTML и другие. Программно это делает метод Записать табличного документа с указанием типа файла, что удобно для автоматической отправки бланков по почте.

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

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

Итог

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

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