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