Цель: В отчете на СКД необходимо объединить в единую «шапку» группировку верхнего уровня по вертикали и по горизонтали с выводом итогов по столбцам (итоги по строкам нужны только общие)
Представьте, что пользователь сформировал отчет на СКД, сохранил его в файл эксель, а затем вручную объединил одинаковые ячейки группировок для визуального удобства работы с таблицей.
Для наглядности выкладываю рисунок, в каком виде пользователь хочет увидеть отчет на СКД:
Т.е. пользователь объединил в одну ячейку повторяющиеся ячейки с контрагентом «ООО ГлобалГиперМегаНет» в строках отчета и «накрыл» шапкой с названием месяца дни в колонках отчета.
Способ реализации:
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