Formeln: Unterschied zwischen den Versionen

Aus Asprova Hilfe
Wechseln zu: Navigation, Suche
Zeile 4: Zeile 4:
 
<div align="right">[[Formeleditor|Formeleditor]]</div>
 
<div align="right">[[Formeleditor|Formeleditor]]</div>
 
<hr>
 
<hr>
Für Eigenschaften vom Typ Formel müssen Formeln in das Eingabefeld eingetragen werden.
+
Für Eigenschaften mit [Datentyp] "Formel" müssen Formeln in das Eingabefeld eingetragen werden.
  
 +
== Übersicht ==
 +
Formeln können die folgenden Bestandteile haben:
 +
* Eigenschaften
 +
* Werte
 +
* Operatoren
 +
* Funktionen
  
Grundsätzliches
+
=== Beispiel ===
 +
Die folgende Formel ist der [Standardwert] für [Vorgangsbalkentext] des Ressourcen-Gantt-Diagramms:
 +
ME.Operation.Order+'\n'+ME.Operation.OperationOutMainItem+'\n'+ME.Operation.OperationOutMainItemQty
  
Eine Formel setzt sich zusammen aus:
+
<code>ME.Operation.OperationOutMainItemQty</code>
 +
: Eigenschaft mit der Produktionsmenge des Vorgangs
 +
<code>+</code>
 +
: Additionsoperator (wird hier genutzt um mehrere Strings miteinander zu verbinden)
 +
<code>\n</code>
 +
: String, die einen Zeilenumbruch vorgibt
  
 +
Bei der Berechnung von Zeiten oder Zeitspannen, sowie beim Definieren von Kapazitätswerten ([Rüsten], [Produktion] und [Abrüsten]) können [[Einheiten in Formeln|Einheiten]] genutzt werden. Es können auch Formeln genutzt werden, die [[Datentyp der Auswertungsergebnisse|mehrere Datentypen]] kombinieren, etwa Zeitspannen und Zahlen. Weitergehende Informationen zur Auswertung von Eigenschaften ohne Werte finden sich [[Eigenschaften ohne Wert auswerten|hier]].
  
:*Eigenschaften
+
== Eigenschaften ==
:*Werten
+
=== Lang- und Kurznamen ===
:*Operatoren
+
Eigenschaften haben jeweils einen langen- und einen kurzen Namen. Der Kurzname für die [Menge] eines Auftrages ist <code>Qty</code> und der Langname ist <code>Order_Qty</code>. Für den Langnamen werden Klassenname und ein Unterstrich vor den Kurznamen gesetzt. (Um den Langnamen einer Eigenschaft sicher zu bestimmen, nutzen Sie entweder die Klassendefinition in dieser Hilfe oder direkt in Asprova deren [Code].)
:*Funktionen
 
  
Die folgende Formel ist die standardmäßige Vorgangsbalkentextformel für das Ressourcen-Gantt-Diagramm:
+
Wird eine Eigenschaft über <code>ME</code> etc. referenziert, so ist das Zielobjekt eindeutig, so dass der Kurzname genutzt werden kann. Dies ist meistens der Fall, auch in der Dropdown-Liste der verfügbaren Eigenschaften wird dann der Kurzname verwendet. Wird ein übergeordnetes (<code>PARENT</code>) oder untergeordnetes Objekt (<code>CHILD</code>) referenziert oder ein Sortierschlüssel als Formel definiert, so ist das ist das Zielobjekt nicht eindeutig, da Eigenschaften unterschiedlicher Klassen den gleichen Kurznamen haben können. Hier muss der Langname verwendet werden.
  
: ME.WorkInst_Operation.Work_Order+'\n'+ME.WorkInst_Operation.Work_OperationOutMainItem+'\n'+ME.WorkInst_Operation.Work_OperationOutMainItemQty
+
=== ME===
 +
Wenn Sie eine Eigenschaft in einer Formel verwenden, geben Sie zunächst <code>ME</code> ein. <code>ME</code> ist das Projekt, auf das sich die Formel der Eigenschaft mit [Datentyp] "Formel" bezieht. So ist etwa bei der [Gültigkeitsbedingung] einer Hauptnutzungsanweisung in dern Integrierten Stammdaten <code>ME</code> ein Vorgang. Beim [Vorgangsbalkentext] des Ressourcen-Gantt-Diagramms ist <code>ME</code> eine Nutzungsanweisung. Wird nach <code>ME</code> ein Punkt (<code>.</code>) eingegeben, so erscheint eine Dropdown-Liste der verfügbaren Eigenschaften, die durch einen  Klicken ausgewählt werden können. Natürlich können Sie den Eigenschaftsnamen auch einfach hinter dem Punkt eingeben.
  
"ME.WorkInst_Operation.Work_OperationOutMainItem" - diese Eigenschaft zeigt die Produktionsmenge eines Vorganges an.<br /><br />"+" ist ein Additionsoperator und verbindet Zeichenketten, wenn es zwischen solchen verwendet wird.<br /><br />"'\n'" ist ein Zeichenkettenwert (Sonderzeichen) und bewirkt einen Zeilenumbruch (newline).
+
; Beispiel
 +
Um im [Auftragsbalken Formel rechter Text] im Auftrags-Gantt-Diagramm den [Fälligkeitstermin] anzuzeigen, geben Sie <code>ME.LET</code> ein.
  
 +
<code>ME</code> könnte hier weggelassen werden, der eingegebene Eigenschaftsname wird dann als eine Eigenschaft von <code>ME</code> angesehen. Daher kann <code>ME.LET</code> oder <code>LET</code> eingeben werden und das Ergebnis ist das Gleiche. Aus Gründen der Durchgängigkeit und des leichteren Verständnis, ist diese Vereinfachung jedoch nicht empfohlen.
  
Eigenschaften
+
Ist die referenzierte Eigenschaft ein Objekt, so wird nach Eingabe eines Punktes eine Dropdown-Liste der verfügbaren Eigenschaften dieses Objekts angezeigt.
  
[[Vorgang 4|Lange Namen und Kurze Namen]]
+
; Beispiel
 +
Um in der [Vorgangsbalkentextformel] des Ressourcen-Gantt-Diagramm den [Artikelname] des Auftragsartikels zu referenzieren, geben Sie <code>ME.Order.Item.Name</code> ein.
  
Eigenschaftennamen haben jeweils einen langen- und einen kurzen Namen. Zum Beispiel: Der kurze Name für Produktionsmenge eines Auftrages ist "Qty" und der lange name ist "Order_Qty". Grundsätzlich werden Klassenname und ein Unterstrich vor den Kurznamen gesetzt. (Wenn ein bestimmter, langer Name gesucht wird, schauen Sie entweder in die "Klasseneigenschaften" der Asprova-Hilfe, oder überprüfen Sie ihn anhand einer Reihe von "Code"-Zeichen, die in Eigenschaften festgelegt sind.)
+
=== OTHER ===
 +
