Имя: Пароль:
1C
1С v8
Неправильно рассчитываются итоги в иерархической группировке на СКД.
,
0 vakrikun
 
24.08.17
12:47
Здравствуйте, прошу помочь разобраться. Есть отчет на СКД с группировками: Номенклатура (Иерархия), Серия. Есть ресурс "Цена" для каждой серии.
Задача состоит в том, чтобы посчитать среднее значение цены в разрезе номенклатуры, т.е. отчет выходит в следующем виде:

- Номенклатура (Иерархия) | Сред.цена
-- Серия                  | Сред.цена

Конкретно на примере:

- Группа Мебель                    | Уровень иерархии 1
-- Группа Стулья                     | Уровень иерархии 2  
--- Номенклатура Стул Деревянный       | 15
    - Серия 1                              | 10
    - Серия 2                              | 20
--- Номенклатура Стул Железный         | 46,6
    - Серия 3                              | 10
    - Серия 4                              | 70
    - Серия 5                              | 60

Проблема в верхних уровнях группировки (уровень иерархии 1 и 2). Мне нужно, чтобы средняя цена для этих группировок рассчитывалась как средняя цена номенклатуры входящей в группу. Т.е. на данном примере это было бы (15 + 46,6) / 2 = 30,8

- Группа Мебель                    | 30,8
-- Группа Стулья                     | 30,8
--- Номенклатура Стул Деревянный       | 15
    - Серия 1                              | 10
    - Серия 2                              | 20
--- Номенклатура Стул Железный         | 46,6
    - Серия 3                              | 10
    - Серия 4                              | 70
    - Серия 5                              | 60

На данный момент отчет считает не среднюю цену номенклатуры, а среднюю цену всех серий входящих в группу.
Т.е (10 + 20 + 10 + 70 + 60) / 5 =  34:

- Группа Мебель                    | 34
-- Группа Стулья                     | 34
--- Номенклатура Стул Деревянный       | 15
    - Серия 1                              | 10
    - Серия 2                              | 20
--- Номенклатура Стул Железный         | 40
    - Серия 3                              | 10
    - Серия 4                              | 70
    - Серия 5                              | 60

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

Поле | Выражение | Рассчитывать по

Цена | Среднее(Цена) |
Цена | Среднее(ВычислитьВыражениеСГруппировкойМассив("Среднее(Цена)", "Номенклатура")) | Общий итог
1 breezee
 
24.08.17
13:09
(0) Может проще в запросе посчитать? Уже посчитана для номенклатуры, можно сгруппировать и разделить на количество номенклатур, наверное, используя группировки, до конца решения не вижу, но может это поможет)
2 vakrikun
 
24.08.17
13:24
(1) Это лишь один из ресурсов в которых надо посчитать сред. цену, а таких ещё в запросе более 10. Полезу в запрос увеличу время формирования отчета, которое и так не маленькое. Хотелось бы именно средствами СКД решить это. Ну наверняка же можно.
3 breezee
 
24.08.17
13:28
(2) Может на СКД "Рассчитывать по" твои ресурсы тебе поможет? На вкладке "Ресурсы".
4 vakrikun
 
24.08.17
13:36
(3) Не совсем понял.
5 vakrikun
 
24.08.17
13:44
(3) Я в ресурсах "рассчитывать по" шаманил разными способами. Всё равно не дает результат. Добился только, чтобы в общий итог выводилась правильная цифра, но в верхние папки не могу.
6 breezee
 
24.08.17
13:46
(4) Прошу прощения, не до конца дочитал первый пост.
Может стоит вывести в запросе поле со значение 0, для расчетов, потом в ресурсах это поле вывести, в выражении написать "Среднее(Цена)" а в рассчитывать по "Номенклатура" я думаю, можеть быть проблема что ты рассчитываешь по общему итогу, а не по полю "номенклатура"
7 vakrikun
 
24.08.17
14:01
(6) Попробовал. Результат тот же: средняя цена по номенклатуре правильная, а выше в группировках средняя цена рассчитана по сериям.
8 vakrikun
 
24.08.17
14:53
Нашел одно решение, может кому-то пригодится. В запросе добавляем поле "Номенклатура.родитель". На вкладке в СКД "Набор данных" - "Поля" в измерение Номенклатура ставим родитель "НоменклатураРодитель". Структуру отчета делаем таким образом:

НоменклатураРодитель(Иерархия)
   Номенклатура
        Серия

Ресурсы:
Поле | Выражение | Рассчитывать по

Цена | Среднее(Цена) | Номенклатура
Цена | Среднее(ВычислитьВыражениеСГруппировкойМассив("Среднее(Цена)", "Номенклатура")) | НоменклатураРодитель Иерархия, Общий итог
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс