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

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

Как объединить область в макете 1С

Как объединить ячейки и области в табличном макете 1С: через конфигуратор и программно методом Объединить(). Примеры кода, типичные ошибки и проверка результата.

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

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

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

Что такое объединённая область и когда она нужна

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

Типовые ситуации, где объединение необходимо:

  • заголовок печатной формы, растянутый на всю ширину таблицы;
  • строка итогов, где текст «Итого» занимает несколько колонок перед суммой;
  • шапка табличной части с многоуровневыми заголовками колонок;
  • подписи «М.П.», «Руководитель», «Главный бухгалтер» в подвале документа.

Важно понимать: объединение влияет только на отображение и заполнение, но не на структуру данных. Именованные области макета (секции) и объединение ячеек — разные механизмы, которые часто применяются вместе.

Как объединить ячейки в макете через конфигуратор

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

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

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

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

Как объединить область программно методом Объединить()

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

Метод вызывается у объекта ТабличныйДокумент после вывода нужных областей. Координаты задаются через объект ОбластьЯчеекТабличногоДокумента, полученный методом Область().

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

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

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

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

// Объединить ячейки строки 3 с колонки 2 по колонку 5

ОбластьОбъединения = ТабДок.Область(3, 2, 3, 5);

ОбластьОбъединения.Объединить();

ОбластьОбъединения.Текст = "Итого по документу";

bsl
ОбластьОбъединения = ТабДок.Область(3, 2, 3, 5);
ОбластьОбъединения.Объединить();
ОбластьОбъединения.Текст = "Итого по документу";

Метод Область() принимает четыре числовых параметра: номер первой строки, номер первой колонки, номер последней строки, номер последней колонки. Если координаты не заданы, возвращается весь табличный документ — объединять его целиком бессмысленно и опасно.

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

Объединение по горизонтали и вертикали: особенности

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

Это может давать неожиданные «пустоты» внизу страницы, если объединённая область высокая. Для длинных вертикальных объединений проверяйте результат через ПроверитьВывод() и при необходимости уменьшайте высоту строк или пересматривайте структуру макета.

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

Объединение в макете конфигуратора

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

Программный метод Объединить()

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

Широкая колонка без объединения

Иногда проще задать одной колонке нужную ширину и отключить соседние. Ограничение: не работает, если в других строках эти колонки используются раздельно.

Типичные ошибки и ограничения

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

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

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

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

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

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

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

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

Выделение ячейки в сформированном документе
Норма

Подсвечивается вся объединённая область целиком

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

Выделяется одна ячейка — объединение не применилось

Вывод текста или параметра
Норма

Текст виден и выровнен по всей области

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

Текст обрезан или выводится в узкой колонке — заполнена не левая верхняя ячейка

Предварительный просмотр по страницам
Норма

Область целиком на одной странице, разрывы в ожидаемых местах

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

Пустые промежутки или перенос середины таблицы

Для программного объединения полезно временно выводить в отладку координаты области через Сообщить() — это быстро показывает, туда ли попал диапазон.

FAQ: частые вопросы

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

Да, если документ открыт для редактирования: пользователь может выделить диапазон и выбрать «Объединить» в контекстном меню. Однако для печатных форм, открытых только на просмотр, это недоступно — объединение нужно закладывать в макет или код.

Почему метод Объединить() выдаёт ошибку?

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

Как разъединить область программно?

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

Сохранится ли объединение при выгрузке в Excel?

Да, при сохранении табличного документа в формате Excel объединённые области обычно переносятся как объединённые ячейки листа. Но сложное форматирование стоит проверять на реальном файле, особенно многоуровневые шапки.

Чем объединение отличается от свойства «Объединение» у ячейки в макете?

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

Можно ли объединять области в макете СКД?

В схеме компоновки данных макет оформления строится иначе — через макеты областей и группировок. Прямого объединения ячеек как в табличном макете там нет; широкие заголовки формируются через макет поля или заголовки группировок.

Итог

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

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