Программное объединение ячеек табличного документа в 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 тексту предыдущей строки того же столбца. Если равно, продолжаем цикл.
- Если текст отличается от предыдущей строки, значит объединяем ячейки в первой колонке, начиная с ячейки начала объединения, по последнюю с тем же значением.
- После объединения меняем значение переменной НачалоОбъединения, чтобы следующее объединение начиналось уже со следующей строки.
Раздел: Программирование Статьи по 1С Метки: Табличный документ
Программное объединение ячеек табличного документа в 1С : 10 комментариев
- Вадим 10.05.2017 Здорово! Спасибо. А я то думаю, как бы сделать такое же для колонок. Но там аналогично)
- Нестандартные решения в 1С Автор записи 26.05.2017 Рады, что помогло 🙂 Кстати объединение можно делать не только в уже полностью сформированном табличном документе, но и в отдельных областях, которые только готовятся для вывода. Делается все аналогично, но так бывает даже удобнее.
- Нестандартные решения в 1С Автор записи 26.03.2018 Спасибо за замечание, надо попробовать. Хотя есть некоторые сомнения. Ведь мы переменную Строка берем не из экселевского файла, в котором могут быть разделители групп. Эта переменная образуется в цикле ДЛЯ, ей значения присваивает 1С, они и так будут без разделителей.
- Ммммм? 24.07.2019 Имел ввиду «не равно»
- Нестандартные решения в 1С Автор записи 10.09.2019 Думаю, нет. Мы же хотим объединить ячейки с одинаковым содержимым. Значит должно быть «равно».
Добавить комментарий Отменить ответ
Теперь мы в соцсетях! Подписывайтесь, чтобы получать информацию о последних обновлениях или задать вопрос.
Программное объединение ячеек табличного документа в 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 тексту предыдущей строки того же столбца. Если равно, продолжаем цикл.
- Если текст отличается от предыдущей строки, значит объединяем ячейки в первой колонке, начиная с ячейки начала объединения, по последнюю с тем же значением.
- После объединения меняем значение переменной НачалоОбъединения, чтобы следующее объединение начиналось уже со следующей строки.
Программное объединение ячеек в табличном документе
Здравствуйте, пытаюсь программно объединить ячейки в макете, но вся проблема в том, что заранее неизвестно какие ячейки нужно объединить.
То есть в идеале должно быть так ТабличныйДокумент.Область(R3C1:R3C2).Объединить();
Но мне нужно так ТабличныйДокумент.Область(«R3C»+Строка(НомерЯчейки+1):»R3C»+Строка(НомерЯчейки+2)).Объединить();
P.S. Заранее спасибо
По теме из базы знаний
- Группировка измерений в заголовках СКД
- Пример переноса справочников, документов и движений через Эксель и «Конвертацию данных 2» из оптовой учетной системы 1С 7.7 Комплексной 4.2 и розничной учетной системы Рарус Торговый комплекс -> в 1С 8.3 ЕРП 2.4 (расширение и дополнительные реквизиты)
- СКД. Объединение ячеек на примере «Справка инвентаризации расчетов с покупателями и поставщиками по форме ИНВ-17»
- Программная корректировка при выводе отчета СКД
- Хитрости СКД. Часть 3
Вознаграждение за ответ
Сумма: 0 $m
Добавили:
TopZlodey (0.33 $m)
Получили:
acanta (0.33 $m)
Показать полностью
Найденные решения
6. acanta 01.02.19 12:47 Сейчас в теме +0.33 $m
Вам предложено изобразить что то вроде:
НомерСтроки = 3;
ТабличныйДокумент.Область(НомерСтроки,НомерЯчейки+1,НомерСтроки,НомерЯчейки+2).Объединить();
rybakovaN; user1619761; brat-bik; kaps22; criptid; + 5 – Ответить
Остальные ответы
- Дата
- Дата
- Рейтинг всех уровней
- Рейтинг 1-го уровня
- Древо развёрнутое
- Древо свернутое
Свернуть все
2. singlych 01.02.19 12:39 Сейчас в теме
НомерЯчейки
В чем сложность его определить?
4. TopZlodey 13 01.02.19 12:43 Сейчас в теме
(2) Номер ячейки я определил, но я не могу объединить, таким образом, выдает ошибку
: Ожидается символ ‘)’
ТабличныйДокумент.Область(ЯчейкаДляОбъединения1+»»>:ЯчейкаДляОбъединения2).Объединить(); (Проверка: Сервер)
8. dhurricane 01.02.19 12:48 Сейчас в теме
(4) У Вас всего лишь синтаксическая ошибка: двоеточие должно быть в кавычках и плюс «потеряли».
7. TopZlodey 13 01.02.19 12:47 Сейчас в теме
9. dhurricane 01.02.19 12:49 Сейчас в теме
ТабличныйДокумент.Область("R3C"+Строка(НомерЯчейки+1) + ":R3C"+Строка(НомерЯчейки+2)).Объединить();
user1619761; user1691741; criptid; sizeoff; singlych; + 5 – Ответить
3. dhurricane 01.02.19 12:39 Сейчас в теме
Для удобства можете обращаться к области не по имени, а по координатам. Вот выдержка из синтакс-помощника:
(необязательный)
Тип: Число.
Номер первой строки области таблицы.
Если отсутствует, то указывается область, состоящая из колонок.
(необязательный)
Тип: Число.
Номер первой колонки области таблицы.
Если отсутствует, то указывается область, состоящая из строк.
(необязательный)
Тип: Число.
Номер последней строки области таблицы.
Если выделяется область из колонок (параметр не задан), то указывается номер строки, из которой берется формат строк.
(необязательный)
Тип: Число.
Номер последней колонки области таблицы.
Объединение ячеек таблицы в системе управления сайтом Ural.CMS
Одной из возможностей визуального редактора, встроенного в систему управления сайтом Ural.CMS является объединение нескольких ячеек в одну. Для того, чтобы воспользоваться данной функцией вам необходимо выделить курсором мыши в таблице несколько ячеек и выбрать на панели инструментов функцию «Слить ячейки».

Обратное действие производится с помощью функции «Разделить слитые ячейки». Для этого размещаем курсор в место, где были ранее слиты ячейки и на панели инструментов выбираем функцию «Разделить слитые ячейки».

После внесения изменений сохраните раздел.
