Eigenschaft: Unterschied zwischen den Versionen

Aus Asprova Hilfe
Wechseln zu: Navigation, Suche
K (Formatierung)
(Unique( list ))
 
(11 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.
  
 +
== Gültigkeit ==
 +
<code>Exist()</code>, <code>FValid()</code> und <code>PropCount()</code> ähneln sich, sie unterscheiden sich wie folgt:
 +
; <code>Exist()</code>
 +
: 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
 +
|colspan="2"|Gibt TRUE zurück, wenn mindestens eins der Objekte in ''objects'' die ''condition'' erfüllt..
 +
|-
 +
!rowspan="2"|Beispiel
 +
|<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.
 +
|-
 +
!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.
 +
|-
 +
|}
 +
 +
=== FValid( prop ) ===
 
{| class="wikitable"
 
{| class="wikitable"
|+FValid(eigenschaft)
+
|-
 
!Parameter
 
!Parameter
|''prop''||Eigenschaft des Objektes
+
|width="1px"|''prop''||Eigenschaft des Objekts
 
|-
 
|-
 
!Rückgabewert
 
!Rückgabewert
|colspan="2"|<code>TRUE</code> wenn Eigenschaft einen Wert enthält ist, sonst <code>FALSE</code>
+
|colspan="2"|TRUE wenn ''prop'' einen Wert enthält, sonst FALSE.
 +
|-
 +
!rowspan="2"|Beispiel
 +
|<code>FValid(ME.Qty)</code>||FALSE
 
|-
 
|-
!Beispiel
+
|colspan="2"|<code>ME</code> ist hier ein Auftrag.
|colspan="2"|<code>FValid(ME.Qty)</code> --> <code>FALSE</code><br><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.)
 
 
|-
 
|-
 
|}
 
|}
  
 +
=== PropCount( prop ) ===
 
