Eigenschaft: Unterschied zwischen den Versionen

Aus Asprova Hilfe
Wechseln zu: Navigation, Suche
(Formatierung und Ausdruck)
(Unique( list ))
 
(10 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{DISPLAYTITLE:Eigenschaft}}
+
{{DISPLAYTITLE:Eigenschaft & Klasse}}
 
<div align="right">Hilfe Nummer: 741560</div>
 
<div align="right">Hilfe Nummer: 741560</div>
<div align="right">[[Interne Funktionen|Interne Funktionen]]</div>
+
<div align="right">[[Interne Funktionen]]</div>
<div align="right">[[Formeleditor|Formeldialog]]</div>
+
<div align="right">[[Formeleditor]]</div>
 
<hr>
 
<hr>
 +
 
Interne Funktionen, die auf Eigenschaften angewendet werden können.
 
Interne Funktionen, die auf Eigenschaften angewendet werden können.
  
{| class="wikitable" width="600"
+
== Gültigkeit ==
|+FValid(prop)
+
<code>Exist()</code>, <code>FValid()</code> und <code>PropCount()</code> ähneln sich, sie unterscheiden sich wie folgt:
!width="100"|Parameter
+
; <code>Exist()</code>
|width="100"|''prop''||width="400"|Eigenschaft des Objekts
+
: Gibt zurück ob Eigenschaftswert gesetzt ist; es kann bestimmt werden, ob deren [Standardwert] berücksichtigt wird.
 +
; <code>FValid()</code>
 +
: Gibt zurück ob Eigenschaftswert oder deren [Standardwert] gesetzt ist.
 +
; <code>PropCount()</code>
 +
: Gibt die Anzahl der Eigenschaftswerte zurück ohne den [Standardwert] zu zählen.
 +
Die Geschwindigkeit der Auswertung dieser drei Funktionen unterscheidet sich kaum.
 +
 
 +
=== Exist( prop ) ===
 +
Die Funktion kann überladen und somit auch mit anderen Parametern genutzt werden: '''Exist( prop, checkDefaultValue )'''
 +
{| class="wikitable"
 +
|-
 +
|
 +
!colspan="2"|Variante 1!!colspan="2"|Variante 2
 +
|-
 +
!rowspan="2"|Parameter
 +
|width="1px"|''prop''||Eigenschaft des Objekts||width="1px"|''prop''||Eigenschaft des Objekts
 +
|-
 +
|colspan="2"| ||''checkDefaultValue''||[Standardwert] berücksichtigen
 +
|-
 +
!Rückgabewert
 +
|colspan="2"|Gibt TRUE zurück, wenn ''prop'' einen Wert enthält oder deren [Standardwert] gesetzt ist.||colspan="2"|Gibt TRUE zurück, wenn ''prop'' einen Wert enthält.
 +
|-
 +
!rowspan="2"|Beispiel
 +
|<code>Exist(ME.RightOrder)</code>||TRUE|||<code>Exist(ME.PeggingConditionExpr,TRUE)</code>||FALSE
 +
|-
 +
|colspan="2"|<code>ME</code> ist hier ein Auftrag.||colspan="2"|<code>ME</code> ist hier ein Artikel, dessen [Verknüpfungsbedingung] nicht gesetzt ist.
 +
|-
 +
!Bemerkungen
 +
|colspan="2"|Verhalten ist gleich dem bei ''checkDefaultValue'' FALSE.||colspan="2"|
 +
* Bei ''checkDefaultValue'' TRUE enspricht das Verhalten dem von <code>FValid(prop)</code>.
 +
* Bei ''checkDefaultValue'' FALSE enspricht das Verhalten dem von <code>PropCount(prop)>0</code>.
 +
|-
 +
|}
 +
 
 +
=== ExistIF( objects, condition ) ===
 +
{| class="wikitable"
 +
|-
 +
!rowspan="2"|Parameter
 +
|width="1px"|''objects''||Klasse oder Objektliste
 +
|-
 +
|''condition''||Bedingung, <code>TARGET</code>-Variablen können genutzt werden.
 
|-
 
|-
 
!Rückgabewert
 
!Rückgabewert
|colspan="2"|<code>TRUE</code> wenn Eigenschaft einen Wert enthält ist, sonst <code>FALSE</code>
+
|colspan="2"|Gibt TRUE zurück, wenn mindestens eins der Objekte in ''objects'' die ''condition'' erfüllt..
 
|-
 
|-
 
!rowspan="2"|Beispiel
 
!rowspan="2"|Beispiel
|colspan="2"|<code>FValid(ME.Qty)</code> --> <code>FALSE</code>
+
|<code>ExistIF(ME.Order.RightmostOrder,TARGET.Qty>=100)</code>||TRUE
 +
|-
 +
|colspan="2"|<code>ME</code> ist hier ein Auftrag, der mindestens einen Auftrag in [Aufträge ganz rechts] hat, dessen [Menge] mindestens 100 ist].<br>Funktional entspricht das Beispiel <code>SumIF(ME.Order.RightmostOrder,TARGET.Qty>=100,1)>0</code>, allerdings wird es in der Regel schneller ausgewertet, da die Auswertung beendet wird, sobald ein Objekt die ''condition'' erfüllt.
 
|-
 
|-
|colspan="2"|<code>ME</code> ist ein Auftrag. Ist <code>ME.Qty</code> ungültig, wird <code>FALSE</code> zurückgegeben. (Ist <code>ME.'Auftragsmenge</code> nicht ungültig, wird <code>TRUE</code> zurückgegeben.)
+
!Bemerkungen
 +
|colspan="2"|
 +
* Ähnelt <code>CheckAllContents_Or()</code>, dort können aber keine <code>TARGET</code>-Variablen genutzt werden.
 +
* Klassen werden mit ihrem internen Namen, von einfachen Anführungszeichen umschlossen, eingegeben, also etwa 'Order' für die Auftragsklasse.
 
|-
 
|-
 
|}
 
|}
  
