Как объединить ячейки в 1с
Есть табл.часть с именем «Тра-ляля» у неё нужно вывести в колонках все строки. В макете есть ОбластьШапки — там название Таблицы и ОбластьДетали — колонка с наименованием и значением. В результате выполнения кода:
ТабДокТЧ = Новый ТабличныйДокумент;
ОбластьШапка.Параметры.Заголовок = «Тра-ляля»;
ТабДокТЧ.Вывести(ОбластьШапкаИмяТЧ);
Для каждого СтрокаДетали Из СтрокаДереваЗначений.Строки Цикл
Если Индекс = 0 Тогда
ТабДокТЧ.Вывести(ОбластьДеталиТЧ);
Иначе
ТабДокТЧ.Присоединить(ОбластьДеталиТЧ);
КонецЕсли;
Индекс = Индекс + 1;
ПОЛУЧАЕТСЯ
Тра-ляля|
Имя1 |Имя2 |Имя3 |
Зн1 |Зн2 |Зн3 |
НУЖНО
Тра-ляля |
Имя1 |Имя2 |Имя3 |
Зн1 |Зн2 |Зн3 |
Как это сделать программно?
Как объединить ячейки в 1с
Всем добрый день, Дорогие Форумчане!
Делаю внешнюю ПФ, все сделал, работает норм, но есть один момент, в котором мне надо выполнить объединение, но не объединение ячеек, а объединение областей.
Подскажите как такое возможно сделать и возможно ли?
Например, есть координаты начальной области R42C7:R42C12 и координаты конечно области R45C7:R45C12.
Объединить ячейки не сложно, но у меня получается так что ячейка объединена в одну из шести горизонтально, а объединять ее надо с таким количеством ячеек вниз, сколько строк в прикрепляемом к ней табдоке.
вот так выглядит у меня сейчас таблица
https://prnt.sc/10jqz1q
у меня происходит присоединение таблицы к левой строке, блин, или как объяснить.
мдэ. неужели ни кто не знает?
считаешь, на сколько вниз должна объединяться, получаешь нужную область и Объединить()
в совершенно аналогичных случаях предпочитаю не объединять, а правильно выводить.
первая строка (с неповторяющимся значением группировочного реквизита) — стандартный цвет шрифта и граница сверху, повторяющееся (не первое) — белый (как фон) цвет шрифта и без границы сверху. граница снизу — только(!) на самой последней строке отчета.
ЗЫ: так и в екселе обрабатывать проще
(3) так не работает, области не получается объединить. Если у Вас есть рабочий пример, то прошу поделиться
(4) ни чего не понял ))
(7): работай над собой «))»
(6) Лучше ты покажи, как объединяешь
Если области уже объединены,то прежде чем их объединить в новую,нужно избавиться от старого объединения.
То есть,объединить можно только ячейки и в прямоугольной области.
(10) вот это уже похоже на правду. то есть в моем случае, получается, объединение невозможно.
(0) Проще сразу выводить как надо, чем заниматься объединением потом
(12) дак я и не соображу ни как, как выводить сразу правильно
делаю сейчас так:
Если НЕ ПолучитьОсобыеОтметки.ПустаяВыборка Тогда
ШапкаИндивидуальныеДостижения = Макет.ПолучитьОбласть(«ИндивидуальныеДостижения|ШапкаИндивидДостиж»);
ТабДок.Вывести(ШапкаИндивидуальныеДостижения);
ПриклепляемыйТабДок = Новый ТабличныйДокумент;
Макет2 = ПолучитьМакет(«Макет»);
СтрокаИндивидДостижения = Макет2.ПолучитьОбласть(«R42C7:R42C12»);
НомерПП = 0;
Пока ПолучитьОсобыеОтметки.Выборка.Следующий() Цикл
НомерПП = НомерПП + 1;
СтрокаИндивидДостижения.Параметры.НомерПП = НомерПП;
СтрокаИндивидДостижения.Параметры.ИндивидуальноеДостижение = ПолучитьОсобыеОтметки.Выборка.ОтличительныйПризнак;
ПриклепляемыйТабДок.Вывести(СтрокаИндивидДостижения);
КонецЦикла;
и дальше мне надо каким-то образом, чтобы моя «ШапкаИндивидуальныеДостижения» объединилась с ячейками ниже. чтобы высота ее быра в итоге равна высоте прикрепляемого табдока.
может непонятно как-то объясняю, но выше, на скриншотах, я показывал, что хочу получить в итоге
Программное объединение ячеек в печатной форме 1с 8.3

Не устроил ответ?
Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.
Реклама
Новые вакансии
- Вакансия аналитика 1с УТ от 200K, гибрид от Татьяна Астахова
25 января 2024 г. - Вакансия Программист 1С (Москва, гибрид) 250-300т.р. от paulaja03@gmail.com
23 января 2024 г. - Вакансия программиста 1с от Татьяна Астахова
19 января 2024 г.
Программное объединение ячеек табличного документа в 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 тексту предыдущей строки того же столбца. Если равно, продолжаем цикл.
- Если текст отличается от предыдущей строки, значит объединяем ячейки в первой колонке, начиная с ячейки начала объединения, по последнюю с тем же значением.
- После объединения меняем значение переменной НачалоОбъединения, чтобы следующее объединение начиналось уже со следующей строки.