Группировка измерений в заголовках СКД

Программирование - Практика программирования

СКД Схема компоновки данных группировка колонок общий заголовок сгруппировать колонки заголовок колонки

47
Методика создания общей шапки над измерениями в таблице созданной при помощи СКД. Без всякого кода. Только штатными средствами.

Для начала я хотел бы пояснить, что в СКД штатными методами задать общий заголовок для группы измерений нельзя. Для группы ресурсов - без проблем. Для группы измерений - нельзя. Так что все, что будет написано ниже - это повесть про костыли и грабли. Местами печальная, местами веселая, но уж такая какая получилась. Предупреждаю сразу, потому, что многие не любят такого чтива, а потом упрекают автора, в собственном потерянном времени и прикапываются к тому, что решение далеко от идеала.

Ну а с теми кто остался, мы сейчас попытаемся надеть "шапочку" на измерения в колонках таблицы СКД.

Давайте обратимся к практической задаче. У нас есть таблица с двумя числовыми показателями, которые заполнены по периодам в разрезе 2-х измерений: Вкус и Цвет.

Вот примерно так она выглядит:

Задача стоит тоже не сложная: оставить измерение "Вкус" в строках, а данные показателей по измерению "Цвет" вывести в столбцы, сгруппировав предварительно по месяцам.

Итак мы создаем отчет на СКД с указанными данными и выводим его в виде таблицы с двухуровневой группировкой по колонкам (период по месяцам и цвета внутри каждого месяца)

И здесь нас ждет первое разочарование. Если выводить так, как мы привыкли по строкам, значение периода в группировке верхнего уровня будет упорно предшествовать группировке по цветам, но никак не поднимется наверх. Поэтому мы уберем вывод значений периода из старшей группировки и дополнительно на вкладке "Другие настройки" для этой группировки установим настройку "Расположение группировок" на "Нет". А в поля группировки "Цвет" добавим для вывода интересующий нас период.

Вот примерно что из это выйдет:

Как видим, почти получилось, но вот определитель периода теперь повторяется в каждом столбце, а не объединяется как шапка группировки цветов.

И вот с этого момента коллеги обычно используют танцы с бубном в виде программного объединения ячеек шапки в уже созданном табличном документе. Как например здесь. Ничего не имею принципиально против, но мы, как говорил В.И. Ленин, пойдем другим путем.

Суть альтернативного подхода состоит в использовании возможностей СКД создавать вычисляемые поля и условно форматировать данные. У нас есть возможность с помощью условного форматирования настроить вид ячеек в табличном документе как угодно, а для условий, по которым мы должны применять форматирование, нужно получить несколько показателей в виде вычисляемых полей. К таким показателям относятся:

1. Порядковый номер текущего значения измерения в группировке.

2. Количество значений измерений в текущей группировке.

Таким образом, мы сможем узнать в каких полях начинается и заканчивается группировка по старшему измерению и можем настроить вывод значения старшего измерения только в первой ячейке, параллельно убрав разделительные линии из ячеек внутри группировки. А заодно (чтобы два раза не вставать) отформатируем первый день месяца в ММММ ГГГГ.

Получим в итоге то, что в нашей главной превьюшке (и демо отчете) называется "Пример 1"

Как видим получилось не сильно красиво, но по крайней мере видно как называется, где начинается и где заканчивается группировка по месяцам. Но обычно хочется, чтобы общее название было в центре. Для такого фокуса нам потребуется еще одно вычисляемое поле:

3. Номер колонки для заголовка. Для нечетного количества элементов в подчиненной группировке, это будет центральная ячейка, а для четного (тут уж извините) ближайшая к середине интервала слева.

Если теперь мы настроим условное форматирование так, чтобы выводился текст не в первой для группировки ячейки, а именно в колонке с нужным номером, то получим, то что на превьюшке я назвал "Пример 2"

Уже лучше, но все равно кривовато. Однако, наши возможности улучшить вид решения еще не исчерпаны. Давайте центровать заголовки периодов в ячейке вывода, если она действительно центральная (нечетное количество колонок в группировке) или выравнивать по правому краю, если колонка заголовка ближайшая к центру слева. Для такого фокуса нужно еще одно вычисляемое поле:

4. Необходимость центрировать текст в ячейке с заголовком.

После того, как мы установили общий формат текста для периода по правому краю и добавили условное форматирование для центрирования по необходимости мы получили отчет вида "Пример 3". Не идеально, но в общем-то лучшее, что можно сделать без кодирования в отчете.

Как рассчитать нужные поля, надеюсь понятно из рисунка:

С настройками условного форматирования, надеюсь справитесь. Ну а кто не справится - качаем демку, не стесняемся:)

Демо отчет тестировался и работает на платформе 8.3.9.2309

47

Скачать файлы

Наименование Файл Версия Размер
ДемоОтчетГруппировкаКолонок
.erf 7,25Kb
07.11.18
6
.erf 7,25Kb 6 Скачать

См. также

Комментарии
Избранное Подписка Сортировка: Древо
1. echo77 943 08.11.18 12:24 Сейчас в теме
Очень интересное решение, хоть и костыль :-)
3. dusha0020 838 08.11.18 12:56 Сейчас в теме
(1) Спасибо. Но я предупреждал в начале статьи про костыли:) Да и практический смысл этого именно в том, чтобы слепить по быстрому на коленке именно так как они (пользователи) хотят и надеяться, что наконец-то отстанут.
2. kiser 08.11.18 12:51 Сейчас в теме
Сломал себе все глаза, но так и не нашел отличий во 2 и 3 примерах
4. echo77 943 08.11.18 13:01 Сейчас в теме
(2) Надписи периода выровнены по центру по вертикали и по горизонтали
5. dusha0020 838 08.11.18 13:06 Сейчас в теме
(2) А так?
Ячейки мелковаты для хорошей иллюстрации, согласен. Но третий пример это именно центрирование и выравнивание по правому краю.
Прикрепленные файлы:
6. kser87 1691 08.11.18 16:10 Сейчас в теме
7. dusha0020 838 08.11.18 17:52 Сейчас в теме
(6) В принципе ничего не имею против макетов. Кроме того, что не смог их заставить работать как нужно в этом случае.
8. the1 312 09.11.18 10:26 Сейчас в теме
Разработчики платформы могли бы озадачится этим вопросом, в сообществе постоянно всплывает этот момент с настройкой шапки.
JohnyDeath; +1 Ответить
9. smershussr 14.11.18 09:26 Сейчас в теме
Ещё когда с помощью макетов исправляешь только шапку, то потом есть определенные проблемы с обработкой расшифровок на некоторых уровнях группировок отчета в определенных ситуациях, который выводится стандартно. Приходится изворачиваться.
Если не использовать макет для изменения шапки, таких проблем нет.
10. svilsa 1 14.11.18 12:40 Сейчас в теме
Классно! Даже и хорошо, что без макета - можно настройки произвольно менять
Оставьте свое сообщение