{| class="wikitable"
 
{| class="wikitable"
|+PropCount(prop)
+
|-
 
!Parameter
 
!Parameter
|''prop''||Array-Eigenschaft des Objektes
+
|width="1px"|''prop''||Eigenschaft des Objekts
 
|-
 
|-
 
!Rückgabewert
 
!Rückgabewert
|colspan="2"|Anzahl der Array-Elemente
+
|colspan="2"|Gibt die Anzahl der Eigenschaftswerte von ''prop'' zurück, der [Standardwert] wird nicht gezählt.
 
|-
 
|-
!Beispiel
+
!rowspan="2"|Beispiel
|colspan="2"|<code>PropCount(ME.Comments)</code> --> 3<br>Gibt es drei Kommentare, wird 3 wiedergegeben.<br>[[Image:incodefunc-prop01.jpg]]
+
|<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"
 
{| class="wikitable"
|+CheckAllContents_And(prop,condition,value)
 
 
|-
 
|-
 
!rowspan="3"|Parameter
 
!rowspan="3"|Parameter
|''prop''||Eigenschaft des Objektes
+
|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
 +
|<code><code>CheckAllContents_And(ME.Comments,'==','c')</code>||FALSE
 
|-
 
|-
!Beispiel
+
|colspan="2"|<code>ME</code> ist hier ein Auftrag mit [Kommentar] "a;b;c;d", es sind also nicht alle Werte gleich "c".
|colspan="2"|<code>CheckAllContents_And(ME.Comments,'==','c')</code> --> <code>FALSE</code><br>Kommentar der Auftrags lautet "a;b;c;d". Da nicht jedes Element "c" entspricht, wird FALSCH ausgegeben.
 
 
|-
 
|-
|}  
+
|}
  
 
+
=== CheckAllContents_Or( prop, condition, value ) ===
 
+
{| class="wikitable"
{|
+
|-
 +
!rowspan="3"|Parameter
 +
|width="1px"|''prop''||Eigenschaft des Objekts
 +
|-
 +
|''condition''||Vergleichsoperator
 +
|-
 +
|''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
 
|-
 
|-
|   ||CheckAllContents_And(ME.Comments,'==', 'c') -> FALSCH<br /><br />Kommentar der Auftrags lautet 'a;b;c;d'. Wenn nicht jedes Element 'c' entspricht, wird FALSCH ausgegeben.|| 
+
|colspan="2"|<code>ME</code> ist hier ein Auftrag mit [Kommentar] "a;b;c;d", ein Werte ist also gleich "c".
 
|-
 
|-
 
|}
 
|}
  
Hinweise
+
== Objekte ==
 
+
=== GetObjectName( obj ) ===
 
+
{| class="wikitable"
{|
+
|-
 +
!Parameter
 +
|width="1px"|''obj''||Objekt
 +
|-
 +
!Rückgabewert
 +
|colspan="2"|Gibt den Objektnamen von ''obj'' zurück.
 +
|-
 +
!rowspan="2"|Beispiel
 +
|<code>GetObjectName(PROJECT)</code>||"Beispiel 1"
 
|-
 
|-
|   ||Haben Kommentare mehrere unterschiedliche Werte, werden alle überprüft.|| 
+
|colspan="2"|Wenn [Alias] des Projekts "Beispiel 1" ist.
 
|-
 
|-
 +
!Bemerkung
 +
|colspan="2"|Es werden [Alias], [Anzeigename] und [Name] (in dieser Reihenfolge) ausgewertet.
 
|}
 
|}
  
 
+
=== DisplayStr( prop ) ===
CheckAllContents_Or( str, Bedingung, Wert )
+
{| class="wikitable"
 
+
|-
Parameter
+
!Parameter
 
+
|width="1px"|''prop''||Objekteigenschaft
 
 
{|
 
 
|-
 
|-
|   ||Eigenschaft||Feldeigenschaft eines Objektes.|| 
+
!Rückgabewert
 +
|colspan="2"|Gibt den Wert zurück, der von der [Anzeigeformel] für ''prop'' zurückgegeben würde.
 
|-
 
|-
||   ||Bedingung||String Vergleichsoperator
+
!rowspan="2"|Beispiel
 +
|<code>DisplayStr(ME.Qty)</code>||"50 Stück"
 
|-
 
|-
||   ||Wert||String Vergleichsoperator
+
|colspan="2"|<code>ME</code> ist hier ein Auftrag mit [Menge] und die [Anzeigeformel] von [Menge] <code>INPUT+' Stück'</code> ist.
 
|-
 
|-
 
|}
 
|}
  
Rückgabewert
+
=== GetEnumName( prop ) ===
 
+
{| class="wikitable"
 
+
|-
{|
+
!Parameter
 +
|width="1px"|''prop''||Aufzählungseigenschaft
 +
|-
 +
!Rückgabewert
 +
|colspan="2"|Gibt den Namen des Eigenschafswerts von ''prop'' zurück.
 +
|-
 +
!rowspan="2"|Beispiel
 +
|<code>GetEnumName(ME.Status)</code>||"Freigegeben"
 
|-
 
|-
|   ||Im Fall, dass der Eigenschaftswert dem Vergleichsoperator und der Vergleichsbedingung entspricht, wird WAHR ausgegeben. Andernfalls wird FALSCH ausgegeben. Sind mehrere Werte in den Eigenschaften vorhanden, müssen alle Werte die Bedingungen erfüllen und es wird WAHR ausgegeben.|| 
+
|colspan="2"|<code>ME</code> ist hier ein Vorgang mit [Status] "I".
 
|-
 
|-
 
|}
 
|}
 
+
Beispiel
+
=== ExpressionStr( prop, 0 ) ===
 
+
{| class="wikitable"
 
+
|-
{|
+
!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>
 
|-
 
|-
|   ||CheckAllContents_And(ME.Comments,'==', 'c') -> WAHR<br /><br />Der Kommentar des Auftrages lautet 'a;b;c;d'. Wenn ein Element nicht 'c' entspricht, dann wird WAHR ausgegeben.|| 
+
|colspan="2"|Filtert die Eigenschaftsdefinitionstabelle auf Einträge, deren [Virtuelle Eigenschaftsformel] "Format" enthält.
 
|-
 
|-
 
|}
 
|}
  
Hinweise
+
=== 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>
 
|-
 
|-
|   ||Haben Kommentare mehrere unterschiedliche Werte, werden alle überprüft.|| 
+
|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 ) ===
GetObjectName( Objekt )
+
{| class="wikitable"
 
+
|-
Parameter
+
!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
 +
)
 
|-
 
|-
|   ||Objekt||Objekt|| 
+
|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.
 
|-
 
|-
 
|}
 
|}
  
Rückgabewert
+
=== 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"
 
|-
 
|-
|   ||Gibt den Namen eines Objektes, gegeben als Argument durch ein Alias, Anzeigenamen und Namen in der aktuellen Reihenfolge aus.|| 
+
|colspan="4"|<code>ME</code> ist hier ein Objekt, dessen [Untergeordnete Objekte] "A", "B" und "C" sind.
 
|-
 
|-
 
|}
 
|}
  
Beispiel
+
=== 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.
 
|-
 
|-
|   ||GetObjectName(PROJECT) -> 'Beispiel1'<br /><br />Ist ein Alias gegeben, dann wird ein Alias "Beispiel1" ausgegeben. Ist der Alias ungültig, wird der Anzeigename ausgegeben.|| 
+
|colspan="3"|<code>ME</code> ist hier ein Objekt, dessen [Untergeordnete Objekte] "A:10", "A:20", "A:110" und "A:120" sind.
 
