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

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

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

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

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

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

Как пользователю вывести печатную форму из документа

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

Выберите нужную форму — откроется предварительный просмотр табличного документа. Отсюда документ можно отправить на принтер кнопкой с изображением принтера, сохранить в файл (PDF, Excel, HTML) через «Файл → Сохранить копию» или отправить по электронной почте, если в конфигурации настроена учётная запись почты.

Если нужной печатной формы нет в списке, проверьте раздел «Администрирование → Печатные формы, отчеты и обработки»: возможно, дополнительные печатные формы отключены, либо нужная форма подключается как внешняя обработка. Для этого требуются соответствующие права.

Печать документа в типовой конфигурации
  1. 1
    Откройте проведённый документ
  2. 2
    Нажмите кнопку «Печать» и выберите нужную форму из списка
  3. 3
    Проверьте данные в окне предварительного просмотра
  4. 4
    Нажмите кнопку принтера или сохраните файл в нужном формате

Печать уже открытого табличного документа

Когда табличный документ (результат отчёта или печатная форма) уже открыт на экране, вывести его можно стандартными средствами платформы: меню «Файл → Печать» или сочетание клавиш Ctrl+P. Перед печатью полезно открыть «Файл → Предварительный просмотр» и настроить параметры страницы.

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

Как разработчику вывести макет программно

Программный вывод строится в три этапа: получить макет, заполнить его данными, показать или напечатать результат. Макет хранится в конфигурации (у документа, справочника или в ветке «Общие → Макеты») и получается методом ПолучитьМакет().

Типовой код вывода выглядит так: создаётся объект ТабличныйДокумент, из макета последовательно извлекаются области методом ПолучитьОбласть(), параметры областей заполняются через свойство Параметры, затем области выводятся в итоговый документ методом Вывести().

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

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

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

ТабДок.Показать("Печать реализации");

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

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

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

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

Обратите внимание на свойства самого макета: высота и ширина страницы, поля, ориентация, автомасштаб. Если печатная форма «разъезжается» на принтере, чаще всего причина именно в этих настройках, а не в коде.

Вывод макета через внешнюю печатную форму

Если конфигурация типовая и менять её нельзя, макет выводят через внешнюю печатную форму — файл обработки .epf, подключаемый в разделе «Дополнительные отчеты и обработки». Макет в этом случае хранится внутри самой обработки и получается методом ЭтотОбъект.ПолучитьМакет(ИмяМакета).

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

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

Проверка результата и ограничения

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

Учитывайте ограничения платформы: в веб-клиенте прямая печать без диалога недоступна, документ сначала формируется в PDF; на сервере под Linux для корректной печати нужны установленные шрифты, иначе текст может отображаться неверно. Также помните, что табличный документ большого объёма (тысячи строк) формируется заметное время — для таких задач предусмотрите постраничный вывод.

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

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

Заполнение параметров
Норма

Все ячейки с данными заполнены, пустых параметров нет

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

Пустые ячейки или текст вида [ИмяПараметра] в выведенном документе

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

Форма помещается на лист, колонтитулы и итоги на месте

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

Часть таблицы уходит на следующий лист по ширине

Соответствие данных
Норма

Итоги в подвале совпадают с итогами табличной части документа

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

Суммы расходятся — значит, цикл вывода строк неполный

Часто задаваемые вопросы

Почему кнопка «Печать» в документе неактивна?

Чаще всего документ не записан или не проведён — многие печатные формы доступны только для проведённых документов. Также проверьте права пользователя и не отключены ли печатные формы в настройках дополнительных отчетов и обработок.

Как вывести макет сразу в PDF без открытия на экране?

Используйте метод табличного документа Записать(ИмяФайла, ТипФайлаТабличногоДокумента.PDF) — файл сохранится без показа пользователю. Это стандартный способ для автоматической рассылки документов по почте.

Ошибка «Область не найдена» при выводе — что делать?

Имя области в коде должно точно совпадать с именем, назначенным в макете через «Таблица → Имена». Проверьте пробелы, регистр букв и то, что область создана именно в том макете, который получаете методом ПолучитьМакет().

Можно ли изменить печатную форму без программирования?

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

Почему при печати из веб-клиента документ выглядит иначе?

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

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

Организуйте цикл по массиву ссылок: для каждой ссылки формируйте области в общий табличный документ, а между документами вставляйте разрыв страницы методом ВывестиГоризонтальныйРазделительСтраниц(). В типовых конфигурациях эту логику уже реализует менеджер печати.

Итог

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

Пользователь выводит макет через кнопку «Печать» в документе или Ctrl+P в открытом табличном документе. Разработчик — программно: ПолучитьМакет → ПолучитьОбласть → заполнение параметров → Вывести → Показать или Напечатать. Типовые макеты лучше не править напрямую, а использовать внешние печатные формы, и всегда проверять результат на предпросмотре.