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

· 10 мин

Содержание

Самое частое заблуждение: чтобы поправить печатную форму, нужно обязательно лезть в Конфигуратор и снимать типовую конфигурацию с поддержки. Это не так. В типовых решениях на базе БСП (Бухгалтерия 3.0, ЗУП 3.1, Управление торговлей 11) макет печатной формы можно изменить прямо в режиме 1С:Предприятие, не трогая конфигурацию.

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

Ниже разберём, где лежат макеты, какими они бывают и как изменить каждый тип, не сломав обновляемость базы.

Где хранятся макеты и какими они бывают

Макет — это шаблон, по которому формируется печатная форма, текстовый файл или другой вывод. Он принадлежит либо конкретному объекту (документу, справочнику, отчёту, обработке), либо лежит в ветке общих макетов.

В Конфигураторе макеты видны в дереве метаданных: разверните объект, например документ РеализацияТоваровУслуг, и найдите подветку Макеты. Общие макеты — в корне дерева, в ветке Общие → Общие макеты.

Типы макетов, которые встречаются чаще всего:

  • 📄 Табличный документ — основной тип для печатных форм: накладные, счета, акты.
  • 📝 Текстовый документ — для выгрузок в текстовый файл, сообщений, простых шаблонов.
  • 📊 Схема компоновки данных (СКД) — макет отчёта на системе компоновки.
  • 🔧 Двоичные данные — вложенные файлы: картинки, внешние шаблоны, подписи.
  • 🖼 HTML-документ, географическая и графическая схемы — реже, под конкретные задачи.

Если задача — поправить готовую печатную форму (сдвинуть логотип, добавить строку, поменять текст), в 90% случаев это табличный макет и делается без программирования.

Прежде чем что-то менять, определите уровень доступа: есть ли у вас Конфигуратор, стоит ли база на поддержке и нужно ли сохранить автообновление. От этого зависит способ — быстрее всего сориентироваться по схеме ниже.

Что и где нужно изменить в макете?

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

Отдельно про расширения конфигурации : механизм появился в платформе 8.3.6 и стал основным способом дорабатывать типовые решения. Вы создаёте отдельный файл-расширение, добавляете в него заимствованный макет и правите его там. Типовая конфигурация при этом остаётся нетронутой и на поддержке, а при обновлении расширение в большинстве случаев продолжает работать без правок. Для макетов печатных форм это предпочтительный вариант, когда правка в Предприятии уже не вытягивает, а ломать обновляемость не хочется.

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

Это самый безопасный способ для бухгалтера или пользователя без Конфигуратора. Работает в конфигурациях на БСП.

  1. Откройте документ и нажмите кнопку печати нужной формы — откроется предпросмотр табличного документа.
  2. В командной панели предпросмотра нажмите Ещё и выберите пункт изменения макета (в разных релизах он называется «Изменить макет» или находится в подменю настройки печати).
  3. Откроется редактор табличного документа. Меняйте текст в ячейках, двигайте границы, добавляйте строки.
  4. Сохраните изменённый макет. Система пометит его как пользовательский и будет использовать вместо типового.

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

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

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

Открытие и правка макета в Конфигураторе

Когда нужен полный контроль, макет правят в Конфигураторе.

Откройте базу в режиме Конфигуратора, найдите объект в дереве, разверните ветку Макеты и откройте нужный макет двойным щелчком. Для табличного макета откроется редактор табличного документа, для текстового — текстовый редактор.

Если конфигурация на поддержке (а типовая всегда на поддержке), редактирование заблокировано — объекты показаны серым, замок закрыт. Чтобы править, включите возможность изменения:

  1. Меню Конфигурация → Поддержка → Настройка поддержки.
  2. Нажмите Включить возможность изменения и подтвердите.
  3. Для точечной правки разумно оставить правило «объект поставщика редактируется с сохранением поддержки» — тогда при обновлении система попробует объединить ваши и типовые изменения.

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

После правки сохраните конфигурацию и выполните Обновить конфигурацию базы данных (F7) — до этого изменения в рабочую базу не попадут.

Макеты внешних обработок и отчётов (файлы .epf и .erf) правятся проще: поддержка к ним не применяется. Откройте файл в Конфигураторе через Файл → Открыть, найдите в структуре обработки ветку макетов и редактируйте табличный или текстовый макет так же, как встроенный. Обновлять конфигурацию базы при этом не нужно — изменения живут внутри самого файла обработки. Это удобно, когда печатную форму нужно переносить между базами или отдавать клиенту отдельным файлом.

Как редактируют текстовые макеты

Текстовый макет — это документ с обычным текстом и параметрами в квадратных скобках, например [НомерДокумента] или [Дата]. При формировании программа подставляет в них значения.

Что обычно делают с текстовым макетом:

  • меняют постоянный текст — просто правят строки в редакторе;
  • добавляют новый параметр — вписывают [ИмяПараметра] в нужное место, а затем заполняют его из кода;
  • делят макет на области, чтобы выводить фрагменты по отдельности (шапка, строка, подвал).

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

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

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

Табличные макеты: области, параметры и ячейки

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

Ключевые элементы, которыми вы управляете:

ЭлементЧто этоГде настраивается
ОбластьИменованный блок строк или колонокВыделить строки → меню Таблица, назначить имя
Параметр ячейкиМесто, куда подставляется значение из кодаСвойства ячейки → Заполнение = Параметр
ШаблонТекст с параметрами внутри строкиСвойства ячейки → Заполнение = Шаблон
ОформлениеШрифт, границы, фон, объединение ячеекПанель форматирования и свойства ячейки

