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

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

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

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

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

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

Где находится макет и как его открыть

Макеты хранятся в дереве конфигурации. Общие макеты находятся в ветке «Общие — Макеты», а макеты конкретных объектов — внутри самих объектов: например, у документа «Реализация товаров и услуг» макет лежит в его подветке «Макеты». Чтобы открыть макет, дважды щёлкните по нему в конфигураторе — откроется редактор табличного документа.

При создании нового макета важно выбрать тип «Табличный документ» — именно этот тип поддерживает именованные области. Макеты типа «Текстовый документ» или «HTML-документ» областей не содержат и для печатных форм с параметризованным выводом не подходят.

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

Как создать горизонтальную область из строк

Горизонтальная область — самый частый вариант: шапка документа, строка табличной части, итоги, подвал. Она строится по строкам макета.

Порядок действий
  1. 1
    Выделите нужные строки, щёлкая по заголовкам строк слева (по номерам 1, 2, 3...). Для нескольких строк удерживайте Shift или Ctrl.
  2. 2
    Откройте меню «Таблица — Имена — Назначить имя» или нажмите Ctrl+Shift+N.
  3. 3
    Введите имя области, например «Шапка» или «СтрокаТовары», и нажмите OK.
  4. 4
    Проверьте: слева от строк появилась скобка с подписью имени области.
  5. 5
    Сохраните макет и обновите конфигурацию, если макет редактировался в режиме отладки.

Выделять нужно именно строки целиком (по серым заголовкам с номерами), а не диапазон ячеек внутри сетки. Если выделить только ячейки, команда «Назначить имя» создаст именованный диапазон ячеек, который ведёт себя иначе и не всегда корректно выводится методом ПолучитьОбласть().

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

Как создать вертикальную область из столбцов

Вертикальные области создаются по столбцам и применяются реже — например, когда печатная форма растёт вправо (графики, шахматные ведомости, планирование по дням). Действия аналогичны: выделите столбцы по их заголовкам (буквам A, B, C...) и назначьте имя через «Таблица — Имена — Назначить имя».

Вертикальные области выводятся методом Присоединить() результирующего табличного документа, который добавляет область справа от уже выведенного содержимого. Горизонтальные области внутри вертикальной создавать нельзя — пересечение областей разной ориентации запрещено.

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

Правила именования областей

Имя области должно быть корректным идентификатором: без пробелов, начинаясь с буквы, без спецсимволов. Русские и латинские буквы допустимы. Рекомендуется давать осмысленные имена, отражающие роль фрагмента: «Шапка», «СтрокаНоменклатура», «Итого», «Подписи».

  • Не используйте имена, совпадающие с именами параметров внутри области, — это усложняет чтение кода.
  • Держите единый стиль именования во всех макетах конфигурации — это упрощает сопровождение.
  • Избегайте слишком общих имён вроде «Область1» — через месяц сопровождения их назначение придётся выяснять заново.
Типичные ошибки
01
Выделение ячеек вместо строк — создаётся диапазон ячеек, а не область строк, и ПолучитьОбласть работает не так, как ожидается.
02
Опечатка в имени области в коде — ПолучитьОбласть("Строка") при области «Строки» вызывает ошибку выполнения.
03
Пересечение областей — попытка назначить новую область на строки существующей, из-за чего структура макета ломается.
04
Редактирование макета без обновления конфигурации БД — в режиме предприятия видна старая версия макета.

Как вывести область в коде

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

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

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

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

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

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

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

Для Каждого СтрокаТЧ Из Ссылка.Товары Цикл

ОбластьСтрока.Параметры.Заполнить(СтрокаТЧ);

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

КонецЦикла;

Ячейки внутри области могут содержать параметры (свойство ячейки «Заполнение» = «Параметр»), которые задаются через Область.Параметры.ИмяПараметра. Если заполнение ячейки установлено как «Шаблон», в тексте используются конструкции вида [ИмяПараметра], а значения подставляются тем же способом.

Перед выводом строки в цикле полезно проверять, поместится ли она на странице, методом ТабДок.ПроверитьВывод(МассивОбластей). Это позволяет вовремя вывести горизонтальный разделитель страниц и не получить «разорванную» печатную форму.
ПЗ
Практическое замечание

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

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

Программная проверка — вызвать ПолучитьОбласть() в отладчике и убедиться, что возвращается объект типа «ОбластьЯчеекТабличногоДокумента», а не ошибка. Если область не найдена, платформа выдаст исключение с указанием имени — это самый частый сигнал опечатки.

Контрольные точки

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

Скобка с именем слева от строк макета
Норма

Скобка охватывает ровно нужные строки

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

Скобки нет или она захватывает лишние строки

Вызов ПолучитьОбласть в отладчике
Норма

Возвращается область с заполненными параметрами

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

Ошибка «Область не найдена»

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

Фрагменты выводятся в правильном порядке

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

Пустой документ или ошибка при формировании

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

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

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

Что делать, если ПолучитьОбласть выдаёт ошибку «Область не найдена»?

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

Можно ли вкладывать одну область в другую?

Нет, области верхнего уровня не могут пересекаться и вкладываться. Если нужна вложенная структура (например, группа строк внутри блока), создавайте отдельные соседние области и выводите их последовательно в нужном порядке из кода.

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

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

Чем область макета отличается от области макета СКД?

В схеме компоновки данных макеты областей создаются на закладке «Макеты» конструктора СКД и служат для оформления полей отчёта, а не для программного вывода через ПолучитьОбласть. Это другой механизм: там области привязываются к полям и группировкам отчёта.

Работают ли области во внешних печатных формах?

Да. Во внешней обработке макет добавляется в её состав, области создаются тем же способом, а в коде макет получают методом ЭтотОбъект.ПолучитьМакет("ИмяМакета"). Дальнейшая работа с областями полностью совпадает с обычной печатной формой.

Итог

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

Область создаётся выделением строк (или столбцов) макета и командой Ctrl+Shift+N. Имя должно быть уникальным идентификатором, области не должны пересекаться. В коде область извлекается через ПолучитьОбласть и выводится методом Вывести, а большинство ошибок связано с опечатками в имени и не обновлённой конфигурацией.