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