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