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

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

Что такое область в 1С и как с ней работать

Область в 1С — что это, виды областей в макетах и табличных документах, как получить и вывести область, типичные ошибки и примеры кода.

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

Практический смысл области прост: вместо того чтобы обращаться к ячейкам по координатам вроде «R5C3», разработчик получает область по понятному имени — «Шапка», «СтрокаТовара», «Подвал» — и выводит её в результирующий документ одной командой. Это делает код читаемым, а макет — удобным для редактирования без переписывания программы.

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

Что такое область в макете и табличном документе

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

Область может включать одну строку, несколько строк, отдельные колонки или произвольный прямоугольный диапазон ячеек. Внутри ячеек области могут находиться параметры (в фигурных скобках, например [Номенклатура] или через свойство «Параметр»), шаблоны и обычный текст. Перед выводом области параметры заполняются реальными значениями.

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

Виды областей: строки, колонки и произвольные диапазоны

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

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

Тип областиКак создаётсяТипичное применение
СтрокиВыделение целых строк макетаШапка, строка товара, подвал печатной формы
КолонкиВыделение целых колонокГоризонтальное построение документа, Присоединить()
ПроизвольнаяВыделение диапазона ячеекСложные фрагменты, частичный вывод

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

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

Создание области выполняется визуально и занимает несколько секунд. Откройте макет (общий макет или макет объекта), выделите нужные строки или ячейки, затем используйте меню «Таблица → Имена → Назначить имя» или сочетание клавиш. В диалоге укажите имя области и её тип.

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

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

Как получить и вывести область из кода

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

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

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

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

Метод Вывести() добавляет область ниже уже выведенного содержимого, а Присоединить() — справа от него. Для параметров области доступно как обращение по имени (Область.Параметры.НомерДокумента = ...), так и массовое заполнение методом Заполнить(), который сопоставляет имена параметров со свойствами источника данных.

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

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

Другие значения термина «область» в 1С

В решениях для работы в режиме сервиса (модель SaaS, технология 1cFresh) «область данных» — это изолированный раздел информационной базы, в котором работает отдельный абонент. Разделители данных обеспечивают, что каждый абонент видит только свою область. Это понятие относится к администрированию и архитектуре, а не к печатным формам.

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

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

Область макета / табличного документа

Именованный фрагмент для вывода печатных форм. Основное значение термина в повседневной разработке.

Область данных (SaaS)

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

Область видимости

Границы доступности переменных и методов в коде. Базовое понятие встроенного языка.

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

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

Типичные ошибки
01
Опечатка в имени области в ПолучитьОбласть — ошибка выполнения в момент печати; проверяйте имена копированием из макета
02
Переименование области в макете без правки кода — печатная форма перестаёт работать после обновления
03
Параметр в макете назван иначе, чем в коде — значение не подставляется, в документе пусто
04
Область получена из другого макета, чем нужно, — выводится чужое оформление
05
Вывод строки вне цикла — в документе только одна строка вместо всех данных табличной части

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

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

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

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

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

Все области выведены
Норма

Шапка, строки и подвал присутствуют в документе в правильном порядке

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

Часть документа отсутствует или дублируется

Параметры заполнены
Норма

Все поля содержат данные, пустых подстановок нет

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

Пустые места или текст параметра вместо значения

Количество строк
Норма

Число строк совпадает с табличной частью документа

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

Строк меньше или больше, чем в данных

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

Итог

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

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

Частые вопросы об областях в 1С

Чем область отличается от параметра в макете?

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

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

Да. Табличный документ поддерживает метод ПолучитьОбласть(), если в нём есть именованные области — например, сохранённые при выводе из макета. Также можно обращаться к диапазонам по координатам через метод Область().

Почему ПолучитьОбласть выдаёт ошибку, хотя область есть в макете?

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

Как вывести область несколько раз?

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

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

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

Что такое область данных в 1С:Фреш?

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