|
Расчет средних показателей в отчетах на СКД | ☑ | ||
---|---|---|---|---|
0
nemoxp
27.09.16
✎
12:58
|
Есть выборка типа (перечисляю атрибуты): номенклатура, документ оприходования, документ продажи, стоимость продаж, прибыль, эффективность. Эффективность расчитываю как Прибыль / СтоимостьПродаж * 100%. Расчет идет по документам оприходования, т.е. 1 документу продажи может соответствовать много документов оприходования. Строю отчет на СКД. Группировка по строкам от верхнего уровня иерархии до нижнего: номенклатура, документ продажи, документ оприходования. Детальные записи: стоимость продаж, прибыль, эффективность. Требуется вычислять эффективность по группировкам. Я это сделал в настройках СКД на закладке "Ресурсы", установив формулу расчета "СРЕДНЕЕ". Для полей "Стоимость продаж" и "Прибыль" по группировкам вычисляется СУММА.
Незадача в том, что результат расчета среднего значения Эффективности в группировке не соответствует расчету по значениям из той же группировки: "Прибыль / СтоимостьПродаж * 100%". И это математически верно, т.к. нижняя группировка по реализациям с несколькими оприходованиями портит картину... Как можно исправить ситуацию, чтобы расчет Эффективности по группировкам соответствовал значениям "Стоимость продаж" и "Прибыль" в той же группировки? |
|||
1
segn
27.09.16
✎
13:04
|
Попробуй ВычислитьВыражение() - там можно указать по какой группировке считать.
|
|||
2
vicof
27.09.16
✎
13:05
|
По умолчанию все агрегатные функции применяются к детальным записям - проблема в этом.
|
|||
3
nemoxp
27.09.16
✎
13:16
|
(1) где это указывать?
|
|||
4
nemoxp
27.09.16
✎
13:23
|
(1) Нашел. В вычисляемых полях, верно? Например: ВычислитьВыражение(Прибыль / СтоимостьПродаж * 100%, ....)? А что дальше в параметрах указать?
|
|||
5
aleks_default
27.09.16
✎
13:55
|
Сделай Среднее(Прибыль) / Среднее(СтоимостьПродаж) * 100%
|
|||
6
тарам пам пам
27.09.16
✎
14:44
|
(5) Вообще-то Среднее(Прибыль / СтоимостьПродаж * 100%) <> Среднее(Прибыль) / Среднее(СтоимостьПродаж) * 100%
Нужно сделать Среднее(ВычислитьВыражениеСГруппировкойМассив("Сумма(Прибыль) / Сумма(СтоимостьПродаж) * 100%", "ДокументОприходования")) |
|||
7
тарам пам пам
27.09.16
✎
14:46
|
(6)+ только "ДокументПродажи" там вместо "ДокументОприходования"
|
|||
8
тарам пам пам
27.09.16
✎
14:48
|
Блин, прочитал по диагонали вопрос и неверно понял его. Тебе похоже вообще в ресурсе нужно указать Сумма(Прибыль) / Сумма(СтоимостьПродаж) * 100% и не заморачиваться с ВычислитьВыражение.
|
|||
9
nemoxp
28.09.16
✎
13:30
|
Всем спасибо за участие! Но что-то все не то. Нужно чтобы Эффективность считалась по каждой строке, в т.ч. и по группировкам. Сделал по-другому. После формирования отчета и его вывода в ТабДок пробигаюсь по строкам и перерасчитываю значения Эффективности, примерно так:
ПолеЭффективность = ЭлементыФормы.Результат.НайтиТекст("Эффективность"); ПолеПрибыль = ЭлементыФормы.Результат.НайтиТекст("Прибыль"); ПолеСтоимость = ЭлементыФормы.Результат.НайтиТекст("Стоимость"); Для н = ПолеЭффективность.Верх По ЭлементыФормы.Результат.Высота Цикл Попытка Прибыль = Число(ЭлементыФормы.Результат.Область("R" + Строка(н) + "C" + Строка(ПолеПрибыль.Лево)).Текст); Стоимость = Число(ЭлементыФормы.Результат.Область("R" + Строка(н) + "C" + Строка(ПолеСтоимость.Лево)).Текст); ЭлементыФормы.Результат.Область("R" + Строка(н) + "C" + Строка(ПолеЭффективность.Лево)).Текст = Прибыль / Стоимость * 100; Исключение КонецПопытки КонецЦикла; |
|||
10
KrasnSergey
28.09.16
✎
13:39
|
В ресурсах примерно так
Среднее(ВычислитьВыражениеСГруппировкойМассив("Максимум(КоличествоСтавок)","Должность")) |
|||
11
aleks_default
28.09.16
✎
14:29
|
Ты бы толком объяснил что конкретно тебе надо, формулу расчета по группировкам. Не пришлось бы извращаться. СКД позволяет рассчитать практически все.
|
|||
12
nemoxp
29.09.16
✎
11:26
|
(11) Группировка по строкам от верхнего уровня иерархии до нижнего: номенклатура, документ продажи, документ оприходования. Детальные записи: стоимость продаж, прибыль, эффективность.
Расчет Эффективности нужно делать по значениям в группировки, а не по детальным записям. Т.е. в группировки уровня "документ продажи" значения стоимость продаж и прибыль определяется как сумма по детальным записям. Эффективность по этой группировки нужно считать как: (сумма прибыли по группировки "документы продаж") / (сумму стоимость продаж по той же группировки) * 100 |
|||
13
aleks_default
29.09.16
✎
11:32
|
(12) тогда как-то так
Сумма(ВычислитьВыражениеСГруппировкойМассив("Сумма(Прибыль)","ДокументПродажи"))/Сумма(ВычислитьВыражениеСГруппировкойМассив("Сумма(СтоимостьПродаж)","ДокументПродажи"))*100 |
|||
14
nemoxp
29.09.16
✎
11:36
|
(8) это вроде работает. проверяю. спасибо всем! только сейчас вникаю в функции для расчета вычисляемых полей!
|
|||
15
aleks_default
29.09.16
✎
11:36
|
Вернее если это расчет для группировки "Документ продажи", то
Сумма(ВычислитьВыражениеСГруппировкойМассив("Сумма(Прибыль)","ДокументОприходования"))/Сумма(ВычислитьВыражениеСГруппировкойМассив("Сумма(СтоимостьПродаж)","ДокументОприходования"))*100 |
|||
16
nemoxp
29.09.16
✎
11:37
|
(13) но это только для одного уровня группировки, для "ДокументПродажи". (8) - а это вроде подходит для всех группировок...
|
|||
17
aleks_default
29.09.16
✎
11:37
|
Или там если не сумма а среднее, замени где нужно
|
|||
18
nemoxp
29.09.16
✎
11:42
|
(15) а как написать, если группировок 3, а нужно такое вычислить только для 2-х?
|
|||
19
aleks_default
29.09.16
✎
11:54
|
Там есть колонка "Рассчитывать по".
И один и тот же ресурс можно добавлять на закладке "Ресурсы" несколько раз и через "рассчитывать по" разграничивать по каким группировкам какое выражение считать. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |