Zum Hauptinhalt springen
Wissensdatenbankv14.0

Formelfelder

Der Wert eines Formel-Benutzerfelds wird von Celoxis automatisch anhand seiner Formel berechnet. Die Berechnung erfolgt jedes Mal, wenn das Feld gerendert wird. Die Formelausdruckssprache ist hochentwickelt und ermöglicht komplexe Datenmanipulationen, einschließlich arithmetischer Operationen sowie Transformationen von Zeichenketten und Datumsangaben.

Syntax

Celoxis behandelt alles zwischen

Und

als Ausdrücke. Formeln können entweder als reine Ausdrücke definiert werden, z. B.

oder eine Mischung aus Text und Ausdrücken enthalten als

wenn etwas eingeschlossen ist

Und

wird als Ausdruck behandelt und ausgewertet, während alles außerhalb davon unverändert in die Ausgabe kopiert wird. Für Interessierte: Wenn die Formeln einem Projekt mit dem Namen „…“ zugeordnet wären, …

und das Budget war

Die Ausgabe wäre

Und

jeweils.

Der Punktoperator

Der Punktoperator dient dazu, auf eine Eigenschaft eines Objekts zu verweisen. Im Beispiel

, Die

Bezieht sich auf das Projektbudget, wenn das benutzerdefinierte Feld einem Projekt zugeordnet ist. Der Punktoperator kann auch verwendet werden, um eine Funktion (auch Methode genannt) eines Objekts aufzurufen. Im Beispiel

, Die

ist ein Funktionsaufruf, der den Projektnamen in Großbuchstaben umwandeln würde.

Betreiber

  • Arithmetik: +, - (binär), *, / und div, % und mod, - (unär)
  • Zeichenkettenverkettung: +=
  • Logische Operatoren: und, &&, oder, ||, nicht, !
  • Relational : == , eq , != , ne , < , lt , > , gt , ge , > = , le . Vergleiche können mit anderen Werten oder mit booleschen, Zeichenketten-, Ganzzahl- oder Gleitkommaliteralen durchgeführt werden.<=
  • Leer: Der leere Operator ist eine Präfixoperation, mit der man feststellen kann, ob ein Wert null oder leer ist.
  • Bedingung : A ? B : C. Werte B oder C aus , abhängig vom Ergebnis der Auswertung von A.
  • Abtretung: =
  • Semikolon: ;

Die Reihenfolge der Operatoren von der höchsten zur niedrigsten, von links nach rechts, ist wie folgt:

  • [] .
  • () (wird verwendet, um die Priorität von Operatoren zu ändern)
  • - (unär) nicht ! leer
  • * / div % mod
  • + - (binär)
  • +=
  • < > <= >= lt gt le ge
  • == != eq ne
  • && Und
  • || oder
  • ? :
  • =
  • ;

Reservierte Wörter

Die folgenden Wörter sind für die EL reserviert und dürfen nicht als Identifikatoren verwendet werden:

UndodernichtGleichung
neltgtle
geWAHRFALSCHnull
Instanz vonleerdivMod

Grundlegende Beispiele

FormelErgebnis
${1 > (4/2)}FALSCH
${4.0 >= 3}WAHR
${100.0 == 100}WAHR
${(10*10) ne 100}FALSCH
${'a' < 'b'}WAHR
${'hip' gt 'hit'}FALSCH
${4 > 3}WAHR
${1.2E4 + 1.4}12001.4
${3 div 4}0.75
${10 mod 4}2
${!empty me.code}Falsch, wenn der Code des Objekts null oder eine leere Zeichenkette ist

Nutzenfunktionen

Folgende Hilfsfunktionen wurden bereitgestellt:

formatDate(date)Der formatierte Datumswert (ohne Uhrzeit) gemäß den Einstellungen des Betrachters.
formatDateTime(datetime)Der formatierte Wert von Datum und Uhrzeit gemäß den Einstellungen des Betrachters.
formatNumber(Zahl)Der formatierte Wert der Zahl gemäß dem Gebietsschema des Betrachters.
Währung formatieren(Zahl)Der Währungswert wird gemäß den Unternehmenseinstellungen und dem Zahlenformat des Betrachters formatiert. Beispiel: 25.000 $
hoursToHHMM(number)Die Stunden werden im Format HH:MM angegeben. Beispielsweise ergibt 2,5 das Format 2:30

Schreiben mehrzeiliger Formeln

Um den Formelcode auf mehrere Zeilen zu verteilen, verwenden Sie die = und ; . Der Rückgabewert ist die letzte Anweisung der Formel. Zum Beispiel:

${ apc = me.actualPercentComplete; ppc = me.plannedPercentComplete; (apc - ppc)/ppc }

