Доброго времени суток!
Стоит задача:
Есть план по установке цены в зависимости от доступного количества номенклатуры к продаже. Нужно вывести по каждой номенклатуре эту плановую цену в зависимости от фактического остатка номенклатуры. (см. вложение). (Цена здесь рассчитывается как Стоимость делить на Площадь) Т.е. просто сравниваем кол-во по факту с кол-ом из таблицы плана по установке цены и выводим нужную цену. Но есть одно но, в таблице визуализации присутствует иерархия по этим номенклатурам. Соответственно при простом сравнивании на уровнях иерархии выше будет уже не средняя цена, а ее сумма. Чтобы этого избежать сначала в мере считаем условие по площади и отдельно по стоимости, а потом делим одно на другое и получаем среднюю цену. Но и после этого формула на уровне иерархии выше работает не правильно, т.к. она начинает сравнивать остаток товара в целом по иерархии с остатком из таблицы плана, а нужно, чтобы сравнивала отдельно по каждому товара (т.к. для каждого товара разное условие). Эту проблему я решил через SWITCH и ISINSCOPE, сложил каждое условие по площади с отбором по конкретному товару и это выражение вложил на верхние уровни иерархии:
ПлощадьПовышИерарх = var S = CALCULATE([ПП_Площадь повышения], 'Таблица1'[Товар] = "A1") + CALCULATE([ПП_Площадь повышения], 'Таблица1'[Товар] = "A2")+ CALCULATE([ПП_Площадь повышения], 'Таблица1'[Товар] = "В1") +CALCULATE([ПП_Площадь повышения], 'Таблица1'[Товар] = "В2")+CALCULATE([ПП_Площадь повышения], 'Таблица1'[Товар] = "С1")+CALCULATE([ПП_Площадь повышения], 'Таблица1'[Товар] = "С2")
return
SWITCH(TRUE(),
ISINSCOPE('Таблица1[Товар]), [ПП_Площадь повышения],
ISINSCOPE('СвязаннаяТаблица'[Группы товаров1]), S,
ISINSCOPE('СвязаннаяТаблица'[Группы товаров Итого]), S,
S)
?И точно также для стоимости, а потом делением друг на друга получил среднюю цену.
?
В этом случае все вычисления происходят корректно, но в опубликованном файле визуализация не воспроизводится, т.к. не хватает памяти для вычисления (видимо потому-что товаров очень много и вот таких выражений CALCULATE([ПП_Площадь повышения], 'Таблица1'[Товар] = "A1") суммируется порядка 60 штук).
?
?Может кто знает как реализовать расчет средней цены на уровнях иерархий по другому, более просто в вычислении. Может как-то можно сложить вычисления на нижнем уровне? Т.е. вычислить выражения на нижнем уровне получить из них константу и подставить их сумму в верхний уровень...
Стоит задача:
Есть план по установке цены в зависимости от доступного количества номенклатуры к продаже. Нужно вывести по каждой номенклатуре эту плановую цену в зависимости от фактического остатка номенклатуры. (см. вложение). (Цена здесь рассчитывается как Стоимость делить на Площадь) Т.е. просто сравниваем кол-во по факту с кол-ом из таблицы плана по установке цены и выводим нужную цену. Но есть одно но, в таблице визуализации присутствует иерархия по этим номенклатурам. Соответственно при простом сравнивании на уровнях иерархии выше будет уже не средняя цена, а ее сумма. Чтобы этого избежать сначала в мере считаем условие по площади и отдельно по стоимости, а потом делим одно на другое и получаем среднюю цену. Но и после этого формула на уровне иерархии выше работает не правильно, т.к. она начинает сравнивать остаток товара в целом по иерархии с остатком из таблицы плана, а нужно, чтобы сравнивала отдельно по каждому товара (т.к. для каждого товара разное условие). Эту проблему я решил через SWITCH и ISINSCOPE, сложил каждое условие по площади с отбором по конкретному товару и это выражение вложил на верхние уровни иерархии:
ПлощадьПовышИерарх = var S = CALCULATE([ПП_Площадь повышения], 'Таблица1'[Товар] = "A1") + CALCULATE([ПП_Площадь повышения], 'Таблица1'[Товар] = "A2")+ CALCULATE([ПП_Площадь повышения], 'Таблица1'[Товар] = "В1") +CALCULATE([ПП_Площадь повышения], 'Таблица1'[Товар] = "В2")+CALCULATE([ПП_Площадь повышения], 'Таблица1'[Товар] = "С1")+CALCULATE([ПП_Площадь повышения], 'Таблица1'[Товар] = "С2")
return
SWITCH(TRUE(),
ISINSCOPE('Таблица1[Товар]), [ПП_Площадь повышения],
ISINSCOPE('СвязаннаяТаблица'[Группы товаров1]), S,
ISINSCOPE('СвязаннаяТаблица'[Группы товаров Итого]), S,
S)
?И точно также для стоимости, а потом делением друг на друга получил среднюю цену.
?
В этом случае все вычисления происходят корректно, но в опубликованном файле визуализация не воспроизводится, т.к. не хватает памяти для вычисления (видимо потому-что товаров очень много и вот таких выражений CALCULATE([ПП_Площадь повышения], 'Таблица1'[Товар] = "A1") суммируется порядка 60 штук).
?
?Может кто знает как реализовать расчет средней цены на уровнях иерархий по другому, более просто в вычислении. Может как-то можно сложить вычисления на нижнем уровне? Т.е. вычислить выражения на нижнем уровне получить из них константу и подставить их сумму в верхний уровень...