Чтобы ячейка выводила значение из данных, в её свойствах задайте Заполнение = Параметр, а в текст впишите имя параметра. Если Заполнение = Шаблон, в тексте можно смешивать постоянные слова и параметры в квадратных скобках.

Типовой порядок правки табличного макета:

  1. Выделите ячейку или диапазон, откройте свойства (Alt+Enter или правая кнопка → свойства).
  2. Для статичного текста оставьте Заполнение = Текст и впишите нужные слова.
  3. Для динамического значения поставьте Заполнение = Параметр и задайте имя.
  4. Настройте границы, объединение, выравнивание через панель форматирования.
  5. При добавлении новых строк проверьте, что они входят в нужную именованную область.

Новый параметр в макете сам по себе ничего не выведет. Его нужно заполнить в коде печати: Область.Параметры.ИмяПараметра = Значение. Если параметр не заполнить, ячейка останется пустой.

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

Если в одной печатной форме несколько вариантов вывода (например, с НДС и без), не плодите отдельные макеты — сделайте в одном макете несколько областей и выводите нужную по условию. Так форму проще поддерживать.

Программное изменение макета из кода

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

Минимальный пример вывода табличного макета:

Макет = Документы.РеализацияТоваровУслуг.ПолучитьМакет("ПечатьСчета");

ТабДок = Новый ТабличныйДокумент;

ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.НомерДокумента = Объект.Номер;
ОбластьШапка.Параметры.ДатаДокумента = Объект.Дата;
ТабДок.Вывести(ОбластьШапка);

ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Для Каждого ТекСтрока Из Объект.Товары Цикл
    ОбластьСтрока.Параметры.Номенклатура = ТекСтрока.Номенклатура;
    ОбластьСтрока.Параметры.Количество   = ТекСтрока.Количество;
    ОбластьСтрока.Параметры.Сумма         = ТекСтрока.Сумма;
    ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;

ТабДок.Показать();

Разберём шаги:

  • ПолучитьМакет берёт макет у менеджера объекта по его имени.
  • ПолучитьОбласть возвращает именованную область, с которой можно работать.
  • через Область.Параметры.Имя заполняются параметры ячеек;
  • Вывести добавляет область в итоговый табличный документ;
  • строки с повторяющимися данными выводятся в цикле по табличной части.

Имя макета в ПолучитьМакет должно точно совпадать с именем в дереве метаданных, а имена параметров — с теми, что заданы в ячейках. Расхождение в одном символе приведёт к ошибке или пустому значению.

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

Правка макетов в облаке и 1С:Fresh

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

Доступные способы в облаке:

  • Правка печатной формы в Предприятии — как описано выше, через «Ещё → Изменить макет». Работает и в облаке.
  • Внешние печатные формы — подключаются через раздел Администрирование → Печатные формы, отчёты и обработки (название раздела в разных конфигурациях близко). Готовую внешнюю обработку загружают в справочник дополнительных обработок и привязывают к документу.
  • Расширения — в ряде облачных тарифов можно подключать расширения конфигурации, но набор прав ограничен политикой сервиса.

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

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

Частые ошибки при редактировании макетов

Ошибки, на которые уходит больше всего времени:

  • 🔴 Параметр добавили в макет, но не заполнили в коде. Ячейка выводится пустой. Проверьте, что имя параметра есть и в ячейке, и в строке Область.Параметры....
  • 🔴 Изменили макет, но не обновили конфигурацию базы. В Конфигураторе правка видна, а в Предприятии — нет. Нажмите F7 (Обновить конфигурацию базы данных).
  • 🔴 Строку добавили вне именованной области. Она не попадает в печать, потому что код выводит только области. Проверьте границы области.
  • 🔴 Сняли всю конфигурацию с поддержки ради одной правки. База теряет автообновление. Для точечной задачи хватало расширения или правки в Предприятии.
  • 🔴 Несовпадение имени макета в коде и в метаданных. ПолучитьМакет падает с ошибкой. Имя чувствительно к регистру и пробелам.

При правке табличного макета частая причина «съехавшей» формы — объединённые ячейки. Перед тем как двигать границы колонок, проверьте, какие ячейки объединены в соседних строках.

Безопасная правка макета
Выполнено: 0 / 6

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

Можно ли редактировать макет без Конфигуратора?
Да. Печатные формы в типовых конфигурациях на БСП правятся прямо в 1С:Предприятии через «Ещё → Изменить макет». Для этого Конфигуратор и права разработчика не нужны.
Сломается ли обновление, если я поправлю макет?
Если правили печатную форму в Предприятии или через расширение — нет, конфигурация остаётся на поддержке. Автообновление ломает только полное снятие конфигурации с поддержки.
Почему новая колонка в макете выводится пустой?
Параметр добавлен в ячейку, но не заполнен в коде печати, либо имя параметра в макете и в коде не совпадает. Сверьте имена буквально, с учётом регистра.
Как вернуть типовой макет после правок?
В режиме Предприятия в редакторе макета есть возврат к типовому варианту. В Конфигураторе при включённой поддержке объект можно вернуть к поставке через настройку поддержки.
Можно ли поправить макет в 1С:Fresh?
Печатную форму — да, через правку макета в Предприятии. Доработку сложнее делают внешней печатной формой, которую подключают через раздел администрирования дополнительных обработок.