Всем привет!
Помогите найти оптимальное решение типовой задачи. Я хочу исключить из расчета некоторые значения чего-бы то ни было. Для этого делаю альтернативное состояние St1 и присваиваю это состояние объекту типа "Список".
И пишу, к примеру, выражение: sum({1-St1} Revenue)
Все хорошо, когда в списке что-то выбрано. Но проблема в том, что если в состоянии St1 не выбрано ничего, то считается, что выбрано всё, и моя сумма, естественно обнуляется.
Как проще всего сказать клику, что если в состоянии не выбрано ничего, то это значит, что не выбрано ничего! :)
На языке множеств задача звучит так: Есть множество А и его подмножество B. Необходимо построить множество Д, которое пусто, когда A=Б, и равно Б в остальных случаях.
Спасибо!
Цитата: nemp от 27 марта 2019, 01:27:34 Всем привет!
Помогите найти оптимальное решение типовой задачи. Я хочу исключить из расчета некоторые значения чего-бы то ни было.
Альтернативные состояния - как слои в фотошопе. Если вы включили объект в слой, то все остальные объекты должны быть либо в этом слое, либо в выражениях это должно учитываться.
Для вашей задачи исключения достаточно использовать анализ множеств.
например
sum({<Group-={"Исключаемое"}>} Revenue)
Виноват, не понял. Что такое "Исключаемое" в Вашем выражении? Это же пока просто строка...
Должно же быть альтернативное состояние с этим названием, или закладка. А если так, то почему не написать без знака "=" и кавычек?
Для чего Вы хотите использовать альтернативные состояния?
Похоже я не понял вопрос.
Если требуется выражение считать только в случае выборки в альтернативном состоянии, можно проверить состояние выборки функцией из серии getselect.... по хелпу посмотрите.
Т.е. если в альтернативном выбрано getcurrentselections({Состояние})>0 то считаем, иначе нет.
Цитата: admin от 27 марта 2019, 04:11:52 Для чего Вы хотите использовать альтернативные состояния?
Попробую короче сформулировать задачу: у меня на экране список, к примеру, городов (City). И сумма выручки sum(Revenue).
Мне нужно, чтобы сумма считалась БЕЗ выбранных в списке городов. Я решил это просто: присвоил списку альтернативное состояние st1 и записал сумму так: sum({$-st1} Revenue).
Проблема только в том, что если не выбран ни один город, эта сумма - ноль. А должна быть равна общей выручке по всем городам.
сделайте разницу сумм от общей вычитайте выборку по альтернативе
В итоге вот такой "уродец" получился:
Sum({$-St1*$(=isnull(GetCurrentSelections('_','_','_',1,'St1'))+1)} Revenue)
Выражение под $() принимает значение 0 (т.е. пустое множество), когда ничего не выбрано, и 1 - когда что-то выбрано.
Работает.
Но не уверен, что такое решение оптимально с точки зрения производительности :(
Спасибо!