Объединение ячеек по вертикали и горизонтали в отчете на СКД (объединение заголовков родительских группировок)
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Цель: В отчете на СКД необходимо объединить в единую «шапку» группировку верхнего уровня по вертикали и по горизонтали с выводом итогов по столбцам (итоги по строкам нужны только общие)
Представьте, что пользователь сформировал отчет на СКД, сохранил его в файл эксель, а затем вручную объединил одинаковые ячейки группировок для визуального удобства работы с таблицей.
Для наглядности выкладываю рисунок, в каком виде пользователь хочет увидеть отчет на СКД:

Т.е. пользователь объединил в одну ячейку повторяющиеся ячейки с контрагентом «ООО ГлобалГиперМегаНет» в строках отчета и «накрыл» шапкой с названием месяца дни в колонках отчета.
Способ реализации:
1) Привести отчет в «плоский» вид, как в экселе, с отдельным выводом каждой ячейки.
2) Обработать программно табличный документ и объединить необходимые ячейки.
Реализуем задуманное:
1) Создаю стандартный отчет на СКД с группировками по строкам: «контрагент» + «договор» и по колонкам «месяц» + «день», тестовые данные введём прямо в запросе набора данных.
В файлах для скачивания отчет называется: «1. Отчет_На_СКД_Стандартный»
Настройки СКД следующие:

Внешний вид отчета (развернутый):

Внешний вид отчета (свернутый):

Т.е. в развернутом варианте выводится вначале МЕСЯЦ, а затем ДНИ, а нам нужно накрыть единой шапкой ДНИ в пределах одного МЕСЯЦА.
Аналогично с контрагентом – контрагент дублируется, нам нужно из 3х ячеек объединить контрагента в одну.
2) Придаю «плоский» вид (как в экселе) для шапки отчета на СКД.
В файлах для скачивания отчет называется: «2. Отчет_На_СКД_С_Общей_Шапкой_Как_В_Эксель»
Для этого в настройках СКД, во вкладке «Другие настройки» устанавливаю для группировок свойство «Расположение полей группировок» = Отдельно.
Что бы «Итоги» по группировке МЕСЯЦ выводились в нужном виде, добавляю в раздел «Макеты» макет группировки и «рисую» каким способом у меня должны отображаться ячейки.
Всё это я делаю, чтобы подготовить табличный документ к программному объединению ячеек.
Получается следующая таблица:

3) Выполняю постобработку табличного документа для колонок отчета, объединяю месяцы, как бы «накрываю шапкой» дни в пределах одного месяца.
В файлах для скачивания отчет называется: «3. Отчет_На_СКД_С_Общей_Шапкой_В_Колонках»

Постобработку табличного документа я выполняю в процедуре "ПриКомпоновкеРезультата" после процессора вывода.
Алгоритм такой: вначале программным путем определятся номер строки, в котором находится шапка с месяцами. Затем в этой строке перебираются все ячейки, и повторяющиеся значения "объединяются" с выравниванием по центру.
т.е. все ячейки со значением "Январь 2024" объединяются в одну.
4) Выполняю постобработку табличного документа для строк отчета, объединяю контрагента из трёх одинаковых ячеек получается одна.
В файлах для скачивания отчет называется: «4. Отчет_На_СКД_С_Общей_Шапкой_В_Строках»

Постобработку табличного документа я выполняю в процедуре "ПриКомпоновкеРезультата" после процессора вывода.
Алгоритм такой: вначале программным путем определятся номер столбца, в котором находится контрагент. Затем в этом столбце перебираются все ячейки, и повторяющиеся значения "объединяются" с выравниванием по центру.
т.е. все ячейки со значением "ООО ГлобалГиперМегаНет" объединяются в одну.
5) Выполняю постобработку табличного документа и для колонок и для строк отчета.
В файлах для скачивания отчет называется: «5. Отчет_На_СКД_С_Общей_Шапкой_В_КолонкахИСтроках»

Постобработка табличного документа выполняется как в варианте 3 и 4, совмещенным вместе.
6) Дополнительно я сделал еще один вариант отчета, в том случае, когда нам НЕ нужны итоги по горизонтали.
В этом случае мы группируем по МЕСЯЦУ и ДНЮ, так как итоги нам не нужны + свой макет для группировки не нужно "рисовать", так как у нас уже всё в "плоском" варианте, как в экселе.
В файлах для скачивания отчет называется: «6. Отчет_На_СКД_С_Общей_Шапкой_В_КолонкахИСтрокахБезИтогов»

Постобработка табличного документа выполняется как в варианте 3 и 4, совмещенным вместе.
Проверялось:
- на платформе: 1С:Предприятие 8.3 (8.3.23.1865)
- на релизе: Бухгалтерия предприятия, редакция 3.0, релиз 3.0.151.38
Вступайте в нашу телеграмм-группу Инфостарт