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

07.11.18

Разработка - СКД

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
ДемоОтчетГруппировкаКолонок
.erf 7,25Kb
164
164 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

SALE! 15%

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    159697    876    399    

862

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

Часто при разработке отчетов в СКД возникает ситуация, когда не совсем понятно, почему отчет выводит не те данные, которые нужны, либо не выводит вовсе. Возникает потребность увидеть конечный запрос, который формирует СКД. Как это сделать, рассмотрим в этой статье.

15.05.2024    8731    implecs_team    6    

47

Инструментарий разработчика СКД Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

3 стартмани

05.02.2024    7012    56    obmailok    21    

79

Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    3156    5    Yashazz    1    

34

СКД WEB-интеграция Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    10834    23    John_d    25    

124

СКД Программист Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

Рассмотрим еще не получивший широкого распространения способ работы с внешними данным в СКД. В процессе обсуждения работы с СКД выяснилось, что многие не знакомы со способом помещения туда временной таблицы, полученной предварительно. Статья будет полезна разработчикам, знакомым с программным созданием СКД.

05.12.2023    8056    PROSTO-1C    15    

68
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. echo77 1906 08.11.18 12:24 Сейчас в теме
Очень интересное решение, хоть и костыль :-)
3. dusha0020 1117 08.11.18 12:56 Сейчас в теме
(1) Спасибо. Но я предупреждал в начале статьи про костыли:) Да и практический смысл этого именно в том, чтобы слепить по быстрому на коленке именно так как они (пользователи) хотят и надеяться, что наконец-то отстанут.
2. kiser 08.11.18 12:51 Сейчас в теме
Сломал себе все глаза, но так и не нашел отличий во 2 и 3 примерах
4. echo77 1906 08.11.18 13:01 Сейчас в теме
(2) Надписи периода выровнены по центру по вертикали и по горизонтали
5. dusha0020 1117 08.11.18 13:06 Сейчас в теме
(2) А так?
Ячейки мелковаты для хорошей иллюстрации, согласен. Но третий пример это именно центрирование и выравнивание по правому краю.
Прикрепленные файлы:
6. kser87 2470 08.11.18 16:10 Сейчас в теме
Макеты чем не угодили?
7. dusha0020 1117 08.11.18 17:52 Сейчас в теме
(6) В принципе ничего не имею против макетов. Кроме того, что не смог их заставить работать как нужно в этом случае.
12. SagittariusA 31.10.22 10:12 Сейчас в теме
(6) как с помощью макета такое сделать?
Terabaytus; gerandy; METAL; +3 Ответить
8. ixijixi 1913 09.11.18 10:26 Сейчас в теме
Разработчики платформы могли бы озадачится этим вопросом, в сообществе постоянно всплывает этот момент с настройкой шапки.
Valerianich; JohnyDeath; +2 Ответить
9. smershussr 14.11.18 09:26 Сейчас в теме
Ещё когда с помощью макетов исправляешь только шапку, то потом есть определенные проблемы с обработкой расшифровок на некоторых уровнях группировок отчета в определенных ситуациях, который выводится стандартно. Приходится изворачиваться.
Если не использовать макет для изменения шапки, таких проблем нет.
10. svilsa 12 14.11.18 12:40 Сейчас в теме
Классно! Даже и хорошо, что без макета - можно настройки произвольно менять
11. user916099 13.05.19 16:41 Сейчас в теме
А вот меня интересует вопрос - почему для строк в шапке есть описание (Слово "Вкус" в примерах), а для колонок ("Месяц" и "Цвет" в данном случае) их нет и непонятно как их вывести.
Риник; +1 Ответить
13. gerandy 26.08.23 16:11 Сейчас в теме
Всем привет! Поделитесь, пожалуйста файлом обработки.. нету маней.
Оставьте свое сообщение