{| class="wikitable" width="600"
+
=== FValid( prop ) ===
|+PropCount(prop)
+
{| class="wikitable"
!width="100"|Parameter
+
|-
|width="100"|''prop''||width="400"|Array-Eigenschaft des Objekts
+
!Parameter
 +
|width="1px"|''prop''||Eigenschaft des Objekts
 
|-
 
|-
 
!Rückgabewert
 
!Rückgabewert
|colspan="2"|Anzahl der Array-Elemente
+
|colspan="2"|TRUE wenn ''prop'' einen Wert enthält, sonst FALSE.
 
|-
 
|-
 
!rowspan="2"|Beispiel
 
!rowspan="2"|Beispiel
|colspan="2"|<code>PropCount(ME.Comments)</code> --> 3
+
|<code>FValid(ME.Qty)</code>||FALSE
 
|-
 
|-
|colspan="2"|Gibt es drei Kommentare, wird 3 wiedergegeben.<br>[[Image:incodefunc-prop01.jpg]]
+
|colspan="2"|<code>ME</code> ist hier ein Auftrag.
 
|-
 
|-
 
|}
 
|}
  
{| class="wikitable" width="600"
+
=== PropCount( prop ) ===
|+CheckAllContents_And(prop,condition,value)
+
{| class="wikitable"
 
|-
 
|-
!rowspan="3" width="100"|Parameter
+
!Parameter
|width="100"|''prop''||width="400"|Eigenschaft des Objekts
+
|width="1px"|''prop''||Eigenschaft des Objekts
 +
|-
 +
!Rückgabewert
 +
|colspan="2"|Gibt die Anzahl der Eigenschaftswerte von ''prop'' zurück, der [Standardwert] wird nicht gezählt.
 +
|-
 +
!rowspan="2"|Beispiel
 +
|<code>ME.Comments</code>||3
 +
|-
 +
|colspan="2"|<code>ME</code> ist hier ein Auftrag mit drei Einträgen für [Kommentar].
 +
|-
 +
|}
 +
 
 +
=== CheckAllContents_And( prop, condition, value ) ===
 +
{| class="wikitable"
 +
|-
 +
!rowspan="3"|Parameter
 +
|width="1px"|''prop''||Eigenschaft des Objekts
 
|-
 
|-
 
|''condition''||Vergleichsoperator
 
|''condition''||Vergleichsoperator
 
|-
 
|-
|''value''||Vergleichsbedingung
+
|''value''||Vergleichswert
 
|-
 
|-
 
!Rückgabewert
 
!Rückgabewert
|colspan="2"|Ist der Eigenschaftswert gleich dem Vergleichsoperator und der Vergleichsbedingung, <code>TRUE</code>. Andernfalls <code>FALSE</code>. Enthält die Eigenschaft mehrere Werte, müssen alle Werte die Bedingung erfüllen, damit <code>TRUE</code> zurückgegeben wird.
+
|colspan="2"|Gibt TRUE zurück, wenn alle Eigenschaftswerte von ''prop'' ''condition'' und ''value'' entsprechen.
 
|-
 
|-
 
!rowspan="2"|Beispiel
 
!rowspan="2"|Beispiel
|colspan="2"|<code>CheckAllContents_And(ME.Comments,'==','c')</code> --> <code>FALSE</code>
+
|<code><code>CheckAllContents_And(ME.Comments,'==','c')</code>||FALSE
 
|-
 
|-
|colspan="2"|[Kommentar] der Auftrags lautet "a;b;c;d". Da nicht jedes Element "c" entspricht, wird <code>FALSE</code> zurückgegeben.
+
|colspan="2"|<code>ME</code> ist hier ein Auftrag mit [Kommentar] "a;b;c;d", es sind also nicht alle Werte gleich "c".
 
|-
 
|-
|}  
+
|}
  
