Добрый день! Есть вроде бы простая задача, но я никак не пойму, как ее решить. Хочу получить отчет-таблицу по продажам с разбивкой по месяцам, и с иерархией номенклатуры.
И я хочу найти максимальные продажи за месяц по каждой номенклатуре, и по каждой группе номенклатуры. И считать долю от продаж за конкретный месяц от максимальных продаж в году. В общем, сезонность товаров. И выводить в таблице также в каждом месяце максимальные месячные продажи, которые были за год (это поле по большей части просто для отладки).
Единственный способ, до которого я додумался, сделать в СКД набор данных - объект, и таблицу значений для него готовить программно. Через запрос с итогами, потом проход по этой таблице с поиском максимальных продаж за год, потом формирование итоговой таблицы значений.
Она имеет такой вид:
- Номенклатура (тут и группы, и элементы)
- Месяц (просто число от 1 до 12)
- ПродажиЗаМесяц
- МаксимумПродажиЗаМесяц (тут будет найденное среди 12 месяцев максимальное значение по продажам для этой группы или элемента номенклатуры)
- КоэффициентСезонности (ПродажиЗаМесяц / МаксимумПродажиЗаМесяц)
Сама таблица формируется корректно, в ней все правильно.
Но при выводе через СКД данные по группам выводятся не те, которые заданы в таблице, а те, которые СКД считает сама, исходя из строк, входящих в эту группу.
Для примера, вот выдуманные продажи с 2 столбцами, Продажи за конкретный месяц, и макс. продажи - это максимум месячных продаж, совершенных за год.
Номенклатура | Январь | Февраль
| продажи | макс. продажи.| продажи | макс. продажи
Процессоры (группа) | 6 | 4 | 8 | 4
- Intel i5 12600 (элем.)| 2 | 4 | 4 | 4
- Ryzen 5600 (элем.) | 3 | 3 | 2 | 3
- Intel i3 10100 (элем.)| 1 | 2 | 2 | 2
По элементам выводится все правильно - у Intel i5 12600 максимальные продажи были в феврале в кол-ве 4 шт., и в январе в "макс. продажи" выводится именно 4.
Для Ryzen максимальные продажи были в январе (3 шт.), и в феврале в "макс. продажи" выводится именно 3.
Но по группе Процессоры столбец макс. продажи заполняется неверно - СКД считает его как ресурс, и считает по входящим в него элементам. Если в выражении для столбца на закладке Ресурсы будет прописано "Максимум(МаксимумПродажЗаПериод)", то выведет 4 за январь (просто найдет макс. среди элементов процессоров). Если прописать "Сумма(МаксимумПродажЗаПериод)", то выведет за январь 9 (просуммирует 4 + 3 + 2 по элементам). А правильное значение должно быть 8, и это значение есть в подготовленной таблице значений, из которой формируется отчет! Оно там есть, я просто не могу заставить СКД вывести именно его, а не пытаться высчитывать его заново.
Не помогают никакие хитрые ВычислитьВыражение, ни попытки вообще убрать из ресурсов (тогда просто не выведется).
Как это можно поправить? Как заставить в иерархии вывести просто то, что есть в наборе данных, и ничего не выдумывать?
Может, я вообще не в ту сторону копаю, и есть способ куда проще?