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

· 9 мин

Содержание

Бланк в 1С — это макет печатной формы. Создают его в Конфигураторе: у нужного объекта (документа, справочника, обработки) открывают ветку Макеты, добавляют макет типа «Табличный документ» и рисуют в нём ячейки с именованными областями и параметрами. Затем макет выводят кодом в табличный документ, который пользователь печатает или сохраняет в PDF, Excel или ODS.

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

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

Что нужно до старта и где создаётся макет

Для работы понадобится конфигурация в режиме редактирования и понимание, куда встанет бланк. Макет всегда принадлежит какому-то объекту метаданных: чаще всего это документ (счёт, акт, накладная) или обработка.

Есть три способа разместить бланк — выбор зависит от того, можно ли менять конфигурацию:

  • 🔧 Прямо в объекте конфигурации. Макет лежит в ветке Макеты документа. Простой путь, но он снимает типовую конфигурацию с полной поддержки, если база типовая.
  • 📦 Во внешней обработке. Макет внутри .epf-файла, подключается через Администрирование → Печатные формы, отчёты и обработки. Конфигурация остаётся на поддержке.
  • 🧩 В расширении конфигурации. Макет добавляется в расширение, типовая конфигурация не меняется. Подходит, когда нужен штатный механизм печати, а не отдельная обработка.

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

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

Создаём табличный макет в Конфигураторе

Основной тип макета для бумажного бланка — табличный документ (Табличный документ). Это сетка ячеек, похожая на лист Excel, где текст, рамки и параметры размещаются по областям.

Порядок действий:

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

Ячейки объединяют через Таблица → Объединить, границы рисуют кнопкой рамок на панели. Ширину колонок и высоту строк тянут за заголовки — ровно как в табличном редакторе.

Именованные области

Бланк почти никогда не выводится целиком. Его разбивают на области, которые код выводит по очереди: шапка — один раз, строки таблицы — в цикле, подвал с подписями — в конце.

Чтобы назвать область:

  1. Выделите нужные строки по их номерам слева (или диапазон ячеек).
  2. Откройте Таблица → Имена → Назначить имя.
  3. Введите имя латиницей: Шапка, Строка, Подвал.

Без именованных областей вывести бланк кусками не получится — метод ПолучитьОбласть обращается именно к имени. Сразу закладывайте области под каждую логическую часть бланка.

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

Там, где в бланк попадут номер, дата или сумма, ставят параметр, а не фиксированный текст:

  1. Встаньте на ячейку, откройте её свойства (Таблица → Свойства или двойной клик по палитре).
  2. В свойстве Заполнение выберите значение «Параметр».
  3. В самой ячейке впишите имя параметра, например НомерДокумента.

Если в одной строке нужно смешать постоянный текст и значение — выбирайте Заполнение = Шаблон и пишите имя параметра в квадратных скобках: Счёт № [НомерДокумента] от [ДатаДокумента].

Вид числа или даты в бланке удобно задать прямо в ячейке, а не в коде. В свойствах ячейки есть поле Формат: через конструктор формата выбирают разделители разрядов, число знаков после запятой, представление даты. Тогда сумма 1234.5 выведется как 1 234,50, а дата — в нужном виде, без ручного Формат() в каждой строке.

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

Привязываем макет к модулю объекта

Созданный макет сам по себе ничего не печатает — его вызывает код. Логика печати живёт в модуле менеджера объекта (а в простых случаях — в модуле формы или модуле самой обработки).

Минимальная процедура печати выглядит так:

Процедура Печать() Экспорт
    ТабДок = Новый ТабличныйДокумент;
    Макет = Документы.РеализацияТоваровУслуг.ПолучитьМакет("ПечатнаяФорма");

    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьШапка.Параметры.НомерДокумента = Номер;
    ОбластьШапка.Параметры.ДатаДокумента  = Дата;
    ТабДок.Вывести(ОбластьШапка);

    ТабДок.Показать();
КонецПроцедуры

Разберём по строкам:

  • Новый ТабличныйДокумент — создаёт пустой лист, в который будем складывать области.
  • ПолучитьМакет("ПечатнаяФорма") — берёт макет по имени из метаданных. Метод доступен у менеджера объекта и внутри модуля объекта.
  • ПолучитьОбласть("Шапка") — достаёт именованную область.
  • .Параметры.ИмяПараметра — заполняет параметры, которые вы разметили в ячейках.
  • Вывести(...) — добавляет область в табличный документ.