Der Formel-Rückgabedatentyp

Beim Definieren einer Formel müssen Sie einen Formeldatentyp. Dieser gibt dem System an, welchen Wert die Formel zurückgeben soll. Celoxis formatiert den Rückgabewert automatisch anhand des Datentyps. Wenn Sie beispielsweise als Rückgabetyp „Währung“ angeben und Ihre Formel die Zahl 10000, lautet die Ausgabe „ 10.000 $“. Celoxis formatiert die Zahl also automatisch und fügt das Währungssymbol des Unternehmens hinzu.

Das Ich -Objekt

Das Objekt „me“ in der Formel repräsentiert das Objekt, für das die Formel ausgewertet wird. Angenommen, unser Formelfeld „Kundenvorschuss“ ist als ${me.budget * 0,1} definiert, d. h. es entspricht 10 % des Budgets. Wenn wir dieses Feld sowohl Projekten als auch Aufgaben zugeordnet haben, ist das Objekt „me“ bei der Auswertung der Formel für ein Projekt ein Projektobjekt und für eine Aufgabe ein Aufgabenobjekt.

Feldreferenz

Um die Liste der verfügbaren Felder anzuzeigen, klicken Sie im Fenster „Benutzerdefinierte Felder hinzufügen/bearbeiten“ auf die Registerkarte „Feldreferenz“. Klicken Sie auf das Plus-Symbol, um die Liste der verfügbaren Variablen für die verschiedenen Entitäten zu erweitern .

Fehlerbehandlung

Wenn beim Auswerten einer Formel ein Fehler auftritt, z. B. weil Sie eine Zahl anstelle einer Zeichenkette übergeben haben, wird die Fehlermeldung „ERR!“. Bewegen Sie den Mauszeiger darüber, um eine genauere Beschreibung des Problems zu erhalten.

Beispiele

Angenommen, wir haben ein Projekt mit den folgenden Daten.

EtikettFeldWert
AUSWEISAusweis1234
NameNameEinrichtung von Büroräumen
StartKalender starten10. Januar 2011
BudgetBudget5000
Geschätzte Kostengeschätzte Kosten4000
Tatsächliche Kostentatsächliche Kosten3800

Wir betrachten nun einige einfache Beispiele. Wir gehen davon aus, dass die Formel Projekten zugeordnet ist und die Beispielausgabe für das oben beschriebene Projekt gilt.

FormelAusgabeKommentare
${me.id * 10}12340Die ID wird mit 10 multipliziert
me.id * 10me.id * 10Nicht in ${} eingeschlossen und daher unverändert in die Ausgabe übernommen.
ID:${me.id}ID:1234Text vermischt mit einem Ausdruck
${me.name + 100}HILFE!Arithmetische Operationen können nicht mit dem Datentyp String durchgeführt werden.
${me.abcd}HILFE!„me“ besitzt keine Eigenschaft namens „abcd“.
${formatDate(me.startCalendar)}10. Januar 2011Formatiert das Startdatum gemäß dem vom Benutzer gewählten Datumsformat.
${me.actualCost gt (me.budget*.9) ? 'ALERT' : 'OK'}ALARMEin Beispiel, wie man if/then/else schreibt
${formatCurrency(me.budget)}$ 5,000Angenommen, Ihr Währungssymbol ist $
${round(((me.budget - me.actualCost)*100)/me.budget)}%24%Berechnet den verbleibenden Prozentsatz des Budgets

Erweitertes Beispiel: Ihr eigener Zeitplan-Indikator

Nehmen wir an, Sie möchten einen Indikator für die Terminstabilität haben, der auf Basis von Referenzwerten, d. h. dem Datum, das Sie dem Kunden tatsächlich zugesagt haben, und nicht auf dem Enddatum des aktuellen Plans basiert.

Sie erstellen ein Formelfeld, ordnen es Projekten zu, legen den Ausgabedatentyp auf Text und geben die Formel wie folgt ein:

${ pc = me.actualPercentComplete; pFinish = me.projectedFinishCalendar; bFinish = me.baselineFinish; now = Date.now(); label = 'Unbekannt'; label = Date.before(pFinish, bFinish) ? 'Pünktlich' : label; label = Date.after(pFinish, bFinish) ? 'Gefährdet' : label; label = Date.after(now, bFinish) ? 'Überfällig' : label; label = pc == 100 ? 'Abgeschlossen' : label; label }

Im Farbteil der Formel tragen Sie die Zuordnungen wie folgt ein:

ErgebnisFarbe
RechtzeitigGrün
GefährdetOrange
ÜberfälligRot
VollendetBraun