|
СКД. Как заставить 1С НЕ считать значения в иерархии, а вывести заданные для группы. | ☑ | ||
|---|---|---|---|---|
|
0
kostyan29
08.09.26
✎
12:52
|
Добрый день! Есть вроде бы простая задача, но я никак не пойму, как ее решить. Хочу получить отчет-таблицу по продажам с разбивкой по месяцам, и с иерархией номенклатуры.
И я хочу найти максимальные продажи за месяц по каждой номенклатуре, и по каждой группе номенклатуры. И считать долю от продаж за конкретный месяц от максимальных продаж в году. В общем, сезонность товаров. И выводить в таблице также в каждом месяце максимальные месячные продажи, которые были за год (это поле по большей части просто для отладки). Единственный способ, до которого я додумался, сделать в СКД набор данных - объект, и таблицу значений для него готовить программно. Через запрос с итогами, потом проход по этой таблице с поиском максимальных продаж за год, потом формирование итоговой таблицы значений. Она имеет такой вид: - Номенклатура (тут и группы, и элементы) - Месяц (просто число от 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, и это значение есть в подготовленной таблице значений, из которой формируется отчет! Оно там есть, я просто не могу заставить СКД вывести именно его, а не пытаться высчитывать его заново. Не помогают никакие хитрые ВычислитьВыражение, ни попытки вообще убрать из ресурсов (тогда просто не выведется). Как это можно поправить? Как заставить в иерархии вывести просто то, что есть в наборе данных, и ничего не выдумывать? Может, я вообще не в ту сторону копаю, и есть способ куда проще? |
|||
|
1
toypaul
гуру
08.09.26
✎
13:12
|
Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(Ресурс)", "Группировка"))
|
|||
|
2
toypaul
гуру
08.09.26
✎
13:14
|
Из описания задачи ничего не понял. Если ресурс задан для группы, то в выражении ресурса просто вывести его без всяких сумма или максимум
|
|||
|
3
kostyan29
08.09.26
✎
13:25
|
(1) (2) Если просто вывести без сумм и максимум, то в этом случае он просто выводит первое значение из элементов. Значение, заданное для самой группы, он не хочет брать ни в какую.
Если использовать что-то типа Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(Ресурс)", "Группировка")) , то все равно не то - берет данные из элементов, входящих в группу, а это не то, что нужно. |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |