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