Правка печатных форм 1С: от режима пользователя до кода

· 9 мин

Содержание

Поменять макет печатной формы в типовой 1С 8.3 проще всего прямо в режиме Предприятия: в БП 3.0 и ЗУП 3.1 откройте Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм, найдите нужную форму и откройте её на редактирование. Правка сохранится в базе, конфигурация останется на поддержке, обновления пройдут без конфликтов.

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

Что такое макет и когда его стоит менять

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

Кроме табличных, в конфигурации бывают и другие макеты:

  • 📄 табличный документ — счета, акты, накладные, большинство печатных форм;
  • 📝 офисный документ (DOCX или ODT) — договоры и письма в типовых на БСП;
  • 🧩 схема компоновки данных — основа отчётов;
  • 🔤 текстовый и двоичный — шаблоны текстов, картинки, служебные файлы.

Менять макет обычно приходится по таким причинам:

  • 🖋 добавить логотип, печать, факсимиле подписи;
  • 📐 переставить или растянуть колонки, чтобы документ влез на лист;
  • ➕ вывести дополнительный реквизит (номер договора, склад, комментарий);
  • ✏️ заменить формулировки в тексте договора или счёта;
  • 🌐 подготовить форму под требования конкретного покупателя.

Какой способ изменения макета выбрать

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

СпособКто делаетЧто можно поменятьЧто с обновлениями
Редактор макетов в режиме ПредприятияПользователь с правами администратораОформление, тексты, порядок существующих полейПравка сохраняется, конфигурация не трогается
Внешняя печатная форма (.epf)ПрограммистЛюбую печатную форму целиком, с новыми даннымиНе мешает обновлению
Расширение конфигурацииПрограммистМакет и код его заполненияОбычно переживает обновление, иногда требует проверки
Правка в КонфигуратореПрограммистВсёКаждое обновление — сравнение и объединение
Что вам нужно сделать с печатной формой?

Правка печатной формы в режиме 1С:Предприятие

Этот способ работает в конфигурациях на Библиотеке стандартных подсистем: БП 3.0, ЗУП 3.1, УТ 11, КА, ERP, УНФ. Права нужны административные или специальная роль на изменение макетов.

КонфигурацияГде список макетов
Бухгалтерия предприятия 3.0Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм
ЗУП 3.1Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм
Управление торговлей 11НСИ и администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм

Пошагово

  1. Откройте список макетов по пути из таблицы.
  2. Найдите форму поиском по названию: «Счет на оплату», «Акт», «ТОРГ-12». Список длинный, искать глазами неудобно.
  3. Откройте макет двойным щелчком. Табличный макет откроется во встроенном редакторе, офисный — в Word или LibreOffice, установленном на компьютере.
  4. Внесите правки: шрифт, ширина колонок, границы, тексты, картинка.
  5. Сохраните и закройте редактор. Строка в списке пометится как изменённая.
  6. Распечатайте любой документ этого вида и проверьте результат.

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

Логотип и подпись руководителя в счёт на оплату в БП 3.0 проще добавить без редактора: они задаются в карточке организации, в разделе с логотипом и факсимиле. Редактор нужен, если требуется что-то сверх этого.

Как вернуть типовой макет

Если правка не удалась, в списке макетов выделите строку и выберите команду возврата к стандартному макету. Изменённая копия перестанет использоваться, документ будет печататься по заводской заготовке.

Не трогайте в редакторе текст в квадратных скобках и ячейки с параметрами. Это места, куда программа подставляет данные. Удалите параметр — и в документе пропадёт сумма или наименование товара.

Как поменять макет в Конфигураторе

Этот путь нужен для самописных конфигураций или когда правок много и они затрагивают код.

  1. Сделайте резервную копию: Администрирование → Выгрузить информационную базу в Конфигураторе.
  2. Откройте дерево конфигурации (Конфигурация → Открыть конфигурацию).
  3. Найдите объект: например, Документы → РеализацияТоваровУслуг, ветка Макеты.
  4. Если конфигурация на поддержке и правка запрещена, включите возможность изменения: Конфигурация → Поддержка → Настройка поддержки → Включить возможность изменения.
  5. Откройте макет двойным щелчком и отредактируйте.
  6. Сохраните и обновите конфигурацию базы данных (F7).

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

Расширение конфигурации

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

Порядок такой:

  1. В Конфигураторе: Конфигурация → Расширения конфигурации, добавить новое расширение.
  2. Заимствовать нужный документ и модуль, где формируется печать.
  3. Создать в расширении свой макет и написать перехват, который выводит его.
  4. Обновить конфигурацию базы данных, проверить печать.

Расширение подключается и к рабочей базе через Администрирование → Печатные формы, отчеты и обработки → Расширения в режиме Предприятия, файлом .cfe.

Внешняя печатная форма

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

Программное изменение макетов на встроенном языке

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

Функция ПечатьЗаявки(ДокументСсылка) Экспорт

    ТабДок = Новый ТабличныйДокумент;
    Макет = Документы.Заявка.ПолучитьМакет("ПечатнаяФорма");

    ОбластьШапка  = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");

    ОбластьШапка.Параметры.Номер = ДокументСсылка.Номер;
    ОбластьШапка.Параметры.Дата  = Формат(ДокументСсылка.Дата, "ДЛФ=D");
    ТабДок.Вывести(ОбластьШапка);

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

    ОбластьПодвал.Параметры.Итого = Итого;
    ТабДок.Вывести(ОбластьПодвал);

    ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    ТабДок.АвтоМасштаб = Истина;

    Возврат ТабДок;

