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