Программное объединение ячеек табличного документа в 1С

Как программно объединить ячейки в табличном документе 1С?

Для объединения ячеек предназначена функция Объединить(). Функция применяется к прямоугольной область табличного документа.

Пример

В результате формирования отчета была получена таблица.

Товар Склад Остаток
Яблоки Склад 1 6
Яблоки Склад 2 8
Яблоки Склад 3 9
Груши Склад 1 7
Груши Склад 2 2

Необходимо объединить ячейки с одинаковыми товарами.

ОбъединениеНачало=2;
Для Строка=2 По ПоследняяСтрока Цикл
Если ТабДок.Область("R"+Строка+"C1").Текст=ТабДок.Область("R"+Строка(Строка-1)+"C1").Текст
ИЛИ ОбъединениеНачало=Строка ТогдаПродолжить;
Иначе
ТабДок.Область("R"+ОбъединениеНачало+"C1"+":"+"R"+Строка(Строка-1)+"C1").Объединить();
ОбъединениеНачало=Строка;
КонецЕсли;
КонецЦикла;

В результате получим следующую таблицу.

Товар Склад Остаток
Яблоки Склад 1 6
Склад 2 8
Склад 3 9
Груши Склад 1 7
Склад 2 2

Коротко о том, что мы сделали.

  1. Создаем цикл, который будет обходить строки табличного документа со второй (заголовок нам не нужен) по последнюю. Переменную ПоследняяСтрока нужно каким-то образом рассчитать.
  2. Переменная ОбъединениеНачало содержит номер строки, с которой нужно будет начать объединение. Первоначально этот номер равен номеру строки начала обхода таблицы.
  3. Обходим последовательно каждую строку табличного документа. При этом проверяем, равен ли текст текущей строки и столбца 1 тексту предыдущей строки того же столбца. Если равно, продолжаем цикл.
  4. Если текст отличается от предыдущей строки, значит объединяем ячейки в первой колонке, начиная с ячейки начала объединения, по последнюю с тем же значением.
  5. После объединения меняем значение переменной НачалоОбъединения, чтобы следующее объединение начиналось уже со следующей строки.

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники

Программное объединение ячеек табличного документа в 1С: 3 комментария

  1. Вадим

    Здорово! Спасибо. А я то думаю, как бы сделать такое же для колонок. Но там аналогично)

    1. Нестандартные решения в 1С Автор записи

      Рады, что помогло :)

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

  2. Надежда

    Спасибо! Очень помогла статья! Вот чувствовала, что метод Объединить нужно использовать, а каким боком его применить…. Оказывается, все довольно просто. Респект автору!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

семнадцать − четырнадцать =