{| class="wikitable" width="600"
+
=== CheckAllContents_Or( prop, condition, value ) ===
|+CheckAllContents_Or(prop,condition,value)
+
{| class="wikitable"
 
|-
 
|-
!rowspan="3" width="100"|Parameter
+
!rowspan="3"|Parameter
|width="100"|''prop''||width="400"|Eigenschaft des Objekts
+
|width="1px"|''prop''||Eigenschaft des Objekts
 
|-
 
|-
 
|''condition''||Vergleichsoperator
 
|''condition''||Vergleichsoperator
 
|-
 
|-
|''value''||Vergleichsbedingung
+
|''value''||Vergleichswert
 +
|-
 +
!Rückgabewert
 +
|colspan="2"|Gibt TRUE zurück, wenn mindestens ein Eigenschaftswert von ''prop'' ''condition'' und ''value'' entsprechen.
 +
|-
 +
!rowspan="2"|Beispiel
 +
|<code><code>CheckAllContents_Or(ME.Comments,'==','c')</code>||TRUE
 +
|-
 +
|colspan="2"|<code>ME</code> ist hier ein Auftrag mit [Kommentar] "a;b;c;d", ein Werte ist also gleich "c".
 +
|-
 +
|}
 +
 
 +
== Objekte ==
 +
=== GetObjectName( obj ) ===
 +
{| class="wikitable"
 +
|-
 +
!Parameter
 +
|width="1px"|''obj''||Objekt
 
|-
 
|-
 
!Rückgabewert
 
!Rückgabewert
|colspan="2"|Ist der Eigenschaftswert gleich dem Vergleichsoperator und der Vergleichsbedingung, <code>TRUE</code>. Andernfalls <code>FALSE</code>. Enthält die Eigenschaft mehrere Werte, muss nur ein Werte die Bedingung erfüllen, damit <code>TRUE</code> zurückgegeben wird.
+
|colspan="2"|Gibt den Objektnamen von ''obj'' zurück.
 
|-
 
|-
 
!rowspan="2"|Beispiel
 
!rowspan="2"|Beispiel
|colspan="2"|<code>CheckAllContents_Or(ME.Comments,'==','c')</code> --> <code>TRUE</code>
+
|<code>GetObjectName(PROJECT)</code>||"Beispiel 1"
 
|-
 
|-
|colspan="2"|[Kommentar] der Auftrags lautet "a;b;c;d". Da ein Element "c" entspricht, wird <code>TRUE</code> zurückgegeben.
+
|colspan="2"|Wenn [Alias] des Projekts "Beispiel 1" ist.
 
|-
 
|-
|}  
+
!Bemerkung
 +
|colspan="2"|Es werden [Alias], [Anzeigename] und [Name] (in dieser Reihenfolge) ausgewertet.
 +
|}
  
{| class="wikitable" width="600"
+
=== DisplayStr( prop ) ===
|+GetObjectName(obj)
+
{| class="wikitable"
!width="100"|Parameter
+
|-
|width="100"|''obj''||width="400"|Objekt
+
!Parameter
 +
|width="1px"|''prop''||Objekteigenschaft
 
|-
 
|-
 
!Rückgabewert
 
!Rückgabewert
|colspan="2"|Namen eines Objektes, gegeben als Argument durch [Alias], [Anzeigenamen] und [Namen] in der aktuellen Reihenfolge
+
|colspan="2"|Gibt den Wert zurück, der von der [Anzeigeformel] für ''prop'' zurückgegeben würde.
 
|-
 
|-
 
!rowspan="2"|Beispiel
 
!rowspan="2"|Beispiel
|colspan="2"|<code>GetObjectName(PROJECT)</code> --> "Beispiel1"
+
|<code>DisplayStr(ME.Qty)</code>||"50 Stück"
 
|-
 
|-
|colspan="2"|Gibt es einen [Alias], so wird dieser zurückgegeben, sonst der [Name].<br>[[Image:incodefunc-prop02.jpg]]
+
|colspan="2"|<code>ME</code> ist hier ein Auftrag mit [Menge] und die [Anzeigeformel] von [Menge] <code>INPUT+' Stück'</code> ist.
 
|-
 
|-
 
|}
 
|}
  