Bei Eigenschaften wie der [Verknüpfungsbedingung], bei denen die Werte zweier Eigenschaften verglichen werden, kann zusätzlich zu <code>ME</code> auch <code>OTHER</code> verwendet werden. <code>OTHER</code> bezieht sich auch auf ein Objekt und kann genauso wie <code>ME</code> verwendet werden.
  
Wenn ein Eigenschaftenname mithilfe von ME beschrieben wird, ist das Zielobjekt eindeutig. Verwenden Sie in diesem Falle einen kurzen Namen. Der Name in der Dropdown-Liste ist auch ein kurzer Name.
+
; Beispiel
 +
Um in der [Verknüpfungsbedingung] eines Artikels festzulegen, dass zu Verknüpfen die [Spezifikation 1] der Aufträge gleich sein muss geben Sie <code>ME.Order.Spec1==OTHER.Order.Spec1</code> ein.
  
Wenn ein übergeordnetes Objekt (Parent), ein untergeordnetes Objekt (Child) oder ein Sortierschlüssel in der Formel verwendet wird, ist das Zielobjekt unklar. In diesem Fall muss der lange Name verwendet werden.
+
Im [[Formeleditor|Formeleditor]] ist ersichtlich, ob <code>OTHER</code> verwendet werden kann und auf welches Objekt sich <code>OTHER</code> bezieht.
  
ME
+
Eine andere Eigenschaft, die sich auf zwei Eigenschaften bezieht ist die [Ofengültigkeitsbedingung] von Ressourcen. Hier können Eigenschaften auch nur über <code>ME</code> und ohne <code>OTHER</code> verglichen werden.
  
Wenn Sie eine Eigenschaft in einer Formel verwenden, geben Sie zunächst folgendes ein:
+
; Beispiel
 +
Die [Ofengültigkeitsbedingung], die die gleichzeitige Zuweisung von Aufträgen des gleichen Kunden erlaubt lautet <code>ME.Order.Customer.Code</code>.
  
: ME
+
=== HOLDER ===
 +
<code>HOLDER</code> bezieht sich auf das Objekt, zu der die Eigenschaft mit [Datentyp] "Formel" gehört. So ist etwa in der [Gültigkeitsbedingung] einer Hauptnutzungsanweisung in den Integrierten Stammdaten <code>ME</code> ein Vorgang und <code>HOLDER</code> die Hauptnutzungsanweisung. Um sich in der [Gültigkeitsbedingung] auf den [Code] der Ressource der Hauptnutzungsanweisung in der Gültigkeitsbedingung zu beziehen, wird die Formel <code>HOLDER.Resource.Code</code> genutzt.
  
ME bezieht sich auf ein Objekt, dessen Formeltypeigenschaft der geschriebenen Formel entspricht. Im Falle der Eigenschaft "Gültigkeitsbedingung" einer Nutzungsanweisung der integrierten Stammdaten, bezieht sich ME also auf einen Vorgang. Und im Falle der Eigenschaft "Vorgangsbalkentextformel" des Ressourcen-Gantt-Diagrammes, bezieht sich ME auf eine Nutzungsanweisung.
+
=== PROJECT ===
 +
<code>PROJECT</code> bezieht sich auf das aktuell genutzte Projekt, so können die Projekteigenschaften referenziert werden. <code>PROJECT</code> ist in allen Formeln nutzbar.
  
Durch Eingabe eines Punktes "." hinter ME erscheint eine Liste mit Eigenschaften. Klicken Sie auf eine, um sie sofort in die Formelbox einzutragen. Natürlich können Sie den Namen der Eigenschaft auch einfach hinter dem Punkt "." eingeben.
+
;Beispiel
 +
Um die [Planungsbasiszeit] zu referenzieren wird die Formel <code>PROJECT.BasisTime</code> genutzt.
  
Beispiel: Ein Fälligkeitsdatum (LET) für die Eigenschaft "Auftragsbalken Formel rechter Text" im Auftrags-Gantt-Diagramm sieht wie folgt aus:
+
=== WORKSPACE ===
 +
<code>WORKSPACE</code> bezieht sich auf den Arbeitsplatz des aktuell genutzten Projekt,  so können die Arbeitsplatzeigenschaften referenziert werden.<code>WORKSPACE</code> ist in allen Formeln nutzbar.
  
: ME.LET
+
;Beispiel
 +
Um den Namen der [Projektdatei] zu referenzieren wird die Formel <code>WORKSPACE.ProjectFileName</code> genutzt.
  
ME kann auch weggelassen werden. Der eingegebene Eigenschaftsname wird dann als eine Eigenschaft von ME verarbeitet. Aus diesem Grunde kann "ME.LET", oder "LET", eingeben werden und das Ergebnis ist das Gleiche.
+
=== TARGET ===
 +
<code>TARGET</code> ist nur als Argument bestimmter interner Funktionen verwendbar. Definieren Sie als erstes Argument der internen Funktion ein Objekt und definieren dann <code>TARGET</code> ab dem zweiten Argument. <code>TARGET</code> verweist auf das Objekt des ersten Arguments.
  
Wenn eine ausgewählte Eigenschaft vom Typ her ein Objekt ist, wird durch Eingabe eines Punktes "." die Liste mit Eigenschaften aufgerufen. Der Name eines Artikel oder Auftrages für die Vorgangsbalkentextformel des Ressourcen-Gantt-Diagrammes würde wie folgt aussehen:
+
; Beispiel
 +
Um die Summe der [Menge] aller Aufträge zu berechnen, wird die Formel <code>Sum('Order',TARGET.Qty)</code> genutzt. <code>TARGET</code> steht hier für die Auftragsklasse.
  
: ME.Order.Item.Name
+
==== Verschachtelung ====
 +
Der Aufruf einer internen Funktion in einer anderen internen Funktion wird Verschachteln genannt. Verschachtelungen können sich über mehrere Ebenen erstrecken.
  
 +
Angenommen die internen Funktionen A und B akzeptieren beide <code>TARGET</code> als Argument. Wenn B als Argument von A genutzt wird, so referenziert das <code>TARGET</code>-Argument in B das Objektargument in B.
  
OTHER
+
; Beispiel
 +
Es soll die größte [Menge] aller Aufträge mit dem frühesten [Fälligkeitstermin] unter [Aufträge ganz rechts] von <code>ME</code> bestimmt werden:
 +
MaxIF(ME.RightmostOrder,
 +
  TARGET.LET==Min(ME.RightmostOrder,
 +
    TARGET.LET)),
 +
  TARGETQty
 +
)
 +
