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

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

Как в 1С создать печатную форму документа

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

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

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

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

Выбор способа: внутренняя или внешняя печатная форма

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

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

Сравнение вариантов

Внутренняя форма в конфигураторе

Подходит для самописных и дорабатываемых конфигураций. Требует прав на изменение конфигурации и усложняет обновление типовых решений.

Внешняя печатная форма (.epf)

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

Изменение существующего макета

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

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

Откройте конфигуратор, найдите нужный документ в дереве конфигурации, раскройте ветку «Макеты» и добавьте новый макет типа «Табличный документ». Задайте макету понятное имя, например «МакетСчетНаОплату» или «ПФ_MXL_АктВыполненныхРабот» — в типовых конфигурациях принят префикс ПФ_MXL_ для печатных форм.

Макет строится из именованных областей: выделите диапазон строк и задайте имя области (например, «Шапка», «СтрокаТовары», «Подвал»). Внутри ячеек разместите текст, а в местах, куда должны подставляться данные, — параметры в квадратных скобках, например [НомерДокумента] или [Покупатель]. Тип заполнения ячейки при этом должен быть «Параметр» (или «Шаблон», если нужно комбинировать текст и параметры в одной ячейке).

Типичный набор областей для документа с табличной частью: «Шапка» (номер, дата, контрагент), «ЗаголовокТаблицы» (названия колонок), «Строка» (одна строка табличной части, повторяется в цикле) и «Подвал» (итоги, подписи). Если документ может не поместиться на одну страницу, область строки должна выводиться в цикле, а итоги — накапливаться в переменных.

Код вывода печатной формы в типовой конфигурации (БСП)

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

Затем в процедуре Печать формируется сам табличный документ: получается макет, выбираются данные по массиву ссылок документов, области заполняются и выводятся. Результат передаётся в коллекцию печатных форм через УправлениеПечатью.СведенияОПечатнойФорме и УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию.

bsl
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "МакетСчетНаОплату");
    Если ПечатнаяФорма <> Неопределено Тогда
        ПечатнаяФорма.ТабличныйДокумент = СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати);
    КонецЕсли;
КонецПроцедуры

Для каждого документа из массива получайте макет через ПолучитьМакет("МакетСчетНаОплату"), заполняйте параметры областей (Шапка.Параметры.НомерДокумента = ...), выводите области методом ТабличныйДокумент.Вывести(Область) и не забывайте вызвать ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц() между документами. Для объектов печати используйте УправлениеПечатью.УстановитьОбластьПечати — это нужно, чтобы при печати нескольких документов можно было выбрать конкретный.

Печать без БСП: прямой вывод в модуле объекта

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

Логика та же: получить макет, заполнить параметры шапки, в цикле по табличной части вывести строки, затем вывести подвал. Данные берутся либо из реквизитов объекта (ЭтотОбъект.Номер, ЭтотОбъект.Контрагент), либо запросом — запрос предпочтительнее, если нужны данные связанных объектов (например, банковский счёт организации или ответственное лицо), так как он выполняется одним обращением к базе.

Порядок действий при прямом выводе
  1. 1
    Создайте макет с областями Шапка, Строка, Подвал и параметрами в ячейках
  2. 2
    В модуле объекта добавьте функцию Печать() с получением макета и заполнением областей
  3. 3
    Выведите строки табличной части в цикле, накапливая итоги в переменных
  4. 4
    Добавьте на форму кнопку «Печать», вызывающую функцию и открывающую результат
  5. 5
    Проверьте вывод на документе с одной строкой и с большим числом строк

Внешняя печатная форма без изменения конфигурации

Внешняя печатная форма создаётся как внешняя обработка (Файл → Новый → Внешняя обработка). В модуле объекта обработки обязательно должна быть функция СведенияОВнешнейОбработке(), которая возвращает структуру с параметрами регистрации: вид «ПечатнаяФорма», назначение (массив с именем объекта, например «Документ.РеализацияТоваровУслуг»), список команд печати с идентификаторами макетов.

Макет добавляется в саму обработку, а процедура Печать реализуется по тому же принципу, что и в типовой конфигурации, — БСП вызывает её при нажатии кнопки. Готовый файл .epf подключается в режиме предприятия: «Администрирование» → «Печатные формы, отчеты и обработки» → «Дополнительные отчеты и обработки». После добавления обработки кнопка появляется в меню «Печать» документа у всех пользователей с доступом.

Проверка результата и типичные ошибки

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

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

Типичные ошибки
01
Несовпадение имени параметра в макете и в коде — ячейка выводится пустой без сообщения об ошибке
02
Идентификатор команды печати не совпадает с именем макета — кнопка есть, но форма не формируется или выводится чужой макет
03
Нет разделителя страниц между документами — при печати нескольких документов они сливаются на одном листе
04
Итоги считаются по табличной части объекта, а не по выведенным строкам — при отборе строк итоги не сходятся
05
Тестирование только под полными правами — у пользователей форма падает с ошибкой доступа
06
Редактирование макета типовой конфигурации вместо внешней формы — доработка теряется при обновлении

Когда стоит привлечь специалиста

Простую форму с одной табличной частью можно сделать самостоятельно по этой инструкции. Но есть ситуации, где самостоятельная доработка рискованна: формы с юридически значимыми требованиями (счета-фактуры, УПД, ТОРГ-12 — их структура регламентирована, и ошибка ведёт к отказу в вычете НДС или претензиям контрагентов), печать по данным нескольких документов, механизмы с картинками (подписи, печати, штрихкоды) и двумерные макеты сложной структуры.

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

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

Кнопка в меню «Печать»
Норма

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

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

Кнопка есть только у администратора или дублируется

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

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

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

Видны пустые места или текст вида [ИмяПараметра]

Многостраничный вывод
Норма

Строки переносятся, заголовок таблицы и итоги выглядят корректно

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

Строки обрезаются или итоги оказываются посреди страницы

Печать нескольких документов
Норма

Каждый документ начинается с новой страницы

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

Документы выводятся подряд без разрыва

Итог

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

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

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

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

Частично. Если нужно только изменить надписи или добавить поле в существующую форму, достаточно отредактировать макет в конфигураторе или скопировать типовую внешнюю форму и поправить её макет. Но любое новое поле, которого нет среди текущих параметров, потребует доработки кода заполнения.

Почему внешняя печатная форма не появляется в меню «Печать»?

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

Как вывести в форму картинку, например подпись директора?

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

Можно ли сделать форму в формате Word или Excel вместо табличного документа?

Да, в БСП поддерживаются макеты типа «Документ Microsoft Word» и «Таблица Microsoft Excel» (офисные макеты). Они заполняются через механизм макетов офисных документов, но требуют установленного офисного пакета у пользователя и сложнее в отладке. Для большинства задач достаточно стандартного табличного документа.

Что делать, если после обновления конфигурации кнопка печати пропала?

Если форма была внутренней, при обновлении доработки могли быть затёрты — восстановите их из копии или хранилища. Если форма внешняя, проверьте, не изменился ли идентификатор команды или структура БСП в новой версии. Именно поэтому внешние формы предпочтительнее: они не зависят от обновления конфигурации напрямую.