Как объединить ячейки в 1с
Перейти к содержимому

Как объединить ячейки в 1с

  • автор:

Как объединить ячейки в 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

70126

Не устроил ответ?
Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.

Реклама

Новые вакансии

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

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

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