Das erste <code>TARGET</code> wird als <code>ME.RightmostOrder</code> ausgewertet, also das erste Argument der <code>MaxIF</code>-Funktion. Das zweite <code>TARGET</code> wird auch als <code>ME.RightmostOrder</code> ausgewertet, aber aks das erste Argument der <code>MIN</code>-Funktion.
  
Für Eigenschaften wie "Verknüpfungsbedingung", welche Werte von zwei Eigenschaften vergleicht, kann OTHER zusätzlich zu ME verwendet werden. OTHER bezieht sich auch auf ein Objekt und kann genauso wie ME verwendet werden.
+
=== INPUT ===
 +
<code>INPUT</code> wird in der [Virtuelle Eigenschaftsformel invers], der [Anzeigeformel], [Inverse Anzeigeformel], [Währung] etc. verwendet. Es bezieht sich prinzipiell auf die in eine Zelle eingegebene String. Weitere Details können der Beschreibung der jeweiligen Eigenschaften entnommen werden.
  
Beispiel: Um zu beschreiben, dass Auftragsspezifikation 1 in zwei Eigenschaften, die die Verknüpfungsbedingung verwenden, gleich ist, würde folgende Formel benutzt werden:
+
=== DELETE ===
 +
<code>DELETE</code> wird verwendet, um Eigenschaftswerte zu löschen.
  
: ME.Order.Spec1.Code==OTHER.Order.Spec1.Code
+
; Beispiel
 +
Der Name der Eigenschaft wird mit <code>ME.Name=DELETE</code> gelöscht.
  
Sehen Sie im [[Formeleditor|Formeleditor]] nach, ob OTHER verwendet werden kann, um das Objekt zu finden, auf welches sich OTHER bezieht.
+
=== Eigenschaften mit mehreren Werten ===
 +
Wenn eine Eigenschaft über mehrere Werte verfügt, können Sie hinter der Eigenschaft <code>[n]</code> eingegeben, wobei ''n'' der Index des gewünschten Eigenschaftswerts ist.
 +
; Beispiel
 +
Um den zweiten [Kommentar] eines Auftrages zu referenzieren nutzen Sie die Formel <code>ME.Order.Comments[2]</code>.
  
Die Eigenschaft "Ofengültigkeitsbedingung" vergleicht Werte von zwei Eigenschaften. Dies geschieht nur über ME, nicht unter verwendung von OTHER.
+
Wenn Sie für ''n'' 0 angeben, wird das letzte Element ausgegeben. Wenn etwa [Kommentar] "a;b;c" ist, würde "c" zurückgegeben.
  
Eine Ofengültigkeitsbedingung kann genutzt werden, um Aufträge gleicher Kunden gleichzeitig an eine Ofenressource zuzuweisen:
+
Wenn Sie kein [n] anfügen werden alle Werte zurückgegeben, wenn die Werte Strings sind. Ansonsten wird der letzte Eigenschaftswert zurückgegeben. Wenn etwa [Kommentar] "a;b;c" ist, würde "a;b;c" zurückgegeben. Um auch bei andere Datentypen alle Werte zurückzugeben, kann die interne Funktion <code>StrProps()</code> genutzt werden.
  
: ME.Order.Customer.Code
+
==== Datentyp Objekt ====
 +
Für Eigenschaften mit [Datentyp] "Objekt" mit mehreren Werten, kann statt dem Index der [Code] der Objekte verwendet werden, um einen bestimmten Werte zu adressieren. Der [Code] ist eine String und die Werte der Eigenschaft werden nach einer passenden String durchsucht. Der Vergleich der Objekte mit der String erfolgt in der Reihenfolge [Code] &#x2192; [Anzeigename] &#x2192; [Alias].
  
 +
; Beispiel
 +
Um auf die Nutzungsnweisung mit [Code] "S1" der Produktionsaufgabe eines Vorganges zuzugreifen, nutzen Sie die Formel <code>ME.ProductionTask.UseInstructions['S1']</code>.
  
HOLDER
+
Angenommen dem Projekt wurde die benutzerdefinierte Klasse "Meine Klasse" (<code>MyClass</code>) mit der Eigenschaft [Meine Eigenschaft 1] (<code>MyProperty1</code>) hinzugefügt. Auf den Wert von [Meine Eigenschaft 1] des Objekts "ABC" in der Klasse "MyClass" kann mit <code>PROJECT.Child['MyClass'].Child['ABC'].MyClassUser_MyProperty1</code> zugegriffen werden.
 
 
HOLDER bezieht sich Objekte der Eigenschaft "Formel". In der Gültigkeitsbedingung einer Nutzungsanweisung (in den Integrierten Stammdaten) stellt ME einen Vorgang- und HOLDER eine Hauptnutzungsanweisung dar. Um sich auf den Ressourcencode der Nutzungsanweisung in der Gültigkeitsbedingung zu beziehen, ist folgende Formel erforderlich:
 
 
 
: HOLDER.Resource.Code
 
 
 
 
 
PROJECT
 
 
 
PROJECT bezieht sich auf das zur Zeit genutzte Projekt. Damit kann auf in den Projekteinstellungen angezeigte Eigenschaften verwiesen werden. PROJECT ist in allen Formeln nutzbar.
 
 
 
Um, zum Beispiel, auf die Planungsbasiszeit zu verweisen, ist folgende Formel nötig:
 
 
 
: PROJECT.BasisTime
 
 
 
 
 
WORKSPACE
 
 
 
WORKSPACE bezieht sich auf den Arbeitsplatz des zur Zeit geöffneten Projektes. Damit kann auf in den Projekteinstellungen angezeigte Eigenschaften verwiesen werden. WORKSPACE ist in allen Formeln nutzbar.
 
 
 
Beispiel: Anhand der folgenden Formel kann der Projektdateiname erfragt werden.
 
 
 
: WORKSPACE.ProjectFileName
 
 
 
 
 
TARGET
 
 
 
TARGET ist nur in Argumenten einiger Funktionen verwendbar. Definieren Sie OBJECT für das erste Argument der internen Funktion und definieren Sie TARGET ab dem zweiten Argument, und danach. TARGET verweist auf das OBJECT des ersten Arguments.
 
 
 
Um die Summenfunktion der internen Funktionen zu verwenden, ist folgende Formel nötig:
 
 
 
: Sum('Order',TARGET.Qty)
 
 
 
In diesem Fall bezieht sich TARGET auf "Order".
 
 
 
 
 
INPUT
 
 
 
INPUT wird in virtuellen Umkehrfunktionen von Eigenschaften, in Anzeigeformeln, Umkehrfunktionen der Anzeige, Währungsformatformeln, etc. verwendet. Es bezieht sich prinzipiell auf Zeichenketten einer bestimmten Zelle. Weitere Details können jeweiliger Eigenschaften entnommen werden.
 
 
 
 
 
DELETE
 
 
 