|-
 
|-
 
|}
 
|}
  
 
+
=== GetPropertyDef( propertyID ) ===
[[Image:incodefunc-prop02.jpg]]
+
Die Funktion kann überladen und somit auch mit anderem Parameter genutzt werden: '''GetPropertyDef( code )'''
+
{| class="wikitable"
 
+
|-
DisplayStr( Eigenschaft )
+
|
 
+
!colspan="2"|Variante 1!!colspan="2"|Variante 2
Parameter
+
|-
 
+
!Parameter
 
+
|width="1px"|''propertyID''||Integer, Eigenschafts-ID||width="1px"|''code''||Eigenschaftsdefinitionscode
{|
 
 
|-
 
|-
|   ||Eigenschaft||Eigenschaft des Objektes.|| 
+
!Rückgabewert
 +
|colspan="4"|Eigenschaftsdefinitionsobjekt
 
|-
 
|-
 
|}
 
|}
  
Rückgabewert
+
=== 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
 
|-
 
|-
|   ||Gibt das Bewertungsergebnis für die Anzeigeformel der spezifizierten Eigenschaften aus, wenn eine Anzeigeformel eingestellt ist.|| 
+
!Rückgabewert
 +
|colspan="4"|Klassendefinitionsobjekt
 
|-
 
|-
 
|}
 
|}
  
Beispiel
+
=== 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.
 
|-
 
|-
|   ||DisplayStr(ME.'Order quantity') -> '50Einheit'<br /><br />ME ist Auftrag. Die Formel der Eigenschaft Auftragsmenge ist 'ME.Qty+'Einheit'' und es wird  '50Einheiten' ausgegeben.|| 
+
!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 ) ===
GetEnumName( Eigenschaft )
+
{| class="wikitable"
 
+
|-
Parameter
+
!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
 +
|<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 hier jeweils ein Vorgang.
 
|-
 
|-
|   ||Eigenschaft||Aufzählung|| 
+
!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.
 
|-
 
|-
 
|}
 
|}
  
Rückgabewert
+
=== Unique( list ) ===
 
+
{| class="wikitable"
 
+
|-
{|
+
!Parameter
 +
|''list''||Array, welches Objekte enthält
 +
|-
 +
!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.
 
|-
 
|-
|   ||Name des Wertes einer gegebenen Eigenschaft.|| 
+
|<code>Unique(ObjectList(ME.Child,TARGET.OperationMainRes))</code>||Duplikatfreie Liste der Hauptressourcen der Lose.
 
|-
 
|-
|}
+
|colspan="2|<code>ME</code> ist hier jeweils ein Vorgang.
 
 
Beispiel
 
 
 
 
 
{|
 
 
|-
 
|-
|   ||GetEnumName(ME.Status) -> 'Freigegeben'<br /><br />ME ist der Vorgang. Der Vorgangsstatus ist ein Aufzählungswert. Der String der Enumeration wird ausgegeben.|| 
+
!Anmerkung
 +
|colspan="2"|Die Reihenfolge der duplikatfreien Liste entspricht dem ersten Auftreten der Objekte in der ursprünglichen Liste ''list''.
 
|-
 
|-
 
|}
 
|}
  
 
+
=== Sort( list, key, ascend ) ===
ExpressionStr( Eigenschaft, 0 )
+
{| class="wikitable"
 
+
|-
Parameter
+
!rowspan="3"|Parameter
 
+
|''list''||Array, welches Objekte enthält
 
 
{|
 
 
|-
 
|-
|   ||prop||Eigenschaft, um eine Formel zu erhalten.|| 
+
|''condition''||Eigenschaft nach der sortiert werden soll
 
|-
 
|-
||   ||0.0||Nicht verwendet
+
|''object''||Sortierreihefolge, <code>TRUE</code> für aufsteigend und <code>FALSE</code> für absteigend
 
|-
 
|-
|}
+
!Rückgabewert
 
+
|colspan="2"|Gibt das anhand von ''key'' und ''ascend'' sortierte Array ''list'' an Eigenschaften zurück.
Rückgabewert
 
 
 
 
 
{|
 
 
|-
 
|-
|   ||Formelstring|
+
!rowspan="2"|Beispiel
 +
|<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.
 
 
Beispiel
 
 
 
 
 
{|
 
 
|-
 
|-
|   ||Find(ExpressionStr(ME.VirtualPropertyExpression,0),'Format')<br /><br />Filtert den virtuellen Eigenschaftsformelstring mit dem Inhalt "Format" (in den Eigenschaftsdefinitionen).|| 
+
!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