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