DELETE wird verwendet, um Eigenschaftswerte zu löschen. Eigenschaftswerte der linken Seite von Zuordnungsformeln sind durch DELETE löschbar. Zum Beispiel:
 
 
 
: ME.Name=DELETE
 
 
 
 
 
Eigenschaften mit mehreren Werten
 
 
 
Wenn eine Eigenschaft über mehrere Werte verfügt, kann am Ende [n] eingegeben werden. "n" gibt die Anzahl von Eigenschaften an. Wenn Sie, zum Beispiel, den zweiten Kommentar eines Auftrages beschreiben wollten, würde die Formal wie folgt aussehen:
 
 
 
: Order.Comments[2]
 
 
 
Wenn Sie "0" angeben, wird das letzte Element ausgegeben. Wenn, zum Beispiel, "a;b;c" für die Eigenschaft Kommentare festgelegt wurde, wird "c" ausgegeben.
 
 
 
Wenn Sie kein [n] anfügen werden alle Werte ausgegeben, wenn die Eigenschaft eine Zeichenkette ist. Ansonsten wird die letzte Eigenschaft ausgegeben. Wenn, zum Beispiel, "a;b;c" für die Eigenschaft Kommentare festgelegt ist, wird auch "a;b;c" ausgegeben.
 
 
 
 
 
Eigenschaften mit mehreren Werten, wenn der Eigenschaftstyp ein Objekt ist
 
 
 
Für Objekttypeigenschaften mit mehreren Werten kann der Code des Objektes verwendet werden, um einen Index in der Liste mehrerer Werte festzulegen. Der Code ist eine Zeichenkette und die Werte der Eigenschaft werden nach einer passenden Zeichenkette durchsucht. Beim Vergleichen der Objekte mit der Zeichenkette wird nach folgender Priorität vorgegangen: Code -> Anzeigename -> Alias
 
 
 
Beispiel: ME ist ein Vorgang. Also wird, um auf die Anweisung dieses Vorganges (mit dem Code S1) zuzugreifen, die Formel folgende Formel verwendet:
 
 
 
: ME.ProductionTask.UseInstructions['S1']
 
 
 
Angenommen der Benutzer fügt eine Klasse "MyClass" hinzu, welche mit einer Eigenschaft namens "MyProperty1" hat. Mit der folgenden Formel könnte dann auf die MyProperty-Eigenschaft des Objektes MyClass mit dem Namen "ABC" zugegriffen werden:
 
 
 
: PROJECT.Child['MyClass'].Child['ABC'].MyProperty1
 
  
 
Weitere Informationen zu benutzerdefinierten Klassen finden Sie unter [[Hinzufügen einer neuen Klassendefinition|Hinzufügen einer neuen Klassendefinition]].
 
Weitere Informationen zu benutzerdefinierten Klassen finden Sie unter [[Hinzufügen einer neuen Klassendefinition|Hinzufügen einer neuen Klassendefinition]].
  
 +
[[Datei:UserClassTable.png]]
  
Werte
+
[[Datei:UserClassPropEditor.png]]
  
Häufig werden Werte wie Zahlen und Zeichenketten in Formeln verwendet. Unter Verwendung solcher Werte in Formel, muss folgendes beachtet werden:
+
== Werte ==
 +
