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