Formeln
Für Eigenschaften vom Typ Formel müssen Formeln in das Eingabefeld eingetragen werden.
Grundsätzliches
Eine Formel setzt sich zusammen aus:
- Eigenschaften
- Werten
- Operatoren
- Funktionen
Die folgende Formel ist die standardmäßige Vorgangsbalkentextformel für das Ressourcen-Gantt-Diagramm:
- ME.WorkInst_Operation.Work_Order+'\n'+ME.WorkInst_Operation.Work_OperationOutMainItem+'\n'+ME.WorkInst_Operation.Work_OperationOutMainItemQty
"ME.WorkInst_Operation.Work_OperationOutMainItem" - diese Eigenschaft zeigt die Produktionsmenge eines Vorganges an.
"+" ist ein Additionsoperator und verbindet Zeichenketten, wenn es zwischen solchen verwendet wird.
"'\n'" ist ein Zeichenkettenwert (Sonderzeichen) und bewirkt einen Zeilenumbruch (newline).
Eigenschaften
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.)
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.
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.
ME
Wenn Sie eine Eigenschaft in einer Formel verwenden, geben Sie zunächst folgendes ein:
- ME
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.
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: Ein Fälligkeitsdatum (LET) für die Eigenschaft "Auftragsbalken Formel rechter Text" im Auftrags-Gantt-Diagramm sieht wie folgt aus:
- ME.LET
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.
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:
- ME.Order.Item.Name
OTHER
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.
Beispiel: Um zu beschreiben, dass Auftragsspezifikation 1 in zwei Eigenschaften, die die Verknüpfungsbedingung verwenden, gleich ist, würde folgende Formel benutzt werden:
- ME.Order.Spec1.Code==OTHER.Order.Spec1.Code
Sehen Sie im Formeleditor nach, ob OTHER verwendet werden kann, um das Objekt zu finden, auf welches sich OTHER bezieht.
Die Eigenschaft "Ofengültigkeitsbedingung" vergleicht Werte von zwei Eigenschaften. Dies geschieht nur über ME, nicht unter verwendung von OTHER.
Eine Ofengültigkeitsbedingung kann genutzt werden, um Aufträge gleicher Kunden gleichzeitig an eine Ofenressource zuzuweisen:
- ME.Order.Customer.Code
HOLDER
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.
Werte
Häufig werden Werte wie Zahlen und Zeichenketten in Formeln verwendet. Unter Verwendung solcher Werte in Formel, muss folgendes beachtet werden:
Zahlen | Diese werden normal dargestellt. | 123 | ||
Zeichenketten | Diese werden in einfachen Anführungszeichen eingeschlossen. | '123' | ||
Daten | Diese werden in Rautenzeichen (#) eingeschlossen. | #2005/01/01 12:00:00# | ||
Wahr oder falsch | Siehe das Beispiel für die Darstellungsweise. | 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.
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.
- 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 | |||
- | Subtraktion | |||
* | Multiplikation | |||
/ | Division | |||
^ | Potenzierung | |||
% | Rest | |||
&& | AND | |||
OR | ||||
== | Gleich (Vergleich) | |||
!= | Ungleich (Vergleich) | |||
> | Größer (Vergleich) | |||
>= | Größer oder gleich (Vergleich) | |||
< | Kleiner (Vergleich) | |||
<= | 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)
Hier finden Sie weitere Informationen zu internen Funktionen.
Einheiten
Zahlen können mit Einheiten versehen werden. Folgende Einheiten sind verfügbar:
s | Sekunden | |||
m | Minuten | |||
h | Stunden | |||
d | Tage | |||
w | Wochen | |||
month | Monate |
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) | |||
mp | Produktionszeit pro Einheit (in Minuten) | |||
hp | Produktionszeit pro Einheit (in Stunden) | |||
ps | Menge, die in einer Sekunde produziert werden kann | |||
pm | Menge, die in einer Minute produziert werden kann | |||
ph | Menge, die in einer Stunde produziert werden kann |
Beispiel: Beschreibung von zehnminütiger Kapazität zur Herstellung einer Einheit:
- 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
IF
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.
- IF( TRUE, NS, X ) -> NS
- IF( FALSE, NS, X ) -> X
- IF( NS, X, Y ) -> Y