Выбор исключаемых значений в Set Analysis

Автор nemp, 27 марта 2019, 01:27:34

« назад - далее »

nemp

Всем привет!
Помогите найти оптимальное решение типовой задачи. Я хочу исключить из расчета некоторые значения чего-бы то ни было. Для этого делаю альтернативное состояние St1 и присваиваю это состояние объекту типа "Список".
И пишу, к примеру, выражение: sum({1-St1} Revenue)
Все хорошо, когда в списке что-то выбрано. Но проблема в том, что если в состоянии St1 не выбрано ничего, то считается, что выбрано всё, и моя сумма, естественно обнуляется.
Как проще всего сказать клику, что если в состоянии не выбрано ничего, то это значит, что не выбрано ничего! :)
На языке множеств задача звучит так: Есть множество А и его подмножество B. Необходимо построить множество Д, которое пусто, когда A=Б, и равно Б в остальных случаях.
Спасибо!

admin

Цитата: nemp от 27 марта  2019, 01:27:34  Всем привет!
Помогите найти оптимальное решение типовой задачи. Я хочу исключить из расчета некоторые значения чего-бы то ни было.
Альтернативные состояния - как слои в фотошопе. Если вы включили объект в слой, то все остальные объекты должны быть либо в этом слое, либо в выражениях это должно учитываться.
Для вашей задачи исключения достаточно использовать анализ множеств.
например sum({<Group-={"Исключаемое"}>} Revenue)

nemp

Виноват, не понял. Что такое "Исключаемое" в Вашем выражении? Это же пока просто строка...
Должно же быть альтернативное состояние с этим названием, или закладка. А если так, то почему не написать без знака "=" и кавычек?

admin

#3
Для чего Вы хотите использовать альтернативные состояния?

Похоже я не понял вопрос.

Если требуется выражение считать только в случае выборки в альтернативном состоянии, можно проверить состояние выборки функцией из серии getselect.... по хелпу посмотрите.
Т.е. если в альтернативном выбрано getcurrentselections({Состояние})>0 то считаем, иначе нет.

nemp

Цитата: admin от 27 марта  2019, 04:11:52  Для чего Вы хотите использовать альтернативные состояния?
Попробую короче сформулировать задачу: у меня на экране список, к примеру, городов (City). И сумма выручки sum(Revenue).
Мне нужно, чтобы сумма считалась БЕЗ выбранных в списке городов. Я решил это просто: присвоил списку альтернативное состояние st1 и записал сумму так: sum({$-st1} Revenue).
Проблема только в том, что если не выбран ни один город, эта сумма - ноль. А должна быть равна общей выручке по всем городам.

admin

сделайте разницу сумм от общей вычитайте выборку по альтернативе

nemp

В итоге вот такой "уродец" получился:
Sum({$-St1*$(=isnull(GetCurrentSelections('_','_','_',1,'St1'))+1)} Revenue)Выражение под $() принимает значение 0 (т.е. пустое множество), когда ничего не выбрано, и 1 - когда что-то выбрано.
Работает.
Но не уверен, что такое решение оптимально с точки зрения производительности :(
Спасибо!

Яндекс.Метрика