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

Разработка и Конфигурация · 10 мин

Как изменить область макета в 1С

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

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

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

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

Что такое область макета и какие они бывают

Область макета — это именованный диапазон ячеек табличного документа. Именно к ней обращается код методом ПолучитьОбласть("ИмяОбласти"), заполняет параметры и выводит в результирующий документ. Без имени область программно недоступна — вывести её штатными средствами нельзя.

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

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

Как открыть макет и найти нужную область

Откройте конфигуратор и найдите нужный объект в дереве конфигурации. Макеты документа находятся в ветке «Документы — ИмяДокумента — Макеты», общие макеты — в ветке «Общие — Общие макеты». Двойной щелчок по макету открывает редактор табличного документа.

Имена существующих областей отображаются в левой части редактора, рядом с номерами строк, — если включён показ имён. Если имена не видны, включите их через меню «Таблица — Имена — Отображать именованные строки/колонки» или сочетанием клавиш Ctrl + Shift + N. Клик по имени области выделяет весь её диапазон.

Если макетов несколько и непонятно, какой используется, откройте модуль менеджера объекта или команду печати и найдите строку вида ПолучитьМакет("ИмяМакета") — она покажет точное имя нужного макета.

Как изменить содержимое и границы области

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

Чтобы изменить границы существующей области, сначала удалите её имя: выделите область и выберите «Таблица — Имена — Убрать имя». Затем выделите новый диапазон строк или колонок и назначьте имя заново через «Таблица — Имена — Назначить имя». Имя должно быть уникальным в пределах макета и соответствовать правилам имён идентификаторов — без пробелов и спецсимволов.

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

Порядок действий
  1. 1
    Откройте конфигуратор и найдите нужный макет в дереве конфигурации
  2. 2
    Включите отображение имён областей (Ctrl+Shift+N)
  3. 3
    Выделите область, при необходимости уберите старое имя и назначьте новое на нужный диапазон
  4. 4
    Отредактируйте ячейки: текст, параметры, оформление
  5. 5
    Сохраните макет и обновите конфигурацию базы данных (F7)
  6. 6
    Сформируйте печатную форму и проверьте результат

Изменение области программно

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

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

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

ОбластьШапка.Параметры.НомерДокумента = НомерДок;

ТабДок.Вывести(ОбластьШапка);

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

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

Работа с параметрами и шаблонами внутри области

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

Шаблон удобен, когда параметр нужно встроить внутрь предложения: например, «Договор № [НомерДоговора] от [ДатаДоговора]». Тип заполнения при этом — «Шаблон». Ошибка в имени параметра внутри скобок приведёт к тому, что текст выведется как есть, без подстановки.

Свойство «ПараметрРасшифровки» позволяет сделать ячейку интерактивной — по двойному щелчку в готовом табличном документе пользователь получит связанное значение, например откроет документ-основание.

Изменение макета без снятия конфигурации с поддержки

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

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

Третий вариант — расширение конфигурации: макет заимствуется в расширение и изменяется там. Основная конфигурация остаётся на поддержке, а обновления проходят штатно.

Сравнение вариантов

Правка типового макета

Быстро, но требует снятия с поддержки и усложняет обновления

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

Не трогает конфигурацию; нужно регистрировать обработку и поддерживать её отдельно

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

Сохраняет поддержку и обновляемость; требует аккуратности при изменении типовых макетов в новых релизах

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

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

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

Типичные ошибки
01
Изменён макет объекта, а форма берёт общий макет — правки не видны
02
Конфигурация базы данных не обновлена — в предприятии старая версия макета
03
Область переименована, а код не исправлен — ошибка при ПолучитьОбласть()
04
Новая строка добавлена за границами области — она не попадает в вывод
05
Опечатка в имени параметра — пустые значения в печатной форме
Контрольные точки

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

Имя области в макете
Норма

Совпадает со строкой в ПолучитьОбласть()

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

Имена различаются — будет ошибка выполнения

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

Все параметры заполнены, оформление корректно

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

Пустые поля, съехавшие колонки

Обновление конфигурации БД
Норма

Выполнено через F7 без ошибок

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

Изменения видны только в конфигураторе

Итог

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

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

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

Как переименовать область макета, не сломав печать?

Назначьте новое имя диапазону через «Таблица — Имена», затем найдите в коде все обращения ПолучитьОбласть() со старым именем и исправьте их. Удобно использовать глобальный поиск по конфигурации (Ctrl+Shift+F) по старому имени области.

Почему изменения в макете не видны в режиме предприятия?

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

Можно ли изменить макет без конфигуратора?

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

Как добавить новую область в макет?

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

Что делать, если область выводится с пустыми параметрами?

Проверьте, что тип заполнения ячейки — «Параметр» или «Шаблон», имя параметра совпадает с именем в коде, а само значение в коде реально заполняется. Проверить значения удобно отладчиком в точке перед вызовом Вывести().

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

Если конфигурация на поддержке, можно загрузить макет из поставки: сравнить и объединить с конфигурацией поставщика, выбрав только нужный макет. Либо восстановите объект из резервной копии выгрузки конфигурации.