{| class="wikitable" width="600"
+
=== GetEnumName( prop ) ===
|+DisplayStr(prop)
+
{| class="wikitable"
!width="100"|Parameter
+
|-
|width="100"|''prop''||width="400"|Eigenschaft des Objekts
+
!Parameter
 +
|width="1px"|''prop''||Aufzählungseigenschaft
 
|-
 
|-
 
!Rückgabewert
 
!Rückgabewert
|colspan="2"|Bewertungsergebnis der [Anzeigeformel] der Eigenschaft, falls diese gesetzt ist
+
|colspan="2"|Gibt den Namen des Eigenschafswerts von ''prop'' zurück.
 
|-
 
|-
 
!rowspan="2"|Beispiel
 
!rowspan="2"|Beispiel
|colspan="2"|<code>DisplayStr(ME.Qty)</code> --> "50 Stück"
+
|<code>GetEnumName(ME.Status)</code>||"Freigegeben"
 
|-
 
|-
|colspan="2"|<code>ME</code> ist ein Auftrag, die [Anzeigeformel] der [Menge] lautet hier <code>ME.Qty+' Stück'</code>.
+
|colspan="2"|<code>ME</code> ist hier ein Vorgang mit [Status] "I".
 
|-
 
|-
 
|}
 
|}
 
   
 
   
{| class="wikitable" width="600"
+
=== ExpressionStr( prop, 0 ) ===
|+GetEnumName(prop)
+
{| class="wikitable"
!width="100"|Parameter
+
|-
|width="100"|''prop''||width="400"|Enum-Eigenschaft
+
!rowspan="2"|Parameter
 +
|''prop''||Eigenschaft deren Formel bezogen wird
 +
|-
 +
|''0''|''Wird nicht genutzt''
 +
|-
 +
!Rückgabewert
 +
|colspan="2"|Gibt den Formelstring von ''prop'' zurück.
 +
|-
 +
!rowspan="2"|Beispiel
 +
|colspan="2"|<code>Find(ExpressionStr(ME.VirtualPropertyExpression,0),'Format')</code>
 +
|-
 +
|colspan="2"|Filtert die Eigenschaftsdefinitionstabelle auf Einträge, deren [Virtuelle Eigenschaftsformel] "Format" enthält.
 +
|-
 +
|}
 +
 
 +
=== SetProps( objectList, expr ) ===
 +
{| class="wikitable"
 +
|-
 +
!rowspan="2"|Parameter
 +
|''objectList''||Objektliste deren Eigenschaften gesetzt werden sollen
 +
|-
 +
|''expr ''||Eigenschaftszuweisungsformel
 +
|-
 +
!Rückgabewert
 +
|colspan="2"|Setzt anhand von ''expr'' Eigenschaften der Objekte in ''objectList''.
 +
|-
 +
!rowspan="2"|Beispiel
 +
|colspan="2"|<code>SetProps(ME.LeftRecursiveOrder,TARGET.LET=ME.LET)</code>
 +
|-
 +
|colspan="2"|<code>ME</code> ist hier ein Auftrag, für den für alle Aufträge in [Übergeordnete Aufträge (rekursiv)] der [Fälligkeitstermin] auf den von <code>ME</code> gesetzt.
 +
|-
 +
|}
 +
 
 +
=== SetPropsIF( objectList, conditionExpr, expr ) ===
 +
{| class="wikitable"
 +
|-
 +
!rowspan="3"|Parameter
 +
|''objectList''||Objektliste deren Eigenschaften gesetzt werden sollen
 +
|-
 +
|''conditionExpr''||Filterformel
 +
|-
 +
|''expr ''||Eigenschaftszuweisungsformel
 +
|-
 +
!Rückgabewert
 +
|colspan="2"|Setzt anhand von ''expr'' Eigenschaften der Objekte in ''objectList'', die ''conditionExpr'' erfüllen.
 +
|-
 +
!rowspan="2"|Beispiel
 +
|colspan="2"|
 +
SetPropsIF(ME.LeftRecursiveOrder,
 +
      ME.IsReplenishmentOrder=='1'
 +
      && ME.LET<TARGET.LET,
 +
      TARGET.LET=ME.LET
 +
)
 +
|-
 +
|colspan="2"|<code>ME</code> ist hier ein Auftrag, für den für alle Aufträge in [Übergeordnete Aufträge (rekursiv)] der [Fälligkeitstermin] auf den [Fälligkeitstermin] von <code>ME</code> gesetzt wird, falls deren [Fälligkeitstermin] später als dieser ist.
 +
|-
 +
|}
 +
 
 +
=== StrProps( props, delimiter ) ===
 +
Die Funktion kann überladen und somit auch mit anderen Parametern genutzt werden: '''StrProps( objectList, expr, delimiter )'''
 +
{| class="wikitable"
 +
|-
 +
|
 +
!colspan="2"|Variante 1!!colspan="2"|Variante 2
 +
|-
 +
!rowspan="3"|Parameter
 +
|''props''||Zieleigenschaft (Array)||''objectList''||Objektliste
 +
|-
 +
|''delimiter''||Trennzeichen||''expr''||Formel die eine Eigenschaft vorgibt
 +
|-
 +
|colspan="2"| ||''delimiter''||Trennzeichen
 +
|-
 +
!Rückgabewert
 +
|colspan="2"|Gibt einen String mit den Eigenschaftswerten von ''props'', getrennt mit ''delimiter'', zurück.||colspan="2"|Gibt einen String mit den Eigenschaftswerten von ''expr'' der Objekte in ''objectList'', getrennt mit ''delimiter'', zurück.
 +
|-
 +
!rowspan="4"|Beispiele
 +
|<code>StrProps(ME.Comments,';')</code>||"X;Y;Z"||<code>StrProps(ME.Comments[2],';')</code>||"Y"
 +
|-
 +
|colspan="4"|<code>ME</code> ist hier ein Objekt mit [Kommentar] "X;Y;Z".
 +
|-
 +
|<code>StrProps(ME.Child,TARGET.Code,';')</code>||"A;B;C"||<code>StrProps(ME.Child[1],TARGET.Code,';')</code>||"A"
 +
|-
 +
|colspan="4"|<code>ME</code> ist hier ein Objekt, dessen [Untergeordnete Objekte] "A", "B" und "C" sind.
 +
|-
 +
|}
 +
 
 +
=== StrPropsIF( objectList, conditionExpr, expr, delimiter ) ===
 +
{| class="wikitable"
 +
|-
 +
!rowspan="4"|Parameter
 +
|''objectList''||colspan="2"|Objektliste deren Eigenschaften gesetzt werden sollen
 +
|-
 +
|''conditionExpr''||colspan="2"|Filterformel
 +
|-
 +
|''expr ''||colspan="2"|Eigenschaftszuweisungsformel
 +
|-
 +
|''delimiter''||colspan="2"|Trennzeichen
 +
|-
 +
!Rückgabewert
 +
|colspan="3"|Gibt einen String mit den Eigenschaftswerten von ''expr'' der Objekte in ''objectList'', getrennt mit ''delimiter'', zurück, die ''conditionExpr'' entsprechen.
 +
|-
 +
!rowspan="2"|Beispiel
 +
|<code>StrPropsIF(ME.Child,Len(TARGET.Code,)==4,TARGET.Code,';')</code>||"A:10;A:20"||"A:110" und "A:120" werden nicht ausgegeben, da sie mehr als vier Zeichen haben.
 +
|-
 +
|colspan="3"|<code>ME</code> ist hier ein Objekt, dessen [Untergeordnete Objekte] "A:10", "A:20", "A:110" und "A:120" sind.
 +
|-
 +
|}
 +
 
 +
=== GetPropertyDef( propertyID ) ===
 +
Die Funktion kann überladen und somit auch mit anderem Parameter genutzt werden: '''GetPropertyDef( code )'''
 +
{| class="wikitable"
 +
|-
 +
|
 +
!colspan="2"|Variante 1!!colspan="2"|Variante 2
 +
|-
 +
!Parameter
 +
|width="1px"|''propertyID''||Integer, Eigenschafts-ID||width="1px"|''code''||Eigenschaftsdefinitionscode
 +
|-
 +
!Rückgabewert
 +
|colspan="4"|Eigenschaftsdefinitionsobjekt
 +
|-
 +
|}
 +
 
 +
=== GetClassDef( classID ) ===
 +
Die Funktion kann überladen und somit auch mit anderem Parameter genutzt werden: '''GetPropertyDef( code )'''
 +
{| class="wikitable"
 +
|-
 +
|
 +
!colspan="2"|Variante 1!!colspan="2"|Variante 2
 +
|-
 +
!Parameter
 +
|width="1px"|''classID''||Integer, Klassen-ID||width="1px"|''code''||Klassendefinitionscode
 
|-
 
|-
 
!Rückgabewert
 
!Rückgabewert
|colspan="2"|Name des Eigenschaftswerts
+
|colspan="4"|Klassendefinitionsobjekt
 +
|-
 +
|}
 +
 
 +
=== ObjectList( list, object ) ===
 +
{| class="wikitable"
 +
|-
 +
!rowspan="2"|Parameter
 +
|''list''||Array, welches Objekte enthält
 +
|-
 +
|''object''||Objekt
 +
|-
 +
!Rückgabewert
 +
|colspan="2"|Gibt ein Array mit den ''object'' Objekten des Eigenschaftsarrays ''list' zurück.
 +
|-
 +
!rowspan="3"|Beispiele
 +
|<code>ObjectList(ME.ProductionTask.UseInstructions, Target.Resource)</code>||Liste der Ressourcen, denen die Produktionsaufgabe zugewiesen ist.
 +
|-
 +
|<code>ObjectList(ME.ProductionTask.InputInstructions, Target.Item)</code>||Liste der Input-Artikel des Vorgangs.
 +
|-
 +
|colspan="2|<code>ME</code> ist hier jeweils ein Vorgang.
 +
|-
 +
!Anmerkung
 +
|colspan="2"|Die Formel <code>ObjectList('Order', Target.Qty)</code> gibt einen Fehler zurück, da das zweite Argument keine Objekteigenschaft ist.
 +
|-
 +
|}
 +
 
 +
=== ObjectListIf( list, condition, object ) ===
 +
{| class="wikitable"
 +
|-
 +
!rowspan="3"|Parameter
 +
|''list''||Array, welches Objekte enthält
 +
|-
 +
|''condition''||Bedingung um Objekte zu filtern
 +
|-
 +
|''object''||Objekt
 +
|-
 +
!Rückgabewert
 +
|colspan="2"|Gibt ein Array mit den anhand von ''condition'' gefilterten ''object'' Objekten des Eigenschaftsarrays ''list' zurück.
 
|-
 
|-
 
!rowspan="2"|Beispiel
 
!rowspan="2"|Beispiel
|colspan="2"|<code>GetEnumName(ME.Status)</code> --> "Freigegeben"
+
|<code>ObjectListIf(ME.Order.RightmostOrder, TARGET.Lateness>0s, Target)</code>||Liste der Aufträge ganz rechts des Auftrags, die verspätet sind.
 
|-
 
|-
|colspan="2"|<code>ME</code> ist ein Vorgang, [Status] ist eine Enum-Eigenschaft und der Name deren Enum-Werts wird ausgegeben.
+
|colspan="2|<code>ME</code> ist hier jeweils ein Vorgang.
 +
|-
 +
!Anmerkung
 +
|colspan="2"|Die Formel <code>ObjectListIf('Order', TARGET.Lateness>0s, Target.Qty)</code> gibt einen Fehler zurück, da das zweite Argument keine Objekteigenschaft ist.
 
|-
 
|-
 
|}
 
|}
  
