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