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