Häufig werden Werte wie Zahlen und Strings in Formeln verwendet. Benutzen Sie in Formeln folgende Formatierungen.
  
 
+
{| class="wikitable"
{|
+
|+ Formatierung von Werten in Formeln
 +
|-
 +
!Datentyp!!Beschreibung!!Beispiel
 
|-
 
|-
|   ||Zahlen||Diese werden normal dargestellt.||123|| 
+
|Zahl||Kann direkt eingegeben werden||123
 
|-
 
|-
||   ||Zeichenketten||Diese werden in einfachen Anführungszeichen eingeschlossen.||'123'
+
|String||Wird mit einfachen Anführungszeichen umschlossen||'123'
 
|-
 
|-
||   ||Daten||Diese werden in Rautenzeichen (#) eingeschlossen.||#2005/01/01 12:00:00#
+
|Datum||Wird mit Rautenumschlossen||#2020/06/01 12:00:00#
 
|-
 
|-
||   ||Wahr oder falsch||Siehe das Beispiel für die Darstellungsweise.||TRUE, FALSE
+
|Bool||Direkte Eingabe des Werts||TRUE, FALSE
 
|-
 
|-
 
|}
 
|}
  
"\" in einer Zeichenkette stellt, zusammen mit dem benachbarten Zeichen, ein Kontrollzeichen/Steuerungszeichen dar. Aus diesem Grunde muss das Zeichen nicht einfach "\", sondern doppelt eingegeben werden: "\\" Für Eigenschaften wie "Vorgangsbalkentextformel", die mehreren Zeilen dargestellt werden können, kann "\n" eingeben werden, um eine neue Zeile bestimmen.
+
=== Steuerzeichen in Strings ===
 +
In Strings ist "\", zusammen mit dem nachfolgenden Zeichen, ein Steuerzeichen.
  
Wenn Sie, zum Beispiel, die folgende Formel für die Vorgangsbalkentextformel des Ressourcen-Gantt-Diagrammes eingeben, werden bei Darstellung des Formelergebnisses neue Zeilen eingefügt.
+
{| class="wikitable"
 
+
|+ Verwendung von Steuerzeichen
: ME.Operation.Work_Order+'\n'+ME.Operation.OperationOutMainItem+'\n'+ME.Operation.OperationOutMainItemQty
 
 
 
 
 
Operatoren
 
 
 
Folgende Operatoren stehen in Asprova zur Verfügung:
 
 
 
 
 
{|
 
 
|-
 
|-
|  ||+||  ||Addition, Verbindung von (Zeichen-)Ketten|| 
+
!Formel!!Rückgabewert!!Beschreibung
 
|-
 
|-
||   ||-||  ||Subtraktion
+
|'\\'||\||Wird als ein Backslash ausgegeben
 
|-
 
|-
||   ||*||  ||Multiplikation
+
|'\n'||&#8629;||Fügt einen Zeilenumbruch ein
 
|-
 
|-
||   ||/||  ||Division
+
|'\''||'||Gibt ein einfaches Anführungszeichen aus
 
|-
 
|-
||  ||^||  ||Potenzierung
+
|}
|-
+
 
||  ||%||  ||Rest
+
== Operatoren ==
|-
+
{| class="wikitable"
||  ||&&||  ||AND
+
|+ Verfügbare Operatoren
|-
 
||  ||||||  ||OR
 
|-
 
||  ||==||  ||Gleich (Vergleich)
 
|-
 
||  ||!=||  ||Ungleich (Vergleich)
 
 
|-
 
|-
||   ||>||   ||Größer (Vergleich)
+
!Operator!!Bedeutung!!Kommentar
 +
|+||Addition, Verbindung von (Zeichen-)Ketten||
 
|-
 
|-
||   ||>=||  ||Größer oder gleich (Vergleich)
+
|-||Subtraktion||
 
|-
 
|-
||  ||<||  ||Kleiner (Vergleich)
+
|*||Multiplikation||
|-
 
||  ||<=||  ||Kleiner oder gleich (Vergleich)
 
|-
 
||  ||(,)||  ||Klammern
 
|-
 
||  ||=||  ||Zuordnung
 
|-
 
|}
 
 
 
Die Priorität von Operatoren ist wie folgt:
 
 
 
 
 
:#^
 
:#*, /, %
 
:#+, -
 
:#==, !=, >, <, >=, <=
 
:#&&, ||
 
:#=
 
 
 
Inhalte in Klammern werden zuerst berechnet.
 
 
 
 
 
Funktionen
 
 
 
Interne Funktionen Asprovas können in Formeln verwendet werden. Eigens erstellte Formeln können auch in Formeln angewendet werden. Wenn Sie Funktionen verwenden, muss sichergestellt sein, dass Namen von Funktionen und Parametern/Argumenten (math) korrekt beschrieben sind.
 
 
 
Um Spec 1 auf einen Vorgang anzuwenden, kann folgende Funktion verwendet werden.
 
 
 
: GetApplicableSpec(1,ME.Operation)
 
 
 
[[Interne Funktionen|Hier]] finden Sie weitere Informationen zu internen Funktionen.
 
 
 
 
 
Einheiten
 
 
 
Zahlen können mit Einheiten versehen werden. Folgende Einheiten sind verfügbar:
 
 
 
 
 
{|
 
 
|-
 
|-
|   ||s||   ||Sekunden|| 
+
|/||Division||
 
|-
 
|-
||   ||m||  ||Minuten
+
|^||Potenzierung||
 
|-
 
|-
||   ||h||  ||Stunden
+
|%||Modulo||Rest der Division
 
|-
 
|-
||   ||d||  ||Tage
+
|&&||AND||Logisches UND
 
|-
 
|-
||   ||w||   ||Wochen
+
|<nowiki>||</nowiki>||OR||Logisches ODER
 
|-
 
|-
||   ||month||  ||Monate
+
|==||Gleich||Vergleich
 
|-
 
|-
|}
+
|!=||Ungleich||Vergleich
 
 
Neben diesen Einheiten sind folgende, weitere Einheiten verfügbar, um Produktion, Rüsten und Abrüsten in den Integrierten Stammdaten festzulegen.
 
 
 
 
 
{|
 
 
|-
 
|-
|   ||sp||   ||Produktionszeit pro Einheit (in Sekunden)|| 
+
|>||Größer||Vergleich
 
|-
 
|-
||   ||mp||  ||Produktionszeit pro Einheit (in Minuten)
+
|>=||Größer oder gleich||Vergleich
 
|-
 
|-
||   ||hp||  ||Produktionszeit pro Einheit (in Stunden)
+
|<||Kleiner||Vergleich
 
|-
 
|-
||   ||ps||  ||Menge, die in einer Sekunde produziert werden kann
+
|<=||Kleiner oder gleich||Vergleich
 
|-
 
|-
||   ||pm||  ||Menge, die in einer Minute produziert werden kann
+
|(, )||Klammern||
 
|-
 
|-
||   ||ph||  ||Menge, die in einer Stunde produziert werden kann
+
|=||Zuweisung||Setzen von Werten
 
|-
 
|-
 
|}
 
|}
  
Beispiel: Beschreibung von zehnminütiger Kapazität zur Herstellung einer Einheit:
+
Die Operatoren werden in der folgenden Reihenfolge ausgewertet:
 
+
# ^
: 10mp
+
# *, /, %
 
+
# +, -
Um 10 Minuten als festen Wert hinzuzufügen, geben Sie an:
+
# ==, !=, >, <, >=, <=
 
+
# &&, ||
: 10mp+10m
+
# =
 
 
Zahlen müssen vor Einheiten eingegeben werden. Einheiten dürfen nicht hinter Zahlen in Klammern stehen.
 
 
 
 
 
Ergebnistyp/Typ des Rückgabewertes
 
 
 
Asprova enthält mehrere Eigenschaftsarten und Werte. Der Ergebnistyp einer Formel, die mehrere Typen enthält, wird von Typ im linken Teil der Formel bestimmt.
 
 
 
Im folgenden Beispiel ist auf der rechten Seite des Operators eine Zahl ("2") und auf der linken Seite eine Zeit ("10m") angegeben.
 
 
 
: 10m * 2
 
 
 
Aus diesem Grund ist der Ergebnistyp eine Zeitangabe und das Vorgangsergebnis lautet...
 
 
 
: 20m
 
 
 
Wenn linke und rechte Seite vertauscht werden, sodass die rechte Seite die Zeit ("10m") angibt und die linke Seite eine Zahl ("2"), ...
 
 
 
: 2 * 10m
 
 
 
...dann ist der Ergebnistyp eine Zahl und das Vorgangsergebnis ist ...
 
 
 
: 1200.0
 
 
 
Diese beiden Formeln sehen gleich aus, jedoch sind ihre Ergebnisse verschieden. Das liegt an den unterschiedlichen Ergebnistypen. Zeit wird in Sekunden berechnet. "10m * 2" wird als "600 * 2" (=1200) interpretiert. "2 * 10m" wird als "2 * 600" (=1200) in diesen Formeln interpretiert. Bis an diese Stelle wären die Ergebnisse gleich. Wenn aber der Ergebnistyp eine Zeitangabe ist, werden 1200 Sekunden als 20 Minuten angesehen, während beim Ergebnistyp "Zahl" die 1200 bestehen bliebe.
 
 
 
Unterschiede im Ergebnistypen führen zu unterschiedlichen Ergebnissen der Formeln. Wenn nur Zahlen (ohne Einheiten) für Kapazitätswert und Rüstzeit zur Verfügung stehen, werden diese als Minutenangaben verarbeitet und die Ergebnisse der Zuordnung würden für die Formeln unterschiedlich. (Wenn die Eigenschaft eine Zeitangabe ist, empfehlen wir eine Festsetzung des Ergebnistyps als Zeitangabe, zum Beispiel: 10m * 2.)
 
 
 
Im Formeleditor kann der Ergebnistyp, oder das Vorgangsergebnis einer Formel, überprüft werden. Bitte nutzen Sie den Editor als Referenz, um Formen einzugeben.
 
 
 
 
 
 
 
Eigenschaften ohne Wert
 
 
 
Wenn arithmetische Operatoren auf Zahlen angewendet werden und einer der Operatoren nicht definiert ist, ist das Ergebnis der Berechnung wie folgt: (Die Bedeutungen der Ausdrücke innerhalb der Klammern sind unten angeben.)
 
 
 
NS - nicht definierter Wert
 
 
 
S - definierter Wert
 
 
 
0 - numerischer Wert
 
 
 
: NS+S = S
 
 
 
: S+NS = S
 
 
 
: NS-S = -S
 
 
 
: S-NS = S
 
 
 
: NS * S = 0
 
 
 
: S * NS = 0
 
 
 
: NS / S = 0
 
 
 
: S / NS = NS
 
 
 
Das Berechnungsergebnis einer Formel, die Eigenschaften ohne Werte enthält
 
 
 
Die Berechnung einer Formel, die Eigenschaften ohne Werte enthält, fällt für jeden Operator wie unten beschrieben aus. "NS" und "X, Y" in den Ausdrücken haben folgende Bedeutung
 
 
 
: NS = Es existiert kein Wert.
 
 
 
: X, Y = Ein Wert existiert.
 
 
 
 
 
Operator ==
 
 
 
: NS == NS -> TRUE
 
 
 
: NS == X -> FALSE
 
 
 
 
 
Operator !=
 
 
 
: NS != NS -> FALSE
 
 
 
: NS != X -> TRUE
 
 
 
 
 
Operatoren >, <, >=, und <=
 
 
 
Wenn auf einer Seite des Operators kein Wert vorhanden ist, enthält das Formelergebnis auch keinen Wert.
 
 
 
: NS > X -> NS
 
 
 
: NS < X -> NS
 
 
 
: NS >= X -> NS
 
 
 
: NS <= X -> NS
 
 
 
 
 
Operator &&
 
 
 
&& mit einer Eigenschaft ohne Wert fällt wie unten angegeben aus. Bei Zahlen wird 0 als FALSE bewertet und andere Zahlen (nicht 0) werden als TRUE bewertet. Andere Datentypen werden wie Eigenschaften ohne Daten behandelt.
 
 
 
: NS && TRUE -> FALSE
 
 
 
: NS && FALSE -> FALSE
 
 
 
 
 
Operator ||
 
 
 
|| mit einer Eigenschaft ohne Wert fällt wie unten angegeben aus. Was Zahlen anbelangt, wird 0 als FALSE bewertet und andere Zahlen (nicht 0) werden als TRUE bewertet. Andere Datentypen werden wie Eigenschaften ohne Daten behandelt.
 
 
 
: NS || TRUE -> TRUE
 
  
: NS || FALSE -> FALSE
+
Inhalte in Klammern werden zuerst ausgewertet.
  
 +
=== Kurzschlussauswertung ===
 +
Asprova nutzt [https://de.wikipedia.org/wiki/Kurzschlussauswertung Kurzschlussauswertung] zur schnelleren Auswertung von Formeln. Durch eine entsprechende  Formelstruktur kann diese Funktionalität optimal genutzt werden. Weitere Informationen dazu finden Sie [[Beschleunigung der Fomelauswertung|hier]].
  
IF
+
== Funktionen ==
 +
In Formeln können Sie interne und benutzerdefinierte Funktionen verwenden. Die Funktion zum Beziehen der, auf einen Vorgang anzuwendenden, [Spezifikation 1] lautet <code>GetApplicableSpec(1,ME.Operation)</code>.
  
Das Format ist normalerweise IF(Condition, Value 1, Value 2) [entspricht IF(Bedingung, Wert 1, Wert2)]. Wenn die Bedingung TRUE [WAHR] ist, wird der Wert 1 ausgegeben. Wenn sie FALSE [UNWAHR] ist, wird der Wert 2 ausgegeben. Wenn eine Eigenschaft ohne Wert enthalten ist, ist das Ergebnis wie unten angegeben. Wenn der Bedingungsteil eine Zahl ist, wird 0 mit FALSE bewertet und andere Zahlen (nicht 0) werden mit TRUE bewertet. Andere Datentypen werden wie Eigenschaften ohne Daten behandelt.
+
Bei der Nutzung von Funktionen achten Sie bitte auf die korrekte Schreibweise von Funktionsnamen und Argumenten. Weitergehende Informationen zu Asprovas internen Funktionen finden sich [[Interne Funktionen|hier]].
  
: IF( TRUE, NS, X ) -> NS
+
=== IF ===
 +
Die interne Funktion <code>IF()</code> ermöglicht die Bewertung von Vorgängen mit der folgenden Formel:
 +
IF(Bedingung,
 +
  falls <code>TRUE</code>,
 +
  falls <code>FALSE</code>
 +
)
  
: IF( FALSE, NS, X ) -> X
+
; Beispiel
 +
Ist die [Startzeit] vor dem 1. Juni 2020, so wird der erste [Kommentar] auf "ABC" gesetzt, sonst auf "XYZ":
 +
ME.Comments=IF(ME.StartTime<=#2020/06/01,
 +
  'ABC',
 +
  'XYZ'
 +
)
 +
oder
 +
IF(ME.StartTime<=#2020/06/01,
 +
  ME.Comments='ABC',
 +
  ME.Comments='XYZ'
 +
)
  
: IF( NS, X, Y ) -> Y
+
Ab Version 13.1 können mehrere Bedingungen eingegeben werden:
 +
IF(Bedingung 1,
 +
    falls <code>TRUE</code>,
 +
  Bedingung 2,
 +
    falls <code>TRUE</code>,
 +
  ...
 +
    ...
 +
  Bedingung n,
 +
    falls <code>TRUE</code>,
 +
    falls <code>FALSE</code>
 +
)
  
 +
; Beispiel
 +
Bei [Priorität] ab 90 rot, von 50 bis 90 blau und bei weniger als 50 grün:
 +
IF(ME.Order.Priority>=90,
 +
    RGB(255,0,0),
 +
  ME.Order.Priority<50,
 +
    RGB(0,255,0),
 +
    RGB(0,0,255)
 +
)
  
 
<hr>
 
<hr>
 
<div align="right">Hilfe Nummer: 741000</div>
 
<div align="right">Hilfe Nummer: 741000</div>

Version vom 29. Oktober 2018, 15:25 Uhr

Hilfe Nummer: 741000
Zusätzliche Informationen
Formeleditor

Für Eigenschaften mit [Datentyp] "Formel" müssen Formeln in das Eingabefeld eingetragen werden.

Übersicht

Formeln können die folgenden Bestandteile haben:

  • Eigenschaften
  • Werte
  • Operatoren
  • Funktionen

Beispiel

Die folgende Formel ist der [Standardwert] für [Vorgangsbalkentext] des Ressourcen-Gantt-Diagramms:

ME.Operation.Order+'\n'+ME.Operation.OperationOutMainItem+'\n'+ME.Operation.OperationOutMainItemQty

ME.Operation.OperationOutMainItemQty

Eigenschaft mit der Produktionsmenge des Vorgangs

+

Additionsoperator (wird hier genutzt um mehrere Strings miteinander zu verbinden)

\n

String, die einen Zeilenumbruch vorgibt

Bei der Berechnung von Zeiten oder Zeitspannen, sowie beim Definieren von Kapazitätswerten ([Rüsten], [Produktion] und [Abrüsten]) können Einheiten genutzt werden. Es können auch Formeln genutzt werden, die mehrere Datentypen kombinieren, etwa Zeitspannen und Zahlen. Weitergehende Informationen zur Auswertung von Eigenschaften ohne Werte finden sich hier.

Eigenschaften

Lang- und Kurznamen

Eigenschaften haben jeweils einen langen- und einen kurzen Namen. Der Kurzname für die [Menge] eines Auftrages ist Qty und der Langname ist Order_Qty. Für den Langnamen werden Klassenname und ein Unterstrich vor den Kurznamen gesetzt. (Um den Langnamen einer Eigenschaft sicher zu bestimmen, nutzen Sie entweder die Klassendefinition in dieser Hilfe oder direkt in Asprova deren [Code].)

Wird eine Eigenschaft über ME etc. referenziert, so ist das Zielobjekt eindeutig, so dass der Kurzname genutzt werden kann. Dies ist meistens der Fall, auch in der Dropdown-Liste der verfügbaren Eigenschaften wird dann der Kurzname verwendet. Wird ein übergeordnetes (PARENT) oder untergeordnetes Objekt (CHILD) referenziert oder ein Sortierschlüssel als Formel definiert, so ist das ist das Zielobjekt nicht eindeutig, da Eigenschaften unterschiedlicher Klassen den gleichen Kurznamen haben können. Hier muss der Langname verwendet werden.

ME

Wenn Sie eine Eigenschaft in einer Formel verwenden, geben Sie zunächst ME ein. ME ist das Projekt, auf das sich die Formel der Eigenschaft mit [Datentyp] "Formel" bezieht. So ist etwa bei der [Gültigkeitsbedingung] einer Hauptnutzungsanweisung in dern Integrierten Stammdaten ME ein Vorgang. Beim [Vorgangsbalkentext] des Ressourcen-Gantt-Diagramms ist ME eine Nutzungsanweisung. Wird nach ME ein Punkt (.) eingegeben, so erscheint eine Dropdown-Liste der verfügbaren Eigenschaften, die durch einen Klicken ausgewählt werden können. Natürlich können Sie den Eigenschaftsnamen auch einfach hinter dem Punkt eingeben.

Beispiel

Um im [Auftragsbalken Formel rechter Text] im Auftrags-Gantt-Diagramm den [Fälligkeitstermin] anzuzeigen, geben Sie ME.LET ein.

ME könnte hier weggelassen werden, der eingegebene Eigenschaftsname wird dann als eine Eigenschaft von ME angesehen. Daher kann ME.LET oder LET eingeben werden und das Ergebnis ist das Gleiche. Aus Gründen der Durchgängigkeit und des leichteren Verständnis, ist diese Vereinfachung jedoch nicht empfohlen.

Ist die referenzierte Eigenschaft ein Objekt, so wird nach Eingabe eines Punktes eine Dropdown-Liste der verfügbaren Eigenschaften dieses Objekts angezeigt.

Beispiel

Um in der [Vorgangsbalkentextformel] des Ressourcen-Gantt-Diagramm den [Artikelname] des Auftragsartikels zu referenzieren, geben Sie ME.Order.Item.Name ein.

OTHER

Bei Eigenschaften wie der [Verknüpfungsbedingung], bei denen die Werte zweier Eigenschaften verglichen werden, kann zusätzlich zu ME auch OTHER verwendet werden. OTHER bezieht sich auch auf ein Objekt und kann genauso wie ME verwendet werden.

Beispiel

Um in der [Verknüpfungsbedingung] eines Artikels festzulegen, dass zu Verknüpfen die [Spezifikation 1] der Aufträge gleich sein muss geben Sie ME.Order.Spec1==OTHER.Order.Spec1 ein.

Im Formeleditor ist ersichtlich, ob OTHER verwendet werden kann und auf welches Objekt sich OTHER bezieht.

Eine andere Eigenschaft, die sich auf zwei Eigenschaften bezieht ist die [Ofengültigkeitsbedingung] von Ressourcen. Hier können Eigenschaften auch nur über ME und ohne OTHER verglichen werden.

Beispiel

Die [Ofengültigkeitsbedingung], die die gleichzeitige Zuweisung von Aufträgen des gleichen Kunden erlaubt lautet ME.Order.Customer.Code.

HOLDER

HOLDER bezieht sich auf das Objekt, zu der die Eigenschaft mit [Datentyp] "Formel" gehört. So ist etwa in der [Gültigkeitsbedingung] einer Hauptnutzungsanweisung in den Integrierten Stammdaten ME ein Vorgang und HOLDER die Hauptnutzungsanweisung. Um sich in der [Gültigkeitsbedingung] auf den [Code] der Ressource der Hauptnutzungsanweisung in der Gültigkeitsbedingung zu beziehen, wird die Formel HOLDER.Resource.Code genutzt.

PROJECT

PROJECT bezieht sich auf das aktuell genutzte Projekt, so können die Projekteigenschaften referenziert werden. PROJECT ist in allen Formeln nutzbar.

Beispiel

Um die [Planungsbasiszeit] zu referenzieren wird die Formel PROJECT.BasisTime genutzt.

WORKSPACE

WORKSPACE bezieht sich auf den Arbeitsplatz des aktuell genutzten Projekt, so können die Arbeitsplatzeigenschaften referenziert werden.WORKSPACE ist in allen Formeln nutzbar.

Beispiel

Um den Namen der [Projektdatei] zu referenzieren wird die Formel WORKSPACE.ProjectFileName genutzt.

TARGET

TARGET ist nur als Argument bestimmter interner Funktionen verwendbar. Definieren Sie als erstes Argument der internen Funktion ein Objekt und definieren dann TARGET ab dem zweiten Argument. TARGET verweist auf das Objekt des ersten Arguments.

Beispiel

Um die Summe der [Menge] aller Aufträge zu berechnen, wird die Formel Sum('Order',TARGET.Qty) genutzt. TARGET steht hier für die Auftragsklasse.

Verschachtelung

Der Aufruf einer internen Funktion in einer anderen internen Funktion wird Verschachteln genannt. Verschachtelungen können sich über mehrere Ebenen erstrecken.

Angenommen die internen Funktionen A und B akzeptieren beide TARGET als Argument. Wenn B als Argument von A genutzt wird, so referenziert das TARGET-Argument in B das Objektargument in B.

Beispiel

Es soll die größte [Menge] aller Aufträge mit dem frühesten [Fälligkeitstermin] unter [Aufträge ganz rechts] von ME bestimmt werden:

MaxIF(ME.RightmostOrder,
  TARGET.LET==Min(ME.RightmostOrder,
    TARGET.LET)),
  TARGETQty
)

Das erste TARGET wird als ME.RightmostOrder ausgewertet, also das erste Argument der MaxIF-Funktion. Das zweite TARGET wird auch als ME.RightmostOrder ausgewertet, aber aks das erste Argument der MIN-Funktion.

INPUT

INPUT wird in der [Virtuelle Eigenschaftsformel invers], der [Anzeigeformel], [Inverse Anzeigeformel], [Währung] etc. verwendet. Es bezieht sich prinzipiell auf die in eine Zelle eingegebene String. Weitere Details können der Beschreibung der jeweiligen Eigenschaften entnommen werden.

DELETE

DELETE wird verwendet, um Eigenschaftswerte zu löschen.

Beispiel

Der Name der Eigenschaft wird mit ME.Name=DELETE gelöscht.

Eigenschaften mit mehreren Werten

Wenn eine Eigenschaft über mehrere Werte verfügt, können Sie hinter der Eigenschaft [n] eingegeben, wobei n der Index des gewünschten Eigenschaftswerts ist.

Beispiel

Um den zweiten [Kommentar] eines Auftrages zu referenzieren nutzen Sie die Formel ME.Order.Comments[2].

Wenn Sie für n 0 angeben, wird das letzte Element ausgegeben. Wenn etwa [Kommentar] "a;b;c" ist, würde "c" zurückgegeben.

Wenn Sie kein [n] anfügen werden alle Werte zurückgegeben, wenn die Werte Strings sind. Ansonsten wird der letzte Eigenschaftswert zurückgegeben. Wenn etwa [Kommentar] "a;b;c" ist, würde "a;b;c" zurückgegeben. Um auch bei andere Datentypen alle Werte zurückzugeben, kann die interne Funktion StrProps() genutzt werden.

Datentyp Objekt

Für Eigenschaften mit [Datentyp] "Objekt" mit mehreren Werten, kann statt dem Index der [Code] der Objekte verwendet werden, um einen bestimmten Werte zu adressieren. Der [Code] ist eine String und die Werte der Eigenschaft werden nach einer passenden String durchsucht. Der Vergleich der Objekte mit der String erfolgt in der Reihenfolge [Code] → [Anzeigename] → [Alias].

Beispiel

Um auf die Nutzungsnweisung mit [Code] "S1" der Produktionsaufgabe eines Vorganges zuzugreifen, nutzen Sie die Formel ME.ProductionTask.UseInstructions['S1'].

Angenommen dem Projekt wurde die benutzerdefinierte Klasse "Meine Klasse" (MyClass) mit der Eigenschaft [Meine Eigenschaft 1] (MyProperty1) hinzugefügt. Auf den Wert von [Meine Eigenschaft 1] des Objekts "ABC" in der Klasse "MyClass" kann mit PROJECT.Child['MyClass'].Child['ABC'].MyClassUser_MyProperty1 zugegriffen werden.

Weitere Informationen zu benutzerdefinierten Klassen finden Sie unter Hinzufügen einer neuen Klassendefinition.

UserClassTable.png

UserClassPropEditor.png

Werte

Häufig werden Werte wie Zahlen und Strings in Formeln verwendet. Benutzen Sie in Formeln folgende Formatierungen.

Formatierung von Werten in Formeln
Datentyp Beschreibung Beispiel
Zahl Kann direkt eingegeben werden 123
String Wird mit einfachen Anführungszeichen umschlossen '123'
Datum Wird mit Rautenumschlossen #2020/06/01 12:00:00#
Bool Direkte Eingabe des Werts TRUE, FALSE

Steuerzeichen in Strings

In Strings ist "\", zusammen mit dem nachfolgenden Zeichen, ein Steuerzeichen.

Verwendung von Steuerzeichen
Formel Rückgabewert Beschreibung
'\\' \ Wird als ein Backslash ausgegeben
'\n' Fügt einen Zeilenumbruch ein
'\ ' Gibt ein einfaches Anführungszeichen aus

Operatoren

Verfügbare Operatoren
Operator Bedeutung Kommentar
Addition, Verbindung von (Zeichen-)Ketten
* Multiplikation
/ Division
^ Potenzierung
% Modulo Rest der Division
&& AND Logisches UND
|| OR Logisches ODER
== Gleich Vergleich
!= Ungleich Vergleich
> Größer Vergleich
>= Größer oder gleich Vergleich
< Kleiner Vergleich
<= Kleiner oder gleich Vergleich
(, ) Klammern
= Zuweisung Setzen von Werten

Die Operatoren werden in der folgenden Reihenfolge ausgewertet:

  1. ^
  2. *, /, %
  3. +, -
  4. ==, !=, >, <, >=, <=
  5. &&, ||
  6. =

Inhalte in Klammern werden zuerst ausgewertet.

Kurzschlussauswertung

Asprova nutzt Kurzschlussauswertung zur schnelleren Auswertung von Formeln. Durch eine entsprechende Formelstruktur kann diese Funktionalität optimal genutzt werden. Weitere Informationen dazu finden Sie hier.

Funktionen

In Formeln können Sie interne und benutzerdefinierte Funktionen verwenden. Die Funktion zum Beziehen der, auf einen Vorgang anzuwendenden, [Spezifikation 1] lautet GetApplicableSpec(1,ME.Operation).

Bei der Nutzung von Funktionen achten Sie bitte auf die korrekte Schreibweise von Funktionsnamen und Argumenten. Weitergehende Informationen zu Asprovas internen Funktionen finden sich hier.

IF

Die interne Funktion IF() ermöglicht die Bewertung von Vorgängen mit der folgenden Formel:

IF(Bedingung,
  falls TRUE,
  falls FALSE
)
Beispiel

Ist die [Startzeit] vor dem 1. Juni 2020, so wird der erste [Kommentar] auf "ABC" gesetzt, sonst auf "XYZ":

ME.Comments=IF(ME.StartTime<=#2020/06/01,
  'ABC',
  'XYZ'
)

oder

IF(ME.StartTime<=#2020/06/01,
  ME.Comments='ABC',
  ME.Comments='XYZ'
)

Ab Version 13.1 können mehrere Bedingungen eingegeben werden:

IF(Bedingung 1,
    falls TRUE,
  Bedingung 2,
    falls TRUE,
  ...
    ...
  Bedingung n,
    falls TRUE,
    falls FALSE
)
Beispiel

Bei [Priorität] ab 90 rot, von 50 bis 90 blau und bei weniger als 50 grün:

IF(ME.Order.Priority>=90,
    RGB(255,0,0),
  ME.Order.Priority<50,
    RGB(0,255,0),
    RGB(0,0,255)
)

Hilfe Nummer: 741000