Разработка и Конфигурация · 8 мин
Как объединить ячейки табличного документа в 1С
Как объединить ячейки табличного документа в 1С: интерактивно и программно через Объединить(). Примеры кода, типичные ошибки, проверка результата.
Объединение ячеек табличного документа в 1С используется при формировании печатных форм, отчётов и сложных таблиц, где один заголовок должен охватывать несколько колонок или строк. Платформа поддерживает два способа: интерактивное объединение в редакторе макета и программное — через метод области Объединить().
Выбор способа зависит от задачи. Если вы рисуете статичный макет печатной формы, достаточно инструментов конструктора макетов. Если таблица строится динамически — количество строк и колонок заранее неизвестно — объединение выполняется кодом при выводе результата.
Важно понимать базовую механику: объединяемая область задаётся прямоугольником, после объединения вся область ведёт себя как одна ячейка — с единым текстом, форматом и рамками. Данные, которые были в перекрываемых ячейках, кроме левой верхней, теряются.
Где в 1С используется объединение ячеек
Табличный документ — универсальный объект платформы: это и макет печатной формы, и результат отчёта, и поле табличного документа на форме. Во всех случаях структура ячеек одинакова, поэтому приёмы объединения работают везде одинаково.
Типичные сценарии: шапка отчёта с многоуровневыми заголовками колонок, итоговая строка, где текст «Итого» растягивается на несколько колонок, вертикальное объединение строк для группировки данных, оформление подписей и печатей в конце документа.
Объединение ячеек в редакторе макета
Откройте макет табличного документа в конфигураторе (или поле табличного документа в режиме 1С:Предприятие). Выделите мышью диапазон ячеек, которые нужно объединить — диапазон обязательно должен быть прямоугольным, без «ступенек».
Далее есть два пути. Первый: правой кнопкой по выделению — пункт «Объединить». Второй: откройте палитру свойств выделенной области и установите свойство объединения. Для разъединения используется обратная команда «Разъединить» в том же меню.
- 1Откройте макет табличного документа в конфигураторе
- 2Выделите прямоугольный диапазон ячеек
- 3В контекстном меню выберите «Объединить»
- 4Введите текст в объединённую ячейку и задайте выравнивание
- 5Сохраните макет и проверьте печатную форму на предпросмотре
После объединения задайте свойства ячейки: горизонтальное и вертикальное положение текста, шрифт, рамки. Удобно делать это сразу, пока область выделена, — иначе потом придётся искать объединённую ячейку кликом.
Программное объединение через метод Объединить()
В коде объединение выполняется методом Объединить() у объекта «ОбластьЯчеекТабличногоДокумента». Сначала получаете область нужного диапазона, затем вызываете метод:
ТабДок = Новый ТабличныйДокумент;
Область = ТабДок.Область("R2C3:R2C6");
Область.Объединить();
Область.Текст = "Отчёт за период";
Область.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
Координаты задаются в формате R{строка}C{колонка}. Если диапазон динамический, номера строк и колонок удобно собирать из переменных через конкатенацию строк — например, "R" + НомерСтроки + "C1:R" + НомерСтроки + "C" + ЧислоКолонок.
Для разъединения используется метод Разъединить() той же области. Учтите: после разъединения текст и оформление остаются только в левой верхней ячейке бывшей области.
ОбластьЯчеек = ТабДок.Область(НачСтрока, НачКолонка, КонСтрока, КонКолонка);
ОбластьЯчеек.Объединить();Объединение при выводе макета в отчёт
Частая задача — объединить ячейки уже после того, как область выведена из макета в результирующий табличный документ. Метод Вывести() возвращает номер первой строки выведенной области, что позволяет вычислить координаты для последующего объединения.
Порядок такой: запомните текущую высоту документа (ТабДок.ВысотаТаблицы), выведите область, затем получите область по вычисленным координатам и объедините. Это надёжнее, чем жёстко прописывать номера строк, которые «поплывут» при изменении макета.
При динамическом выводе всегда вычисляйте координаты объединения от ТабДок.ВысотаТаблицы до и после Вывести(). Жёстко зашитые номера строк — самая частая причина «съехавших» объединений после правки макета.
Вертикальное объединение строк
Вертикальное объединение (одна ячейка на несколько строк) делается тем же методом — диапазон просто задаётся по строкам: R5C2:R9C2. Типичное применение — колонка «Подразделение», где название пишется один раз напротив группы строк с сотрудниками.
Нюанс: вертикально объединённые ячейки могут некорректно переноситься на следующую страницу при печати. Если область велика, проверьте предварительный просмотр и при необходимости используйте ПроверитьВывод() перед выводом группы строк.
Ограничения и типичные ошибки
Объединить можно только прямоугольную область. Попытка объединить область, пересекающуюся с уже объединённой, приведёт к ошибке выполнения — сначала разъедините пересекающиеся области.
При объединении содержимое всех ячеек диапазона, кроме левой верхней, удаляется без предупреждения. Если в ячейках были параметры макета или данные — они будут потеряны. Перед объединением в макете убедитесь, что нужный текст находится именно в левой верхней ячейке.
Как проверить результат
После объединения кликните по области: выделиться должна вся объединённая ячейка целиком, а в строке формул отобразится её содержимое. Если выделяется только часть — объединение не применилось или область была разъединена.
В печатной форме проверяйте не только экран, но и предварительный просмотр с разбивкой на страницы: длинные объединённые области и повторяющиеся шапки иногда конфликтуют с автоматическим разбиением.
Как проверить результат
Клик выделяет весь объединённый диапазон целиком
Выделяется отдельная ячейка внутри диапазона
Текст отображается один раз и выровнен как задано
Текст дублируется или обрезан
Область не разрывается между страницами некорректно
Часть объединённой ячейки уходит на другую страницу
При повторном формировании отчёта структура сохраняется
Координаты смещаются при изменении данных
Часто задаваемые вопросы
Можно ли объединить ячейки непрямоугольной формы?
Нет. Платформа поддерживает только прямоугольные области. Сложные фигуры собираются комбинацией нескольких объединённых прямоугольников и настройкой рамок так, чтобы внутренние границы были скрыты.
Что происходит с данными ячеек при объединении?
Сохраняется только содержимое левой верхней ячейки диапазона: текст, формат, рамки. Содержимое остальных ячеек удаляется без возможности восстановления, поэтому важные данные заранее перенесите в левую верхнюю ячейку.
Как программно узнать, объединена ли ячейка?
У области ячеек есть свойство, показывающее состояние объединения (проверяется через сравнение размеров области и признака объединения в свойствах). Практичный способ — получить область одной ячейки и сравнить её границы с ожидаемыми: у объединённой ячейки область охватывает весь диапазон.
Почему метод Объединить() выдаёт ошибку?
Чаще всего область пересекается с уже объединённой ячейкой или координаты выходят за пределы документа. Разъедините конфликтующие области методом Разъединить() и проверьте, что номера строк и колонок существуют в табличном документе.
Объединяются ли ячейки при выгрузке в Excel?
Да, при сохранении табличного документа в формат Excel объединённые области корректно преобразуются в объединённые ячейки листа. Однако сложное оформление рамок может отличаться, поэтому итоговый файл стоит открыть и проверить визуально.
Можно ли объединить ячейки в уже сформированном отчёте СКД?
В результате СКД напрямую редактировать ячейки нельзя. Варианты: доработать макет в схеме компоновки (свои макеты областей) или вывести результат в табличный документ и программно объединить нужные области после формирования.
Что важно запомнить
Ячейки объединяются только прямоугольником: в макете — через контекстное меню, в коде — методом Область().Объединить(). Данные сохраняются только в левой верхней ячейке, координаты в коде вычисляйте динамически, результат проверяйте выделением области и предпросмотром печати.