Lade...
 

CX_EXPANDABLE::ConditionedFilter

CX_EXPANDABLE::ConditionedFilter

Beschreibung:

Dieses Objekt wird für die Dauer der Formelauswertung in einen neuen Plugspace gestellt. Der übergebene Formelausdruck wird gegen diesen Plugspace ausgewertet und falls das Ergebnis zu TRUE ausgewertet wird, dann wird dieses Objekt zurückgegeben, ansonsten wird NULL zurückgegeben.

Die Funktionsweise von ConditionedFilter ist äquivalent zu folgendem InstantView-Code:

Var(expandable formula, result) -> expandable CreateTransObject(CX_FORMULA) -> formula formula Put PlugSpacePush [ expandable ] PlugSpace formula Call(Evaluate) -> result PlugSpacePop result if expandable else NULL

 

Hinweis:
Wird eine Formel ausgeführt, so werden alle Objekte sequentiell im Plugspace nach dem gesuchten Datenfeld durchsucht. Sind im Plugspace nun aber nicht nur Belege, die zum Beispiel ein Datenmember "transaction" haben, sondern auch einfache Werte als Objekte, dann würde die Auswertung der Formel einen Fehler bringen, weil auch vom einfachen Wert versucht wird, das Datenfeld "transaction" auszulesen, was es aber nicht hat. Hier ist die Lösung, vor das gewünschte Datenfeld den ConditionedFilter zu setzen.

(Für weniger komplexe Zugriffspfade s.a ClassFilter.)

Code-Beispiel (wird gern in Übergangsbeschreibungen von Geschäftsprozessen oder Bedingungen in Transaktionsbeschreibungen benutzt):
// 1. Beispiel
ConditionedFilter("inherited(this, CX_LINK_TXN)").FirstSuccessorByCondition("type(TopTransaction())=CX_ITEM_DEMAND")

// 2. Beispiel
"type(this)=CX_OFFER | type(this)=CX_STOCK_ORDER | type(this)=CX_BUDGET_OFFER" object Call(ConditionedFilter)
Stack
Stack Position Objekttyp Kurzbeschreibung
Stack(In) Top CX_EXPANDABLE Dieses Objekt
  Top-1 STRING Auszuwertender Formelausdruck
Stack(Out) Top CX_EXPANDABLE | NULL Dieses Objekt, falls die Formel zu TRUE ausgewertet wurde, ansonsten NULL

Funktionsaufruf: Call(ConditionedFilter