КонецФункции

Что здесь важно:

  • 🔹 Параметры.Заполнить(СтрокаТЧ) подставит значения во все параметры, чьи имена совпадают с колонками строки: «Номенклатура», «Количество», «Сумма». Лишние колонки он просто пропустит.
  • 🔹 Прямое присваивание Параметры.Номер = … упадёт, если в области нет параметра с таким именем.
  • 🔹 АвтоМасштаб = Истина ужимает документ по ширине листа, это быстрый способ вылечить вылезающую колонку.

В типовых конфигурациях на БСП макет берите не напрямую, а через УправлениеПечатью.МакетПечатнойФормы("Документ.Заявка.ПечатнаяФорма"). Эта функция сначала смотрит, нет ли пользовательской копии макета, и только потом берёт заводской. Если обойти её через ПолучитьМакет(), правки пользователя из режима Предприятия перестанут работать.

Нюансы табличных макетов

Большинство проблем с печатью возникает не из-за кода, а из-за разметки самого макета.

Именованные области

Области бывают горизонтальные (группа строк) и вертикальные (группа колонок). Чтобы задать имя, выделите строки или колонки и выберите Таблица → Имена → Назначить имя. Имя должно совпадать с тем, что запрашивает код в ПолучитьОбласть(), буква в букву.

Пересечение горизонтальной и вертикальной области получают через вертикальную черту: Макет.ПолучитьОбласть("Строка|Колонка"). Так строят печать с переменным числом колонок, например по размерам или складам.

Заполнение ячейки

У каждой ячейки есть свойство «Заполнение» с тремя вариантами:

ЗначениеЧто в ячейкеПример
ТекстПостоянный текст, печатается как есть«Итого:»
ПараметрИмя параметра, вместо него подставляется значениеСумма
ШаблонТекст с параметрами в квадратных скобкахСчет № [Номер] от [Дата]

Печать на листе

  • 📏 Для шапки таблицы, которая должна повторяться на каждой странице, включите у области повтор при печати в свойствах табличного документа.
  • 🧾 Чтобы строки не рвались пополам между листами, перед выводом проверяйте ТабДок.ПроверитьВывод() и вставляйте разрыв страницы ТабДок.ВывестиГоризонтальныйРазделительСтраниц().
  • 🔠 Длинный текст в узкой ячейке обрезается. Включите перенос по словам в свойствах ячейки и уберите фиксированную высоту строки.

Перед правкой сохраните исходный макет файлом .mxl: в редакторе табличного документа есть сохранение копии. Если что-то пойдёт не так, его можно открыть и сравнить по ячейкам.

Изменение макетов в разных версиях 1С

Механика табличного макета с областями и параметрами одинакова в 8.2 и 8.3. Различается то, где пользователь может его править.

  • 1С 8.3, интерфейс «Такси», типовые на БСП. Список «Макеты печатных форм», правки хранятся в базе отдельно от конфигурации, поддерживаются офисные макеты DOCX.
  • 1С 8.3, самописные конфигурации без БСП. Пользовательского редактора макетов нет, правка только в Конфигураторе или через расширение.
  • 1С 8.2, обычные формы. Расширений нет, они появились только в 8.3.6. Остаются внешние печатные формы и правка в Конфигураторе.

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

Ошибки при изменении макета

Диагностика: выберите симптом

Инструменты, которые ускоряют работу с макетами

  • 🛠 Конструктор печати в Конфигураторе. Он создаёт для документа макет с областями и процедуру печати по выбранным реквизитам. Хорошая заготовка для самописной формы, дальше её дорабатывают руками.
  • 🔍 Сравнение и объединение конфигураций показывает различия макетов по ячейкам. Пригодится, когда типовой макет обновился, а у вас была своя версия.
  • 📦 Внешние печатные формы удобно держать в одной базе и раздавать другим через файл .epf.
  • 🧪 Тестовая копия базы: макет правят и проверяют на копии, а в рабочую переносят готовый результат.

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

Слетит ли изменённый макет после обновления конфигурации?
Нет. Правка из режима Предприятия хранится в базе отдельно и продолжает использоваться. Но если в новом релизе изменили заводской макет, ваша копия может разойтись с кодом, и форму стоит перепроверить.
Можно ли перенести изменённый макет в другую базу?
Да. Сохраните его файлом .mxl из редактора, а в другой базе откройте тот же макет и вставьте содержимое. Для массового переноса удобнее внешняя печатная форма.
Почему в списке макетов нет нужной формы?
Форма может быть внешней (подключена через дополнительные обработки) или формироваться кодом без макета. Тогда её меняют в самой обработке или через расширение.
Кому дать право редактировать макеты?
Обычно это доступно полным правам и администраторам. Рядовому пользователю отдельную роль лучше не выдавать: ошибка в макете сломает печать у всех.
Чем табличный макет отличается от офисного?
Табличный правится в редакторе 1С и печатается одинаково на любом компьютере. Офисный (DOCX) редактируется в Word и удобен для договоров с длинным текстом, но для правки нужен установленный текстовый редактор.