Имена параметров в коде должны совпадать с именами в макете до буквы и регистра. НомерДокумента и НомерДок — это разные параметры, второй просто останется пустым без всякой ошибки.

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

Параметры, области и порядок вывода

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

  • Вывести(Область) — ставит область ниже предыдущей, с новой строки.
  • Присоединить(Область) — ставит область справа от предыдущей, в тех же строках.

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

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

После цикла выводят подвал — итоги и подписи. Итоговую сумму считают в коде заранее и передают параметром:

ИтогоСумма = Товары.Итог("Сумма");

ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьПодвал.Параметры.Итого = ИтогоСумма;
ТабДок.Вывести(ОбластьПодвал);

Метод Итог("Сумма") у табличной части складывает колонку без отдельного цикла. Так в подвал попадает ровно та сумма, что и в строках, — расхождений из-за ручного суммирования не будет.

💡 Полезные настройки табличного документа перед показом:

  • ТабДок.ОтображатьСетку = Ложь — убирает служебную сетку на экране.
  • ТабДок.ТолькоПросмотр = Истина — запрещает случайную правку готового бланка.
  • ТабДок.ПолеСверху, ПолеСлева и т.п. — поля печати в миллиметрах.

Для повторения шапки таблицы на каждом листе задают повторяющиеся области через Таблица → Повторение строк при печати. Это избавляет от ручного вывода заголовка колонок на каждой странице.

Какой тип макета и формат вывода выбрать

Табличный документ закрывает большинство бумажных бланков, но не единственный вариант. Сравним типы макетов по задачам:

Тип макетаКогда братьОсобенности
Табличный документСчета, акты, накладные, любые печатные формыВывод по областям, параметры, печать, PDF, Excel
Текстовый документЭкспорт в текстовые файлы, обмен без форматированияНет рамок и стилей, только символы
Схема компоновки данныхОтчёты с группировками и итогамиДанные и оформление задаются в СКД, а не кодом
HTML-документВывод в веб-форму, e-mailПоддерживает разметку HTML
Графическая/географическая схемаДиаграммы, картыУзкие задачи, для бланков не используется

Готовый табличный документ сохраняется в нескольких форматах через Файл → Сохранить как:

  • 📄 PDF — для отправки и архива, формат не «плывёт» у получателя.
  • 📊 Excel (.xlsx, .xls) и ODS — когда данные нужно дальше считать.
  • 🗂 .mxl — родной формат 1С, открывается в самой программе.

Для печати на принтер — Файл → Печать или кнопка на панели. Перед этим стоит заглянуть в Файл → Предварительный просмотр и проверить разбивку по страницам.

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

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

Что нужно сделать в самой обработке:

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

Подключение в режиме 1С:Предприятия:

  1. Откройте Администрирование → Печатные формы, отчёты и обработки.
  2. Включите флаг использования дополнительных обработок, если он выключен.
  3. Нажмите Добавить из файла и выберите .epf.
  4. В карточке проверьте, на каких объектах и в каком разделе появится команда, и сохраните.

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

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

Частые ошибки при создании бланка и отладка

Большинство проблем с бланком — это не ошибки платформы, а рассинхрон между макетом и кодом. Самый быстрый способ отладки — поставить точку останова на процедуре печати (F9), запустить в режиме отладки и смотреть, что реально попадает в области.

Диагностика: выберите симптом

Правку макета в типовой базе на поддержке всегда начинайте с резервной копии. Снятие объекта с поддержки обратимо не всегда, а обновление потом потребует ручного сравнения.

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

Можно ли создать бланк без Конфигуратора?
Да. Во внешней обработке макет рисуется так же, но подключается она в режиме 1С:Предприятия через раздел дополнительных печатных форм. Конфигурацию при этом не меняют.
Чем отличается макет от печатной формы?
Макет — это заготовка в метаданных (сетка ячеек, области, параметры). Печатная форма — это уже заполненный данными табличный документ, который получился после вывода макета кодом.
Как вставить в бланк логотип или картинку?
В редакторе макета поставьте курсор в ячейку и выберите Таблица → Рисунки → Картинка. Изображение привяжется к ячейкам и будет печататься вместе с бланком.
Почему бланк печатается с лишней сеткой?
На экране сетка видна всегда, но на печать не идёт. Если серые линии всё же печатаются — это заданные границы ячеек. Уберите их кнопкой рамок или отключите ОтображатьСетку.
Как сделать, чтобы шапка таблицы повторялась на каждой странице?
Выделите строки шапки и задайте повторение через Таблица → Повторение строк при печати. При многостраничном выводе заголовок колонок встанет на каждом листе автоматически.