Создание печатной формы и макета в 1С 8.3
Содержание
Бланк в 1С — это макет печатной формы. Создают его в Конфигураторе: у нужного объекта (документа, справочника, обработки) открывают ветку Макеты, добавляют макет типа «Табличный документ» и рисуют в нём ячейки с именованными областями и параметрами. Затем макет выводят кодом в табличный документ, который пользователь печатает или сохраняет в PDF, Excel или ODS.
Если править типовую конфигурацию нежелательно, тот же бланк можно собрать во внешней обработке с макетом и подключить её через механизм дополнительных печатных форм. Результат для пользователя один и тот же — новая кнопка печати на форме документа.
Ниже — весь путь: от выбора инструмента до вывода готового бланка и разбора ошибок, на которые уходит больше всего времени.
Что нужно до старта и где создаётся макет
Для работы понадобится конфигурация в режиме редактирования и понимание, куда встанет бланк. Макет всегда принадлежит какому-то объекту метаданных: чаще всего это документ (счёт, акт, накладная) или обработка.
Есть три способа разместить бланк — выбор зависит от того, можно ли менять конфигурацию:
- 🔧 Прямо в объекте конфигурации. Макет лежит в ветке
Макетыдокумента. Простой путь, но он снимает типовую конфигурацию с полной поддержки, если база типовая. - 📦 Во внешней обработке. Макет внутри
.epf-файла, подключается черезАдминистрирование → Печатные формы, отчёты и обработки. Конфигурация остаётся на поддержке. - 🧩 В расширении конфигурации. Макет добавляется в расширение, типовая конфигурация не меняется. Подходит, когда нужен штатный механизм печати, а не отдельная обработка.
Для типовых баз на поддержке начинайте с внешней обработки или расширения. В Конфигуратор типовой конфигурации лезьте только тогда, когда без изменения самих объектов не обойтись.
Создаём табличный макет в Конфигураторе
Основной тип макета для бумажного бланка — табличный документ (Табличный документ). Это сетка ячеек, похожая на лист Excel, где текст, рамки и параметры размещаются по областям.
Порядок действий:
- В дереве конфигурации раскройте нужный объект и выделите ветку
Макеты. - Нажмите
Добавить(илиДействия → Добавить). Откроется конструктор макета. - Задайте имя латиницей без пробелов, например
ПечатнаяФорма, и выберите тип «Табличный документ». НажмитеГотово. - В открывшемся редакторе нарисуйте бланк: заголовок, реквизиты, табличную часть, подпись.
Ячейки объединяют через Таблица → Объединить, границы рисуют кнопкой рамок на панели. Ширину колонок и высоту строк тянут за заголовки — ровно как в табличном редакторе.
Именованные области
Бланк почти никогда не выводится целиком. Его разбивают на области, которые код выводит по очереди: шапка — один раз, строки таблицы — в цикле, подвал с подписями — в конце.
Чтобы назвать область:
- Выделите нужные строки по их номерам слева (или диапазон ячеек).
- Откройте
Таблица → Имена → Назначить имя. - Введите имя латиницей:
Шапка,Строка,Подвал.
Без именованных областей вывести бланк кусками не получится — метод ПолучитьОбласть обращается именно к имени. Сразу закладывайте области под каждую логическую часть бланка.
Параметры для подстановки данных
Там, где в бланк попадут номер, дата или сумма, ставят параметр, а не фиксированный текст:
- Встаньте на ячейку, откройте её свойства (
Таблица → Свойстваили двойной клик по палитре). - В свойстве
Заполнениевыберите значение «Параметр». - В самой ячейке впишите имя параметра, например
НомерДокумента.
Если в одной строке нужно смешать постоянный текст и значение — выбирайте Заполнение = Шаблон и пишите имя параметра в квадратных скобках: Счёт № [НомерДокумента] от [ДатаДокумента].
Вид числа или даты в бланке удобно задать прямо в ячейке, а не в коде. В свойствах ячейки есть поле Формат: через конструктор формата выбирают разделители разрядов, число знаков после запятой, представление даты. Тогда сумма 1234.5 выведется как 1 234,50, а дата — в нужном виде, без ручного Формат() в каждой строке.
Горизонтальное и вертикальное положение текста, перенос по словам и шрифт тоже настраиваются в свойствах ячейки. Это важно для длинных наименований: без переноса по словам они обрежутся по ширине колонки.
Привязываем макет к модулю объекта
Созданный макет сам по себе ничего не печатает — его вызывает код. Логика печати живёт в модуле менеджера объекта (а в простых случаях — в модуле формы или модуле самой обработки).
Минимальная процедура печати выглядит так:
Процедура Печать() Экспорт
ТабДок = Новый ТабличныйДокумент;
Макет = Документы.РеализацияТоваровУслуг.ПолучитьМакет("ПечатнаяФорма");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.НомерДокумента = Номер;
ОбластьШапка.Параметры.ДатаДокумента = Дата;
ТабДок.Вывести(ОбластьШапка);
ТабДок.Показать();
КонецПроцедуры
Разберём по строкам:
Новый ТабличныйДокумент— создаёт пустой лист, в который будем складывать области.ПолучитьМакет("ПечатнаяФорма")— берёт макет по имени из метаданных. Метод доступен у менеджера объекта и внутри модуля объекта.ПолучитьОбласть("Шапка")— достаёт именованную область..Параметры.ИмяПараметра— заполняет параметры, которые вы разметили в ячейках.Вывести(...)— добавляет область в табличный документ.
Имена параметров в коде должны совпадать с именами в макете до буквы и регистра. НомерДокумента и НомерДок — это разные параметры, второй просто останется пустым без всякой ошибки.
В типовых конфигурациях на Библиотеке стандартных подсистем печать устроена сложнее: макет регистрируется в модуле менеджера, а вызывается через общий механизм печати документов. Отдельную кнопку на форме руками там обычно не добавляют — команда печати подхватывается подсистемой автоматически.
Параметры, области и порядок вывода
Когда областей несколько, важен порядок и способ их вывода. Два ключевых метода табличного документа:
Вывести(Область)— ставит область ниже предыдущей, с новой строки.Присоединить(Область)— ставит область справа от предыдущей, в тех же строках.
Табличную часть выводят в цикле. Область Строка получают один раз, а заполняют и выводят на каждой итерации:
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Для Каждого ТекСтрока Из Товары Цикл
ОбластьСтрока.Параметры.Наименование = ТекСтрока.Номенклатура;
ОбластьСтрока.Параметры.Количество = ТекСтрока.Количество;
ОбластьСтрока.Параметры.Сумма = ТекСтрока.Сумма;
ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;
После цикла выводят подвал — итоги и подписи. Итоговую сумму считают в коде заранее и передают параметром:
ИтогоСумма = Товары.Итог("Сумма");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьПодвал.Параметры.Итого = ИтогоСумма;
ТабДок.Вывести(ОбластьПодвал);
Метод Итог("Сумма") у табличной части складывает колонку без отдельного цикла. Так в подвал попадает ровно та сумма, что и в строках, — расхождений из-за ручного суммирования не будет.
💡 Полезные настройки табличного документа перед показом:
ТабДок.ОтображатьСетку = Ложь— убирает служебную сетку на экране.ТабДок.ТолькоПросмотр = Истина— запрещает случайную правку готового бланка.ТабДок.ПолеСверху,ПолеСлеваи т.п. — поля печати в миллиметрах.
Для повторения шапки таблицы на каждом листе задают повторяющиеся области через Таблица → Повторение строк при печати. Это избавляет от ручного вывода заголовка колонок на каждой странице.
Какой тип макета и формат вывода выбрать
Табличный документ закрывает большинство бумажных бланков, но не единственный вариант. Сравним типы макетов по задачам:
| Тип макета | Когда брать | Особенности |
|---|---|---|
| Табличный документ | Счета, акты, накладные, любые печатные формы | Вывод по областям, параметры, печать, PDF, Excel |
| Текстовый документ | Экспорт в текстовые файлы, обмен без форматирования | Нет рамок и стилей, только символы |
| Схема компоновки данных | Отчёты с группировками и итогами | Данные и оформление задаются в СКД, а не кодом |
| HTML-документ | Вывод в веб-форму, e-mail | Поддерживает разметку HTML |
| Графическая/географическая схема | Диаграммы, карты | Узкие задачи, для бланков не используется |
Готовый табличный документ сохраняется в нескольких форматах через Файл → Сохранить как:
- 📄 PDF — для отправки и архива, формат не «плывёт» у получателя.
- 📊 Excel (
.xlsx,.xls) и ODS — когда данные нужно дальше считать. - 🗂
.mxl— родной формат 1С, открывается в самой программе.
Для печати на принтер — Файл → Печать или кнопка на панели. Перед этим стоит заглянуть в Файл → Предварительный просмотр и проверить разбивку по страницам.
Как подключить бланк как внешнюю печатную форму
Чтобы не трогать типовую конфигурацию, бланк оформляют отдельной внешней обработкой с макетом внутри. Для пользователя это та же кнопка печати, но файл .epf хранится отдельно и переживает обновления.
Что нужно сделать в самой обработке:
- Создайте внешнюю обработку
(
Файл → Новый → Внешняя обработка). - Добавьте в неё макет — так же, в ветке
Макеты, тип «Табличный документ». - В модуле обработки опишите экспортную функцию
СведенияОВнешнейОбработке(). Она возвращает структуру, где указаны вид «ПечатнаяФорма», назначение (для каких документов форма доступна) и команда печати. - Напишите саму процедуру печати, которая получает макет и формирует табличный документ.
Подключение в режиме 1С:Предприятия:
- Откройте
Администрирование → Печатные формы, отчёты и обработки. - Включите флаг использования дополнительных обработок, если он выключен.
- Нажмите
Добавить из файлаи выберите.epf. - В карточке проверьте, на каких объектах и в каком разделе появится команда, и сохраните.
Через внешнюю обработку удобно отдавать бланк заказчику: ему не нужен доступ к Конфигуратору, достаточно загрузить один файл. Обновление формы — замена файла той же карточкой.
Расширение конфигурации работает по схожей логике, но макет и команда печати встраиваются в штатный механизм как у типовых объектов. Это аккуратнее внешней обработки, зато требует внимательности при обновлениях платформы.
Частые ошибки при создании бланка и отладка
Большинство проблем с бланком — это не ошибки платформы, а рассинхрон между макетом и кодом. Самый быстрый способ отладки — поставить точку останова на процедуре печати (F9), запустить в режиме отладки и смотреть, что реально попадает в области.
Заполнение стоит «Текст», а не «Параметр». Проверьте оба имени и тип заполнения ячейки.ПолучитьОбласть написано иначе. Откройте макет, выделите строки и проверьте Таблица → Имена.Присоединить вместо Вывести — области накладываются по горизонтали. В цикле вывода строк нужен Вывести.Правку макета в типовой базе на поддержке всегда начинайте с резервной копии. Снятие объекта с поддержки обратимо не всегда, а обновление потом потребует ручного сравнения.
Частые вопросы
Можно ли создать бланк без Конфигуратора?
Чем отличается макет от печатной формы?
Как вставить в бланк логотип или картинку?
Таблица → Рисунки → Картинка. Изображение привяжется к ячейкам и будет печататься вместе с бланком.Почему бланк печатается с лишней сеткой?
ОтображатьСетку.Как сделать, чтобы шапка таблицы повторялась на каждой странице?
Таблица → Повторение строк при печати. При многостраничном выводе заголовок колонок встанет на каждом листе автоматически.