{| class="wikitable" width="600"
+
=== Unique( list ) ===
|+ExpressionStr(prop,condition,value)
+
{| class="wikitable"
 
|-
 
|-
!rowspan="2" width="100"|Parameter
+
!Parameter
|width="100"|''prop''||width="400"|Eigenschaft deren Formel bezogen wird
+
|''list''||Array, welches Objekte enthält
 
|-
 
|-
|''0''||Wird nicht genutzt
+
!Rückgabewert
 +
|colspan="2"|Gibt ein Array mit eindeutigen Objekten des Eigenschaftsarrays ''list' zurück.
 +
|-
 +
!rowspan="3"|Beispiele
 +
|<code>Unique(ObjectList(ME.Order.RightmostOrder, Target.Customer))</code>||Duplikatfreie Liste der Kunden der Aufträge ganz rechts des Auftrags.
 +
|-
 +
|<code>Unique(ObjectList(ME.Child,TARGET.OperationMainRes))</code>||Duplikatfreie Liste der Hauptressourcen der Lose.
 +
|-
 +
|colspan="2|<code>ME</code> ist hier jeweils ein Vorgang.
 +
|-
 +
!Anmerkung
 +
|colspan="2"|Die Reihenfolge der duplikatfreien Liste entspricht dem ersten Auftreten der Objekte in der ursprünglichen Liste ''list''.
 +
|-
 +
|}
 +
 
 +
=== Sort( list, key, ascend ) ===
 +
{| class="wikitable"
 +
|-
 +
!rowspan="3"|Parameter
 +
|''list''||Array, welches Objekte enthält
 +
|-
 +
|''condition''||Eigenschaft nach der sortiert werden soll
 +
|-
 +
|''object''||Sortierreihefolge, <code>TRUE</code> für aufsteigend und <code>FALSE</code> für absteigend
 
|-
 
|-
 
!Rückgabewert
 
!Rückgabewert
|colspan="2"|Formelstring
+
|colspan="2"|Gibt das anhand von ''key'' und ''ascend'' sortierte Array ''list'' an Eigenschaften zurück.
 
|-
 
|-
 
!rowspan="2"|Beispiel
 
!rowspan="2"|Beispiel
|colspan="2"|<code>Find(ExpressionStr(ME.VirtualPropertyExpression,0),'Format')</code>
+
|<code>Sort(ObjectList(ME.ProductionTask.UseInstructions,Target.Resource),Target.Code,TRUE)</code>||Liste Ressourcen, denen der Vorgang zugewiesen ist, sortiert nach den [Ressourcencode].
 +
|-
 +
|colspan="2|<code>ME</code> ist hier ein Vorgang.
 
|-
 
|-
|colspan="2"|Filtert die Eigenschaftsdefinitionstabelle aus Einträge deren [Virtuelle Eigenschaftsformel] "Format" enthält.
+
!Anmerkungen
 +
|colspan="2"|
 +
* Die Sortierung unterscheidet sich zwischen Zahlen und Zeichenketten. Nutzen Sie bei Bedarf Funktionen wie <code>[[Umwandeln#FindNumberL.28_str.2C_count_.29|FindNumberL()]]</code> zur Konvertierung.
 +
** Alphabetische Sortierung<br>1 → 10 → 11 → 12 → 2 → 3 → 4
 +
** Numerische Sortierung<br>1 → 2 → 3 → 4 → 10 → 11 → 12
 +
* Es wird [https://de.wikipedia.org/wiki/Stabilit%C3%A4t_(Sortierverfahren) stabil sortiert]. Um nach mehreren Schlüsseln zu sortieren, kann <code>Sort()</code> verschachtelt werden. So wird bei <code>Sort(Sort(list,key2,TRUE),key1,TRUE)</code> nach <code>key1</code> sortiert, ist dieser gleich, so wird nach <code>key2</code> sortiert.
 
|-
 
|-
|}  
+
|}
  
 
<hr>
 
<hr>
 
<div align="right">Hilfe Nummer: 741560</div>
 
<div align="right">Hilfe Nummer: 741560</div>

Aktuelle Version vom 26. September 2025, 08:49 Uhr

Hilfe Nummer: 741560
Interne Funktionen
Formeleditor

Interne Funktionen, die auf Eigenschaften angewendet werden können.

Gültigkeit

Exist(), FValid() und PropCount() ähneln sich, sie unterscheiden sich wie folgt:

Exist()
Gibt zurück ob Eigenschaftswert gesetzt ist; es kann bestimmt werden, ob deren [Standardwert] berücksichtigt wird.
FValid()
Gibt zurück ob Eigenschaftswert oder deren [Standardwert] gesetzt ist.
PropCount()
Gibt die Anzahl der Eigenschaftswerte zurück ohne den [Standardwert] zu zählen.

Die Geschwindigkeit der Auswertung dieser drei Funktionen unterscheidet sich kaum.

Exist( prop )

Die Funktion kann überladen und somit auch mit anderen Parametern genutzt werden: Exist( prop, checkDefaultValue )

Variante 1 Variante 2
Parameter prop Eigenschaft des Objekts prop Eigenschaft des Objekts
checkDefaultValue [Standardwert] berücksichtigen
Rückgabewert Gibt TRUE zurück, wenn prop einen Wert enthält oder deren [Standardwert] gesetzt ist. Gibt TRUE zurück, wenn prop einen Wert enthält.
Beispiel Exist(ME.RightOrder) TRUE Exist(ME.PeggingConditionExpr,TRUE) FALSE
ME ist hier ein Auftrag. ME ist hier ein Artikel, dessen [Verknüpfungsbedingung] nicht gesetzt ist.
Bemerkungen Verhalten ist gleich dem bei checkDefaultValue FALSE.
  • Bei checkDefaultValue TRUE enspricht das Verhalten dem von FValid(prop).
  • Bei checkDefaultValue FALSE enspricht das Verhalten dem von PropCount(prop)>0.

ExistIF( objects, condition )

Parameter objects Klasse oder Objektliste
condition Bedingung, TARGET-Variablen können genutzt werden.
Rückgabewert Gibt TRUE zurück, wenn mindestens eins der Objekte in objects die condition erfüllt..
Beispiel ExistIF(ME.Order.RightmostOrder,TARGET.Qty>=100) TRUE
ME ist hier ein Auftrag, der mindestens einen Auftrag in [Aufträge ganz rechts] hat, dessen [Menge] mindestens 100 ist].
Funktional entspricht das Beispiel SumIF(ME.Order.RightmostOrder,TARGET.Qty>=100,1)>0, allerdings wird es in der Regel schneller ausgewertet, da die Auswertung beendet wird, sobald ein Objekt die condition erfüllt.
Bemerkungen
  • Ähnelt CheckAllContents_Or(), dort können aber keine TARGET-Variablen genutzt werden.
  • Klassen werden mit ihrem internen Namen, von einfachen Anführungszeichen umschlossen, eingegeben, also etwa 'Order' für die Auftragsklasse.

FValid( prop )

Parameter prop Eigenschaft des Objekts
Rückgabewert TRUE wenn prop einen Wert enthält, sonst FALSE.
Beispiel FValid(ME.Qty) FALSE
ME ist hier ein Auftrag.

PropCount( prop )

Parameter prop Eigenschaft des Objekts
Rückgabewert Gibt die Anzahl der Eigenschaftswerte von prop zurück, der [Standardwert] wird nicht gezählt.
Beispiel ME.Comments 3
ME ist hier ein Auftrag mit drei Einträgen für [Kommentar].

CheckAllContents_And( prop, condition, value )

Parameter prop Eigenschaft des Objekts
condition Vergleichsoperator
value Vergleichswert
Rückgabewert Gibt TRUE zurück, wenn alle Eigenschaftswerte von prop condition und value entsprechen.
Beispiel <code>CheckAllContents_And(ME.Comments,'==','c') FALSE
ME ist hier ein Auftrag mit [Kommentar] "a;b;c;d", es sind also nicht alle Werte gleich "c".

CheckAllContents_Or( prop, condition, value )

Parameter prop Eigenschaft des Objekts
condition Vergleichsoperator
value Vergleichswert
Rückgabewert Gibt TRUE zurück, wenn mindestens ein Eigenschaftswert von prop condition und value entsprechen.
Beispiel <code>CheckAllContents_Or(ME.Comments,'==','c') TRUE
ME ist hier ein Auftrag mit [Kommentar] "a;b;c;d", ein Werte ist also gleich "c".

Objekte

GetObjectName( obj )

Parameter obj Objekt
Rückgabewert Gibt den Objektnamen von obj zurück.
Beispiel GetObjectName(PROJECT) "Beispiel 1"
Wenn [Alias] des Projekts "Beispiel 1" ist.
Bemerkung Es werden [Alias], [Anzeigename] und [Name] (in dieser Reihenfolge) ausgewertet.

DisplayStr( prop )

Parameter prop Objekteigenschaft
Rückgabewert Gibt den Wert zurück, der von der [Anzeigeformel] für prop zurückgegeben würde.
Beispiel DisplayStr(ME.Qty) "50 Stück"
ME ist hier ein Auftrag mit [Menge] und die [Anzeigeformel] von [Menge] INPUT+' Stück' ist.

GetEnumName( prop )

Parameter prop Aufzählungseigenschaft
Rückgabewert Gibt den Namen des Eigenschafswerts von prop zurück.
Beispiel GetEnumName(ME.Status) "Freigegeben"
ME ist hier ein Vorgang mit [Status] "I".

ExpressionStr( prop, 0 )

Parameter prop Eigenschaft deren Formel bezogen wird
Wird nicht genutzt
Rückgabewert Gibt den Formelstring von prop zurück.
Beispiel Find(ExpressionStr(ME.VirtualPropertyExpression,0),'Format')
Filtert die Eigenschaftsdefinitionstabelle auf Einträge, deren [Virtuelle Eigenschaftsformel] "Format" enthält.

SetProps( objectList, expr )

Parameter objectList Objektliste deren Eigenschaften gesetzt werden sollen
expr Eigenschaftszuweisungsformel
Rückgabewert Setzt anhand von expr Eigenschaften der Objekte in objectList.
Beispiel SetProps(ME.LeftRecursiveOrder,TARGET.LET=ME.LET)
ME ist hier ein Auftrag, für den für alle Aufträge in [Übergeordnete Aufträge (rekursiv)] der [Fälligkeitstermin] auf den von ME gesetzt.

SetPropsIF( objectList, conditionExpr, expr )

Parameter objectList Objektliste deren Eigenschaften gesetzt werden sollen
conditionExpr Filterformel
expr Eigenschaftszuweisungsformel
Rückgabewert Setzt anhand von expr Eigenschaften der Objekte in objectList, die conditionExpr erfüllen.
Beispiel
SetPropsIF(ME.LeftRecursiveOrder,
     ME.IsReplenishmentOrder=='1'
     && ME.LET<TARGET.LET,
     TARGET.LET=ME.LET
)
ME ist hier ein Auftrag, für den für alle Aufträge in [Übergeordnete Aufträge (rekursiv)] der [Fälligkeitstermin] auf den [Fälligkeitstermin] von ME gesetzt wird, falls deren [Fälligkeitstermin] später als dieser ist.

StrProps( props, delimiter )

Die Funktion kann überladen und somit auch mit anderen Parametern genutzt werden: StrProps( objectList, expr, delimiter )

Variante 1 Variante 2
Parameter props Zieleigenschaft (Array) objectList Objektliste
delimiter Trennzeichen expr Formel die eine Eigenschaft vorgibt
delimiter Trennzeichen
Rückgabewert Gibt einen String mit den Eigenschaftswerten von props, getrennt mit delimiter, zurück. Gibt einen String mit den Eigenschaftswerten von expr der Objekte in objectList, getrennt mit delimiter, zurück.
Beispiele StrProps(ME.Comments,';') "X;Y;Z" StrProps(ME.Comments[2],';') "Y"
ME ist hier ein Objekt mit [Kommentar] "X;Y;Z".
StrProps(ME.Child,TARGET.Code,';') "A;B;C" StrProps(ME.Child[1],TARGET.Code,';') "A"
ME ist hier ein Objekt, dessen [Untergeordnete Objekte] "A", "B" und "C" sind.

StrPropsIF( objectList, conditionExpr, expr, delimiter )

Parameter objectList Objektliste deren Eigenschaften gesetzt werden sollen
conditionExpr Filterformel
expr Eigenschaftszuweisungsformel
delimiter Trennzeichen
Rückgabewert Gibt einen String mit den Eigenschaftswerten von expr der Objekte in objectList, getrennt mit delimiter, zurück, die conditionExpr entsprechen.
Beispiel StrPropsIF(ME.Child,Len(TARGET.Code,)==4,TARGET.Code,';') "A:10;A:20" "A:110" und "A:120" werden nicht ausgegeben, da sie mehr als vier Zeichen haben.
ME ist hier ein Objekt, dessen [Untergeordnete Objekte] "A:10", "A:20", "A:110" und "A:120" sind.

GetPropertyDef( propertyID )

Die Funktion kann überladen und somit auch mit anderem Parameter genutzt werden: GetPropertyDef( code )

Variante 1 Variante 2
Parameter propertyID Integer, Eigenschafts-ID code Eigenschaftsdefinitionscode
Rückgabewert Eigenschaftsdefinitionsobjekt

GetClassDef( classID )

Die Funktion kann überladen und somit auch mit anderem Parameter genutzt werden: GetPropertyDef( code )

Variante 1 Variante 2
Parameter classID Integer, Klassen-ID code Klassendefinitionscode
Rückgabewert Klassendefinitionsobjekt

ObjectList( list, object )

Parameter list Array, welches Objekte enthält
object Objekt
Rückgabewert Gibt ein Array mit den object Objekten des Eigenschaftsarrays list' zurück.
Beispiele ObjectList(ME.ProductionTask.UseInstructions, Target.Resource) Liste der Ressourcen, denen die Produktionsaufgabe zugewiesen ist.
ObjectList(ME.ProductionTask.InputInstructions, Target.Item) Liste der Input-Artikel des Vorgangs.
ME ist hier jeweils ein Vorgang.
Anmerkung Die Formel ObjectList('Order', Target.Qty) gibt einen Fehler zurück, da das zweite Argument keine Objekteigenschaft ist.

ObjectListIf( list, condition, object )

Parameter list Array, welches Objekte enthält
condition Bedingung um Objekte zu filtern
object Objekt
Rückgabewert Gibt ein Array mit den anhand von condition gefilterten object Objekten des Eigenschaftsarrays list' zurück.
Beispiel ObjectListIf(ME.Order.RightmostOrder, TARGET.Lateness>0s, Target) Liste der Aufträge ganz rechts des Auftrags, die verspätet sind.
ME ist hier jeweils ein Vorgang.
Anmerkung Die Formel ObjectListIf('Order', TARGET.Lateness>0s, Target.Qty) gibt einen Fehler zurück, da das zweite Argument keine Objekteigenschaft ist.

Unique( list )

Parameter list Array, welches Objekte enthält
Rückgabewert Gibt ein Array mit eindeutigen Objekten des Eigenschaftsarrays list' zurück.
Beispiele Unique(ObjectList(ME.Order.RightmostOrder, Target.Customer)) Duplikatfreie Liste der Kunden der Aufträge ganz rechts des Auftrags.
Unique(ObjectList(ME.Child,TARGET.OperationMainRes)) Duplikatfreie Liste der Hauptressourcen der Lose.
ME ist hier jeweils ein Vorgang.
Anmerkung Die Reihenfolge der duplikatfreien Liste entspricht dem ersten Auftreten der Objekte in der ursprünglichen Liste list.

Sort( list, key, ascend )

Parameter list Array, welches Objekte enthält
condition Eigenschaft nach der sortiert werden soll
object Sortierreihefolge, TRUE für aufsteigend und FALSE für absteigend
Rückgabewert Gibt das anhand von key und ascend sortierte Array list an Eigenschaften zurück.
Beispiel Sort(ObjectList(ME.ProductionTask.UseInstructions,Target.Resource),Target.Code,TRUE) Liste Ressourcen, denen der Vorgang zugewiesen ist, sortiert nach den [Ressourcencode].
ME ist hier ein Vorgang.
Anmerkungen
  • Die Sortierung unterscheidet sich zwischen Zahlen und Zeichenketten. Nutzen Sie bei Bedarf Funktionen wie FindNumberL() zur Konvertierung.
    • Alphabetische Sortierung
      1 → 10 → 11 → 12 → 2 → 3 → 4
    • Numerische Sortierung
      1 → 2 → 3 → 4 → 10 → 11 → 12
  • Es wird stabil sortiert. Um nach mehreren Schlüsseln zu sortieren, kann Sort() verschachtelt werden. So wird bei Sort(Sort(list,key2,TRUE),key1,TRUE) nach key1 sortiert, ist dieser gleich, so wird nach key2 sortiert.

Hilfe Nummer: 741560