Документы и Печать · 11 мин
Как сделать макет печати в 1С: пошаговое руководство
Как создать макет печатной формы в 1С: добавление макета в конфигураторе, области, параметры, заполнение из кода и подключение внешней печатной формы.
Макет печатной формы в 1С — это шаблон, по которому программа строит документ для вывода на печать: счёт, накладную, акт, договор. Макет задаёт структуру (шапка, табличная часть, подвал), а код на встроенном языке заполняет шаблон реальными данными из документа. Создать макет можно двумя путями: внутри конфигурации через конфигуратор или как внешнюю печатную форму без изменения конфигурации.
Выбор пути зависит от ситуации. Если конфигурация типовая и стоит на поддержке, изменение макета внутри конфигурации усложнит обновления — правильнее использовать механизм внешних печатных форм БСП. Если конфигурация собственная или снята с поддержки, макет удобно хранить прямо в объекте метаданных или в общих макетах.
Ниже разобран полный цикл: создание табличного макета, выделение областей, назначение параметров, программное заполнение и подключение кнопки печати. Примеры приведены для управляемого приложения, но механика работы с табличным документом одинакова на всех современных версиях платформы.
Что такое макет и какие виды макетов существуют
Макет в 1С — это объект, который хранит заготовку печатной формы или представления данных. Для печати чаще всего используется тип «Табличный документ»: он похож на лист Excel, где можно задавать шрифты, границы, объединения ячеек и размеры колонок. Также существуют типы «Текстовый документ», «HTML-документ», «Схема компоновки данных» и другие, но для стандартных печатных форм документов почти всегда выбирают табличный документ.
Макеты делятся по месту хранения. Макет объекта (документа, справочника) находится внутри ветки конкретного объекта метаданных и логичен, когда форма относится только к нему. Общий макет (ветка «Общие → Общие макеты») используется, когда один и тот же шаблон нужен нескольким объектам — например, типовая «шапка» организации. Понимание этого различия важно: из кода макет объекта получают через ПолучитьМакет() у менеджера объекта, а общий — через ПолучитьОбщийМакет().
Создание макета в конфигураторе
Откройте конфигуратор, найдите нужный документ в дереве конфигурации и раскройте ветку «Макеты». Нажмите «Добавить», задайте имя макета (например, МакетСчет) и выберите тип «Табличный документ». Откроется редактор, визуально похожий на электронную таблицу.
Заполните ячейки статичным текстом: название документа, подписи колонок, реквизиты организации. Ячейки, в которые будут подставляться данные, оформите как параметры: откройте свойства ячейки (правый клик → «Свойства») и в поле «Заполнение» выберите «Параметр», а в поле «Параметр» укажите имя, например НомерДокумента. Альтернативный вариант — «Шаблон»: тогда в тексте ячейки можно смешивать статику и параметры в квадратных скобках, например Счёт № [НомерДокумента] от [ДатаДокумента].
Настройте внешний вид: ширину колонок, границы таблицы, шрифты, выравнивание. Учтите, что слишком широкий макет не поместится на лист А4 при печати — ориентируйтесь на суммарную ширину колонок около 190 мм для книжной ориентации или используйте масштабирование при выводе.
Разметка областей макета
Печатная форма собирается из областей: шапка выводится один раз, строка табличной части — в цикле для каждой строки документа, подвал — в конце. Чтобы код мог обращаться к этим фрагментам, их нужно выделить и назвать.
Выделите строки шапки (клик по заголовку первой строки и протяните до последней), затем в меню выберите «Таблица → Имена → Назначить имя» и введите имя области, например Шапка. Аналогично создайте области Строка (одна строка табличной части) и Подвал. Имена областей должны быть уникальны внутри макета.
- 1Создайте макет типа «Табличный документ» в ветке объекта или в общих макетах
- 2Заполните статичный текст и оформите ячейки с данными как параметры или шаблоны
- 3Выделите строки и назначьте именованные области: Шапка, Строка, Подвал
- 4Напишите код формирования печатной формы в модуле менеджера объекта
- 5Проверьте вывод на тестовом документе с разным количеством строк
Программное заполнение макета данными
Заполнение выполняется в модуле менеджера документа (процедура печати) или в общем модуле. Логика стандартная: создать табличный документ, получить макет, последовательно выводить области, подставляя параметры.
Функция СформироватьПечатнуюФорму(СсылкаНаДокумент)
ТабДок = Новый ТабличныйДокумент;
Макет = Документы.РеализацияТоваровУслуг.ПолучитьМакет("МакетСчет");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.НомерДокумента = СсылкаНаДокумент.Номер;
ОбластьШапка.Параметры.ДатаДокумента = Формат(СсылкаНаДокумент.Дата, "ДЛФ=D");
ОбластьШапка.Параметры.Покупатель = СсылкаНаДокумент.Контрагент;
ТабДок.Вывести(ОбластьШапка);
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Для Каждого СтрокаТовары Из СсылкаНаДокумент.Товары Цикл
ОбластьСтрока.Параметры.Заполнить(СтрокаТовары);
ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьПодвал.Параметры.ИтогоСумма = СсылкаНаДокумент.Товары.Итог("Сумма");
ТабДок.Вывести(ОбластьПодвал);
Возврат ТабДок;
КонецФункции
Обратите внимание на метод Параметры.Заполнить(СтрокаТовары): он автоматически подставляет значения в параметры, имена которых совпадают с именами колонок табличной части. Это избавляет от ручного перечисления каждого поля, но работает только при точном совпадении имён параметров макета и реквизитов.
Для типовых конфигураций на БСП процедура печати регистрируется в процедуре ДобавитьКомандыПечати и Печать модуля менеджера объекта — тогда кнопка появляется в стандартном меню «Печать» формы документа.
ОбластьСтрока.Параметры.Заполнить(СтрокаТовары);Внешняя печатная форма как альтернатива
Если конфигурация типовая и обновляется автоматически, изменение встроенного макета приведёт к тому, что при очередном обновлении форма затрётся или конфигурация попросит ручного сравнения. В этом случае создайте внешнюю печатную форму — файл с расширением .epf, который подключается через «Администрирование → Печатные формы, отчёты и обработки».
Внешняя форма содержит тот же табличный макет и код заполнения, но реализует интерфейс БСП: функцию СведенияОВнешнейОбработке() с описанием команд печати и процедуру Печать(). Пользователь подключает файл самостоятельно, без конфигуратора, и форма появляется в меню «Печать» рядом со штатными. При обновлении конфигурации внешняя форма не затрагивается.
Сравнение вариантов
Подходит для собственных и доработанных конфигураций. Требует доступа к конфигуратору и усложняет обновление типовых решений.
Подходит для типовых конфигураций на поддержке. Подключается пользователем, не затрагивается обновлениями, но требует реализации интерфейса БСП.
Некоторые типовые формы позволяют менять макет прямо в режиме предприятия (кнопка «Изменить макет»). Подходит для простых правок текста и логотипа.
Проверка результата и типичные ошибки
После написания кода откройте тестовый документ и сформируйте печатную форму. Проверьте: все ли параметры заполнены (пустые ячейки вместо значений указывают на несовпадение имён), корректно ли выводится табличная часть при одной строке и при большом количестве строк, не обрезается ли форма при предпросмотре.
Ещё одна частая проблема — форматирование чисел и дат. Параметр получает значение «как есть», поэтому дату лучше передавать через Формат(Дата, "ДЛФ=D"), а суммы — через Формат(Сумма, "ЧДЦ=2"), иначе в форме могут появиться лишние знаки после запятой или секунды в дате.
Как проверить результат
Все параметры содержат значения из документа
Пустые ячейки или текст [ИмяПараметра] в готовой форме
Каждая строка документа выведена один раз, нумерация сквозная
Дубли строк, пропуски, сбитая нумерация
Форма целиком помещается на лист выбранного формата
Колонки обрезаны или переносятся на следующий лист
Ограничения и меры предосторожности
Работа в конфигураторе требует прав на изменение конфигурации и монопольного доступа при обновлении конфигурации базы данных. Перед любыми изменениями сделайте выгрузку информационной базы (dt) — это единственный надёжный способ откатиться, если что-то пойдёт не так.
Не изменяйте типовые макеты в конфигурациях на полной поддержке: при следующем обновлении платформа предложит заменить объект, и доработки будут потеряны либо придётся вручную сливать изменения. Для таких случаев используйте внешние печатные формы или расширения конфигурации.
Часто задаваемые вопросы
Можно ли сделать макет печати без конфигуратора?
Частично. В типовых конфигурациях некоторые печатные формы позволяют редактировать макет прямо в режиме «Предприятие» через кнопку изменения макета в окне предпросмотра. Полноценную новую форму без конфигуратора создают как внешнюю обработку .epf, но сам файл всё равно готовят в конфигураторе.
Чем параметр ячейки отличается от шаблона?
Параметр заменяет всё содержимое ячейки одним значением из кода. Шаблон позволяет вписать несколько параметров внутрь текста ячейки в квадратных скобках, например «Счёт № [Номер] от [Дата]», и подставить их все одним обращением.
Почему в печатной форме пустые ячейки вместо данных?
Чаще всего имя параметра в макете не совпадает с именем в коде (учитывайте регистр и русские/английские буквы) либо у ячейки не установлено свойство «Заполнение: Параметр» или «Шаблон». Проверьте свойства ячейки и точное написание имени в обоих местах.
Как вывести сумму прописью в печатной форме?
Используйте встроенные возможности платформы: функцию формирования суммы прописью из типовых общих модулей (в БСП это РаботаСКурсамиВалют.СформироватьСуммуПрописью) и передайте результат в параметр подвала макета.
Пропадёт ли мой макет при обновлении конфигурации?
Если макет добавлен как новый объект — обычно нет, новые объекты обновление не трогает. Если изменён типовой макет на поддержке — да, обновление предложит заменить его на типовой вариант. Безопасные варианты: новый собственный макет, внешняя печатная форма или расширение конфигурации.
Как сделать, чтобы строки таблицы не разрывались между страницами?
Настройте свойства области «Строка»: в свойствах строк макета установите запрет разрыва страницы, а в коде используйте метод ПроверитьВывод перед выводом очередной строки, чтобы при необходимости вставить разрыв страницы или повторить шапку таблицы.
Что важно запомнить
Макет печати создаётся как табличный документ с именованными областями и параметрами, заполняется кодом через ПолучитьОбласть и Параметры.Установить. Для типовых конфигураций на поддержке используйте внешние печатные формы, а перед любыми изменениями делайте резервную копию базы.