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

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

Как добавить в макет печатной формы в 1С:ЗУП

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

Печатные формы в 1С:ЗУП — это приказ о приёме на работу, расчётный листок, трудовой договор, справка о доходах и десятки других документов. Каждая из них строится на основе макета — шаблона табличного документа, в который программа подставляет данные из базы. Когда нужно добавить в форму новое поле, логотип, дополнительную строку или изменить формулировку, править приходится именно макет.

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

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

Как устроены печатные формы в ЗУП и где искать макет

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

Макет состоит из именованных областей (шапка, строка, подвал) и ячеек двух типов: обычный текст и параметры вида [ФИОСотрудника] или <ДатаПриказа>. При формировании документа программа последовательно выводит области и заполняет параметры значениями. Если параметр в макете есть, а в коде его заполнение не предусмотрено, на печать выйдет пустое место или сам текст параметра.

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

Сценарий 1: правка макета в пользовательском режиме

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

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

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

Сценарий 2: добавление нового параметра с данными

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

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

Маршрут решения

Как выбрать способ доработки

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

Сценарий 3: внешняя печатная форма

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

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

bsl
Функция СведенияОВнешнейОбработке() Экспорт
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
	ПараметрыРегистрации.Назначение.Добавить("Документ.ПриемНаРаботу");
	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	НоваяКоманда.Представление = НСтр("ru = 'Приказ о приеме (наш шаблон)'");
	НоваяКоманда.Идентификатор = "ПриказОПриемеНаш";
	НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
	НоваяКоманда.ПоказыватьОповещение = Истина;
	Возврат ПараметрыРегистрации;
КонецФункции

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

После подключения обработки новая команда появится в меню «Печать» документа рядом с типовыми. Рекомендуется давать ей отличное название, чтобы пользователи не путали доработанную форму со стандартной.

Сценарий 4: правка макета в конфигураторе

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

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

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

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

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

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

Новый параметр на печати
Норма

Выводится реальное значение из документа

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

Пусто или виден текст вида [ИмяПараметра] — параметр не заполняется в коде

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

Подписи и таблицы не разрываются, поля соблюдены

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

Часть содержимого уехала на лишнюю страницу

Печать у других пользователей
Норма

Форма доступна и формируется под их правами

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

Команда не видна или возникает ошибка прав доступа

Другие формы документа
Норма

Типовые формы работают как раньше

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

После правки сломалась соседняя печатная форма

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

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

Ограничения и границы самостоятельной работы

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

Отдельно учитывайте регламентированные формы: расчётные листки, справки о доходах, отчётность в фонды. Их состав и структура могут быть установлены нормативными документами, и произвольное изменение таких форм недопустимо — дорабатывайте только внутренние документы организации.

Итог

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

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

Частые вопросы

Почему кнопки «Изменить макет» нет на моей печатной форме?

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

Добавил параметр в макет, но на печати пусто. Что не так?

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

Не сломаются ли обновления ЗУП после изменения макета?

Если макет изменён в пользовательском режиме или через внешнюю печатную форму — обновления пройдут штатно. Если изменён типовой макет в конфигураторе, при обновлении этот объект будет сравниваться с новой версией поставщика, и ваши правки придётся переносить вручную. Поэтому предпочтителен вариант с внешней формой.

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

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

Можно ли вывести в форму логотип организации?

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

Чем расширение конфигурации лучше прямого изменения?

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