Was sind Funktionen und welche Funktionen stehen mir für Berechnungen, Automatisierungen und Formeln in Vaira zur Verfügung?

Bevor du startest: Dieser Artikel wendet sich an fortgeschrittene Anwender, die bereits die Grundprinzipien von Formeln, Berechnungen und Operatoren verstanden haben. Falls dir diese Grundlagen noch fehlen, solltest du dir zunächst die Artikel Wie funktionieren Formeln in Vaira? und Operatoren für Berechnungen und Automatisierungen im Vaira Office ansehen, um den Inhalten hier besser folgen zu können.

Was sind Funktionen?

Mit Funktionen kannst du tiefer in deine Daten einsteigen und mit diesen arbeiten. Eine Funktion setzt sich aus mehreren mathematischen und operationalen Befehlen für Vaira zusammen, die von unseren Entwicklern zusammengefasst wurden, damit du nur noch einen einzelnen Befehl ausführen musst. Durch Funktionen werden auch Arbeiten möglich, die du selbst manuell in Vaira gar nicht vornehmen könntest.

Funktionen erklärt am Beispiel einer Partyplanung ohne und mit Partyplaner

Ein alltagsnahes Beispiel für Funktionen: stell dir vor, du möchtest eine Party veranstalten. Um das zu machen, musst du unter anderem:

  • Eine Gästeliste erstellen
  • Einladungen schreiben
  • Einladungen verschicken
  • Getränke bestellen
  • Essen bestellen
  • ...

Das sind alles einzelne Tätigkeiten und ganz schön viel Arbeit für dich. Du kannst dir stattdessen aber auch einen Partyplaner holen, der die ganze Vorarbeit für dich übernimmt.

Unsere Entwickler haben dir quasi einen Partyplaner entwickelt. Alle Aufgaben oben haben sie genauer definiert, damit der Partyplaner genau weiß, was dein Ziel ist und haben die Anleitung dafür in die Funktion "partyVorbereiten" verpackt. Wenn du diese Funktion aktivierst, werden alle Schritte oben automatisch hintereinander durchgeführt. Du erhältst am Ende nur die Ergebnisse, brauchst dich also um die Durchführung der einzelnen Schritte nicht kümmern.

Nach diesem Prinzip kannst du in Vaira mit deinen Daten in Feldern, Schritten, Aufgaben und allgemein in Workflows arbeiten. Du kannst Berechnungen vornehmen, bestimmte Daten suchen oder automatisiert überprüfen, ob Daten korrekt sind oder außerhalb von vordefinierten Bereichen liegen.

Wie werden Funktionen angewendet?

Funktionen kannst du z.B. für Berechnungen und im Workflow-Builder in den Automatisierungen nutzen. Der Aufbau ist dabei immer gleich: eine Funktion beginnt mit einem Punkt und dann einem Namen der Funktion (z.B. ".exists" für eine Funktion, um das Vorkommen eines Werts zu überprüfen). Dieser Teil ruft also die Funktion selbst auf.

In Klammern dahinter "(...)" kommen dann alle Informationen, die für die Ausführung der Funktion wichtig sind. Das können Verweise auf Felder sein, Variablen oder Werte. Die Standard-Signatur, also das, wie man die Formel ohne konkrete Daten beschreibt, sieht bei der .exists-Formel zum Beispiel so aus:

.exists(x,p)

Vor dem Punkt steht dann noch der Verweis, auf was die Funktion angewendet werden soll. Das werden oft Felder in deinem Workflow sein, die du nach dem bekannten Muster aufbaust (step.stepID.task.taskID).

Gut zu wissen: Der Aufbau sagt dir nichts? Dann schau nochmal im Artikel  Wie funktionieren Formeln in Vaira? vorbei. Da haben wir den Verweis auf Felder genauer erklärt.

Eine Funktion wäre also zum Beispiel

tasks.aufmass.fields.materialerfassung.exists(x,p) 

Das x und das p werden jetzt noch ersetzt durch die spezifischen Werte für die Funktion, damit diese Berechnung durchgeführt werden kann. Für den Moment soll dieser allgemeine Aufbau von Funktionen aber reichen.

Alle weiteren Erklärungen gibt's weiter unten zu den einzelnen Funktionen konkret.

Nützliche Funktionen aus dem Arbeitsalltag – Übersicht

Es folgen einige Funktionen, die bei deiner Arbeit nützlich sein können. Vaira bietet noch deutlich mehr Funktionen – sie alle hier aufzuführen würde den Rahmen sprengen. Falls dir mal eine Funktion fehlt, kannst du uns einfach fragen, ob und wie sie sich umsetzen lässt in Vaira. Wir versuchen, diese Liste hier in Zukunft um weitere nützliche Funktionen zu erweitern.

Unterhalb der einzelnen Kategorie-Spickzettel erklären wir die einzelnen Funktionen auch noch einmal im Detail.

Werte übergeben, übernehmen und synchronisieren

Name Signatur Einsatz
Wertübergabe

Verweis1:Verweis2

Verweis 2 sendet, Verweis 1 empfängt.

Übergibt den Wert, der in im Feld von Verweis2 steht, automatisch an das Feld von Verweis1. Dadurch können Mehrfacheingaben umgangen werden, wenn verschiedene Felder in einem Prozess immer die gleichen Informationen enthalten.

Suchen, finden, prüfen

Name Signatur Einsatz
Exists .exists(x, p) Prüft darauf, ob ein bestimmter Datensatz existiert.
Find

.find(x, predicate, function, default)

Sucht einen konkreten Wert mit definierten Eigenschaften und gibt diesen zurück.
Contains .contains(s) Prüft Textfelder und Textbereiche, um herauszufinden, ob irgendwo das entsprechende Wort bzw. die entsprechende Zeichenkette existiert.
Contains (Optionsfeld) .concatDisplayNames().contains(s) Prüft, ob in einem Optionsfeld ein bestimmtes Wort bzw. eine bestimmte Zeichenkette ausgewählt wurde und gibt ein Wahr oder Falsch zurück.
StartsWith .startsWith(s) Prüft, ob der Wert innerhalb eines Textfeldes mit der Suchzeichenkette beginnt (z.B. mit "Apf", wenn im Feld "Apfel" steht) und gibt entweder ein wahr oder ein falsch zurück.
EndsWith .endsWith(s) Prüft, ob der Wert innerhalb eines Textfeldes mit der Suchzeichenkette endet (z.B. mit "fel", wenn im Feld "fel" steht) und gibt entweder ein wahr oder ein falsch zurück.
Users.Exists .users.exists(x, x == "users/ID") Überprüft, ob der User mit der angegebenen ID in einem Feld angegeben wurde und gibt entweder ein wahr oder ein falsch zurück.
Groups.Exists .groups.exists(x, x == "groups/ID") Überprüft, ob die Gruppe mit der angegebenen ID in einem Feld angegeben wurde und gibt entweder ein wahr oder ein falsch zurück.

Berechnen

Name Signatur Einsatz

Sum

.sum(x, p)

Nimmt eine Berechnung vor für ein oder mehr Felder mit beliebigem Berechnungs-Operator.

Daten verändern und zusammenführen

Name Signatur Einsatz
Feldwert zu Zeichenkette umwandeln string(...) Wandelt den Feldwert in eine Zeichenkette um, um z.B. die eine Zahl für Verkettungen mit Zeichenfolgen verfügbar zu machen.

Feldwert zu ganzer Zahl umwandeln

int(...)

Wandelt den Feldwert bei z.B. Kommazahlen in eine ganze Zahl (... -2, -1, 0, 1, 2, ...) um. Vor allem relevant, wenn längere Kommazahlen (bspw. 2,12384) in eine runde ganze Zahl umgewandelt werden sollen (dann nur noch 2).

Der Teil hinter dem Komma wird dabei abgeschnitten; die Zahl wird also nicht gerundet.

Feldwert zu rationaler Zahl umwandeln rational(...)

Diese Funktion benötigst du für normale Berechnungen im Alltag normalerweise nicht.

Wandelt den Feldwert für eine hochpräzise Berechnung von einer reellen Fließkommazahl in einen Bruch um.

Concat (Anzeigenamen) .concatDisplayNames() Verkettet mehrere Anzeigenamen und gibt sie durch Komma getrennt zurück.
Verketten von Feldwerten "..." + (...) + ... Verkettet mehrere beliebige Inhalte miteinander und führt sie in einem Textfeld zusammen; dabei können auch andere Funktionen genutzt und von Feldern unabhängige Zeichenfolgen eingefügt werden.

 

 

Nützliche Funktionen aus dem Arbeitsalltag – Detailerklärungen

Wertübergabe

Anwendungsfall

Du hast Felder in deinem Prozess, die grundsätzlich die gleichen Werte enthalten (wie z.B. ein Adressfeld) aber in unterschiedlichen Prozessschritten vorkommen. Damit nicht jedes Feld neu ausgefüllt werden muss, kannst du den Wert aus dem ersten Feld an alle anderen gleichartigen Felder übergeben. So bleiben die Inhalte der Felder synchron.

Allgemeiner Aufbau

Verweis1:Verweis2

Beispiel

tasks.bautagebuch.fields.Baudienstleister:tasks.aufmass.fields.Baudienstleister

  • Empfangendes Feld
    der erste Verweis vor dem : empfängt den Wert des zweiten Verweises; hier empfängt also das Feld in der Aufgabe "Bautagebuch" im Feld "Baudienstleister" den Wert (tasks.bautagebuch.fields.Baudienstleister),
  • Operator
    es folgt der Operator :,
  • Sendendes Feld
    und anschließend wird das sendende Feld definiert, das hier in der Aufgabe "Aufmass" das Feld "Baudienstleister" ist (tasks.aufmass.fields.Baudienstleister).
  • Ergebnis
    Wenn nun im sendenden Feld z.B. "Tiefbau GmbH" eingegeben wird, wird der Inhalt des empfangenden Feldes auch "Tiefbau GmbH".
  • Ergebnis-Beispiel
    Tiefbau GmbH

» zurück nach oben

 


Exists

Anwendungsfall

Du möchtest herausfinden, ob in deinem Datensatz ein bestimmter Wert vorkommt. Am Ende reicht dir als Ergebnis ein "ja" oder ein "nein".

Allgemeiner Aufbau

.exists(x,p)

Beispiel

tasks.aufmass.fields.materialerfassung.exists(Bauteil, Bauteil.fields.dimension == 32)

  • Anwendungsbereich
    wird angewendet auf die Aufgabe "Aufmass" im Feld "Materialerfassung" (tasks.aufmass.fields.materialerfassung),
  • Aufruf der Funktion
    wird standardmäßig aufgerufen (.exists),
  • Parameter x
    überprüft für jedes Bauteil (Bauteil) einzeln,
  • Parameter p
    ob das Feld "Dimension" des jeweiligen Bauteils (Bauteil.fields.dimension) genau 32 ist (== 32).
  • Ergebnis
    Die Funktion gibt ein bool'sches wahr zurück, falls mindestens ein Bauteil die Bedingung erfüllt oder falsch, wenn keins der Bauteile die Bedingung erfüllt.
  • Ergebnis-Beispiel
    wahr

» zurück nach oben

 


Find

Anwendungsfall

Du möchtest einen bestimmten Wert in deinem Datensatz finden und von diesem einen Wert zurückgeben. Du suchst dabei die erstbeste Antwort, die gefunden werden kann, auch, wenn mehrere Einträge im Datensatz deiner Anfrage entsprechen könnten.

Allgemeiner Aufbau

.find(x, predicate, function, default)

Beispiel

tasks.aufmass.fields.materialerfassung.find(Bauteil, Bauteil.fields.dimension == 32, Bauteil.fields.preis, 0)

  • Anwendungsbereich
    wird angewendet auf die Aufgabe "Aufmass" im Feld "Materialerfassung" (tasks.aufmass.fields.materialerfassung),
  • Aufruf der Funktion
    wird standardmäßig aufgerufen (.find),
  • Parameter x
    durchsucht jedes (Bauteil) einzeln,
  • Parameter predicate
    ob es ein Bauteil mit einem Feld "Dimension" gibt (Bauteil.fields.dimension), dessen Wert "32" ist  (== 32),
  • Parameter function
    und falls ja, soll für das erste gefundene Bauteil, das die Bedingung erfüllt, der Wert aus dem Feld "Preis" dieses Bauteils genommen werden (Bauteil.fields.preis),
  • Parameter default
    und falls nein, soll standardmäßig der Wert "0" zurückgegeben werden (0).
  • Ergebnis
    Die Funktion gibt bei einem "falls ja" den Wert für das erste gefundene Bauteil zurück und wird danach beendet – sie sucht also nicht weiter. Die Funktion gibt bei einem "falls nein" den definierten Standardwert "0" zurück.
  • Ergebnis-Beispiel
    falls Ja: 52,43
    falls Nein: 0

» zurück nach oben

 


Contains

Anwendungsfall

Du hast Textfelder oder Textbereiche und möchtest diese daraufhin überprüfen, ob ein bestimmtes Wort (z.B. "Muffe") oder eine bestimmte beliebige Zeichenfolge (z.B. "01baum12") oder auch eine bestimmte Zahl ("123,12") vorkommt und als Ergebnis ein einfaches wahr oder falsch als Antwort bekommen.

Allgemeiner Aufbau

.contains(s)

Beispiel

tasks.aufmass.fields.Dienstleister.contains("Tiefbau GmbH")

  • Anwendungsbereich
    wird angewendet auf die Aufgabe "Aufmass" im Feld "Dienstleister" (tasks.aufmass.fields.Dienstleister),
  • Aufruf der Funktion
    wird standardmäßig aufgerufen (.contains),
  • Parameter s
    hier kommt das Wort, die Zahl oder die beliebige Zeichenkette in Anführungszeichen oben ("") hin ("Tiefbau GmbH")
  • Ergebnis
    Die Funktion gibt ein "wahr" zurück, wenn der Suchbegriff im Textfeld oder Textbereich vorkommt und ein "falsch", wenn der Begriff nicht gefunden wurde.
  • Ergebnis-Beispiel
    wahr

» zurück nach oben

 


Contains (Optionsfeld)

Anwendungsfall

Du hast ein Optionsfeld mit mehreren Auswahlmöglichkeiten und möchtest diese daraufhin überprüfen, ob ein bestimmter Wert (z.B. "Muffe", "01baum12", "123,12") ausgewählt wurde und als Ergebnis ein einfaches wahr oder falsch als Antwort bekommen.

Allgemeiner Aufbau

Diese Funktion verbindet die Funktion concatDisplayNames() und die Funktion contains(s) miteinander und ruft sie in Kombination auf.

e.concatDisplayNames().contains(s)

Beispiel

tasks.stammdaten.fields.AnschlussArten.concatDisplay Names().contains("Hausanschluss")

  • Anwendungsbereich
    wird angewendet auf die Aufgabe "Stammdaten" im Feld "AnschlussArten" tasks.stammdaten.fields.AnschlussArten
  • Aufruf der Funktion
    ruft zunächst die Funktion Concat auf (.concatDisplay Names()), um alle ausgewählten Optionen in den Zwischenspeicher zu laden, um dann anschließend die Funktion Contains (.contains) aufzurufen, die das Vorkommen überprüft,
  • Parameter s
    hier kommt das Wort, die Zahl oder die beliebige Zeichenkette in Anführungszeichen oben ("") hin ("Hausanschluss")
  • Ergebnis
    Die Funktion gibt ein "wahr" zurück, wenn der Suchbegriff "Hausanschluss" in den Optionen ausgewählt wurde und ein "falsch", wenn der Begriff nicht gefunden wurde.
  • Ergebnis-Beispiel
    wahr

» zurück nach oben

 


StartsWith

Anwendungsfall

Du hast in Textfelder, die immer mit einer bestimmten Zeichenkette anfangen müssen und möchtest kontrollieren, ob dies bei deinen Feldern der Fall ist. Als Ergebnis reicht dir ein wahr oder falsch.

Allgemeiner Aufbau

.startsWith(s)

Beispiel

tasks.aufmass.fields.Dienstleister.startsWith("Tiefbau")

  • Anwendungsbereich
    wird angewendet auf die Aufgabe "Aufmass" im Feld "Dienstleister" tasks.aufmass.fields.Dienstleister
  • Aufruf der Funktion
    wird standardmäßig aufgerufen (.startsWith),
  • Parameter s
    hier kommt das Wort, die Zahl oder die beliebige Zeichenkette in Anführungszeichen oben ("") hin ("Tiefbau")
  • Ergebnis
    Wenn die erste Zeichenfolge im Textfeld dem Suchbegriff "Tiefbau" entspricht, erhältst du den Wert wahr; falls nicht erhältst du den Wert falsch.
  • Ergebnis-Beispiel
    wahr

» zurück nach oben

 


EndsWith

Anwendungsfall

Du hast in Textfelder, die immer mit einer bestimmten Zeichenkette enden müssen und möchtest kontrollieren, ob dies bei deinen Feldern der Fall ist. Als Ergebnis reicht dir ein wahr oder falsch.

Allgemeiner Aufbau

.endsWith(s)

Beispiel

tasks.aufmass.fields.Dienstleister.endsWith("Tiefbau")

  • Anwendungsbereich
    wird angewendet auf die Aufgabe "Aufmass" im Feld "Dienstleister" tasks.aufmass.fields.Dienstleister
  • Aufruf der Funktion
    wird standardmäßig aufgerufen (.endsWith),
  • Parameter s
    hier kommt das Wort, die Zahl oder die beliebige Zeichenkette in Anführungszeichen oben ("") hin ("Tiefbau")
  • Ergebnis
    Wenn die letzte Zeichenfolge im Textfeld dem Suchbegriff "Tiefbau" entspricht, erhältst du den Wert wahr; falls nicht erhältst du den Wert falsch.
  • Ergebnis-Beispiel
    wahr

» zurück nach oben

 


Users.Exists

Anwendungsfall

Du möchtest ein Feld daraufhin überprüfen, ob ein Nutzer mit einer bestimmten ID zu diesem Feld zugewiesen ist. Als Ergebnis reicht dir ein wahr oder falsch.

Allgemeiner Aufbau

.users.exists(x, x == "users/ID")

Beispiel

tasks.aufmass.fields.Prüfer.users.exists(Benutzer, Benutzer == "users/2a31sda231ds5as1d32asd1")

  • Anwendungsbereich
    wird angewendet auf die Aufgabe "Aufmass" im Feld "Prüfer" tasks.aufmass.fields.Prüfer
  • Aufruf der Funktion
    verkettet die Methode .users mit der Funktion .exists und ruft sie zusammen auf,
  • Parameter x und x == "users/ID"
    du kannst beide x beibehalten oder beide x durch eine klarere Variable ersetzen (z.B. wie im Beispiel Benutzer).  Das == "users/ID" ist dann der Vergleichsteil. == "users/ bleibt immer so stehen, den Teil ID ersetze durch die ID des spezifischen Users (im Beispiel 2a31sda231ds5as1d32asd1). Achte darauf, den Teil nach den zwei == in Anführungsstriche oben zu setzen um am Ende der ID die Klammer wieder zu schließen.
  • Ergebnis
    Wenn die ID des Users im entsprechenden Feld vorkommt, erhältst du den Wert wahr; falls nicht erhältst du den Wert falsch.
  • Ergebnis-Beispiel
    wahr

» zurück nach oben

 


Groups.Exists

Anwendungsfall

Du möchtest ein Feld daraufhin überprüfen, ob eine Gruppe mit einer bestimmten ID zu diesem Feld zugewiesen ist. Als Ergebnis reicht dir ein wahr oder falsch.

Allgemeiner Aufbau

.groups.exists(x, x == "groups/ID")

Beispiel

tasks.aufmass.fields.Baudienstleister.groups.exists(Gruppe, Gruppe == "groups/2a31sda231ds5as1d32asd1")

  • Anwendungsbereich
    wird angewendet auf die Aufgabe "Aufmass" im Feld "Prüfer" tasks.aufmass.fields.Baudienstleister
  • Aufruf der Funktion
    verkettet die Methode .groups mit der Funktion .exists und ruft sie zusammen auf,
  • Parameter x und x == "groups/ID"
    du kannst beide x beibehalten oder beide x durch eine klarere Variable ersetzen (z.B. wie im Beispiel Gruppe).  Das == "groups/ID" ist dann der Vergleichsteil. == "groups/ bleibt immer so stehen, den Teil ID ersetze durch die ID der spezifischen Gruppe (im Beispiel 2a31sda231ds5as1d32asd1). Achte darauf, den Teil nach den zwei == in Anführungsstriche oben zu setzen um am Ende der ID die Klammer wieder zu schließen.
  • Ergebnis
    Wenn die ID der Gruppe im entsprechenden Feld vorkommt, erhältst du den Wert wahr; falls nicht erhältst du den Wert falsch.
  • Ergebnis-Beispiel
    wahr

» zurück nach oben

 


Sum

Anwendungsfall

Du möchtest eine Berechnung in einem Listenfeld vornehmen und am Ende das Ergebnis zurückgegeben bekommen. Berechnungen können dabei innerhalb einer Liste alle gleichartigen Felder summieren (Beispiel 1), Werte auch mit anderen Werten addieren, multiplizieren oder mehr (Beispiel 2) oder auch externe Felder mit in die Berechnung einbeziehen (Beispiel 3).

Allgemeiner Aufbau

.sum(x,p)

Beispiel 1

tasks.aufmass.fields.materialerfassung.sum(Bauteil, Bauteil.fields.preis)

  • Anwendungsbereich
    wird angewendet auf die Aufgabe "Aufmass" im Feld "Materialerfassung" (tasks.aufmass.fields.materialerfassung),
  • Aufruf der Funktion
    wird standardmäßig aufgerufen (.sum),
  • Parameter x
    durchsucht jedes (Bauteil) einzeln,
  • Parameter p
    nimmt die Werte jedes Bauteils aus dem Feld "Preis" und addiert diese (Bauteil.fields.preis).
  • Ergebnis
    Das Ergebnis ist die Summe aller Preis-Felder in den Bauteilen dieser Liste.
  • Ergebnis-Beispiel
    1.827,23

Beispiel 2

tasks.aufmass.fields.materialerfassung.sum(Bauteil, Bauteil.fields.preis * b.fields.Anzahl)

  • Anwendungsbereich
    wird angewendet auf die Aufgabe "Aufmass" im Feld "Materialerfassung" (tasks.aufmass.fields.materialerfassung),
  • Aufruf der Funktion
    wird standardmäßig aufgerufen (.sum),
  • Parameter x
    durchsucht jedes (Bauteil) einzeln,
  • Parameter p
    nimmt die Werte jedes Bauteils aus dem Feld "Preis" (Bauteil.fields.preis), multipliziert sie mit dem Wert im Feld "Anzahl" (* Bauteil.fields.Anzahl) und addiert diese anschließend.
  • Ergebnis
    Das Ergebnis ist die Summe aller Preis-Felder multipliziert mit ihrer jeweiligen Anzahl in den Bauteilen dieser Liste.
  • Ergebnis-Beispiel
    1.827,23

Beispiel 3

tasks.aufmass.fields.materialerfassung.sum(Bauteil, Bauteil.fields.preis * tasks.AbrechnungDL1.fields.sonderpreiskennzeichen)

  • Anwendungsbereich
    wird angewendet auf die Aufgabe "Aufmass" im Feld "Materialerfassung" (tasks.aufmass.fields.materialerfassung),
  • Aufruf der Funktion
    wird standardmäßig aufgerufen (.sum),
  • Parameter x
    durchsucht jedes (Bauteil) einzeln,
  • Parameter p
    nimmt die Werte jedes Bauteils aus dem Feld "Preis" (Bauteil.fields.preis), und multipliziert den Preis mit dem Wert im Feld "Sonderpreiskennzeichen" in einer anderen Task  (* tasks.AbrechnungDL1.fields.sonderpreiskennzeichen), bevor die Werte addiert werden.
  • Ergebnis
    Das Ergebnis ist die Summe aller Preis-Felder der Bauteile dieser Liste, jeweils multipliziert mit dem Sonderpreiskennzeichen eines Felds in einer externen Task.
  • Ergebnis-Beispiel
    1.827,23

» zurück nach oben

 


Feldwert zu Zeichenkette umwandeln

Anwendungsfall

Wandelt den Feldwert in eine Zeichenkette um, um z.B. die eine Zahl oder ein Datum für Verkettungen mit Zeichenfolgen verfügbar zu machen.

Allgemeiner Aufbau

string(...)

Beispiel

string(tasks.Stammdaten.fields.Datum)

  • Aufruf des Befehls string
    Ruft den Befehl zur Umwandlung auf,
  • Aufruf der Funktion (...)
    wendet ihn auf den angegebenen Feldwert an ((tasks.Stammdaten.fields.Datum)).
  • Ergebnis
    Du erhältst den Feldinhalt als ganze Zahl, also als eine positive oder negative Zahl ohne Komma.  entweder negativ oder positiv. 
  • Ergebnis-Beispiel
    2 (als Zahl) wird "2" (als String); 03.04.2024 (als Zahl) wird "03.04.2024" (als String).

» zurück nach oben

 


Feldwert zu ganzer Zahl umwandeln

Anwendungsfall

Wandelt den Feldwert in eine ganze Zahl (... -2, -1, 0, 1, 2, ...) um. Vor allem relevant, wenn längere Kommazahlen (bspw. 2,72384) in eine runde Zahl umgewandelt werden sollen (dann nur noch 2).

Allgemeiner Aufbau

int(...)

Beispiel

int(tasks.Stammdaten.fields.Arbeitsstunden)

  • Aufruf des Befehls int
    Ruft den Befehl zur Umwandlung auf,
  • Aufruf der Funktion (...)
    wendet ihn auf den angegebenen Feldwert an ((tasks.Stammdaten.fields.Arbeitsstunden)).
  • Ergebnis
    Der Wert im Feld "Arbeitsstunden" wird zu einer Integer-Zahl, also einer ganzen positiven oder negativen Zahl, umgewandelt. Der Zahlenwert nach dem Komma wird dabei abgeschnitten.
  • Ergebnis-Beispiel
    Aus 2,72384 (rationale Zahl vom Datentyp rational) wird 2 (ganze Zahl vom Datentyp integer).

» zurück nach oben

 


Feldwert zu rationaler Zahl umwandeln

Anwendungsfall

Wandelt den Feldwert (negative und positive Zahlen mit Komma) in einen Bruch um, um genauere Berechnungen zu ermöglichen. 

Diese Funktion brauchst du im Normfalfall nicht, da Zahlenberechnungen in Vaira automatisch vorgenommen werden. 

Wichtig wird diese Funktion nur bei extrem präzisen Berechnungen. Teilst du zum Beispiel rechnerisch eine 1 durch 3, erhältst du rational eine 0,33333..., aber die Umkehrrechnung 3*0,3333... ergibt nicht 1, sondern einen Wert knapp darunter. Für eine genauere Berechnung kann man die 1/3 als Bruch darstellen, womit 1/3 * 3 genau 1 ergibt. Da die Abweichung aber unglaublich gering ist, arbeitet Vaira standardmäßig mit rationalen Zahlen. Über diese Funktion kannst du es aber selbst präzisieren.

Allgemeiner Aufbau

rational(...)

Beispiel

rational(1/3)*rational(1/3)

  • Aufruf des Befehls rational
    Ruft den Befehl zur Umwandlung auf,
  • Aufruf der Funktion (...)
    wendet ihn auf die Berechnung oder Zahl innerhalb der Klammern an ((1/3)).
  • Aufruf des Befehls rational
    ruft erneut den Befehl zur Umwandlung auf,
  • Aufruf der Funktion (...)
    wendet ihn auch hier auf die Berechnung oder Zahl innerhalb der Klammern an ((1/3)).
  • Ergebnis
    Das Feld erhält das Ergebnis der Berechnung.
  • Ergebnis-Beispiel
    2/3 

» zurück nach oben

 


Concat (Anzeigenamen)

Anwendungsfall

Du möchtest aus einem Optionen-Feld alle ausgewählten Elemente per Komma getrennt ausgeben.

Allgemeiner Aufbau

.concatDisplayNames()

Beispiel

tasks.stammdaten.fields.AnschlussArten.concatDisplayNames() 

  • Anwendungsbereich
    wird angewendet auf die Aufgabe "Stammdaten" im Feld "Anschlussarten" (tasks.stammdaten.fields.AnschlussArten),
  • Aufruf der Funktion
    wird standardmäßig aufgerufen (.concatDisplayNames),
  • Parameter ()
    für diese Funktion gibt es keine gesonderten Parameter, du musst aber trotzdem die Klammer auf und Klammer zu setzen, damit Vaira die Funktion richtig erkennt.
  • Ergebnis
    Du erhältst alle Optionen durch Komma getrennt.
  • Ergebnis-Beispiel
    Birne, Apfel, Kiwi, Melone

» zurück nach oben

 


Verketten von Feldwerten

Anwendungsfall

Du möchtest die Inhalte unterschiedlicher Felder miteinander kombinieren, um z.B. automatisiert aus mehreren Informationen einen Auftragsnamen o.Ä. zu erzeugen.

Allgemeiner Aufbau

"..." + (...) + ...

Beispiel

In diesem Beispiel verketten wir drei Feldwerte, die durch ein "_" voneinander getrennt sind. Am Ende folgt ein "_" und ein festgelegtes Wort. Es können beliebig viele Werte miteinander verkettet werden. 

Der gesamte Befehl wird in einem extra dafür angelegten Feld (z.B. "Auftragsname") ausgeführt.

string(tasks.Stammdaten.fields.Startdatum) + "_" + tasks.Stammdaten.fields.Kundenname + "_" + "Testwort"

  • Aufruf des Befehls string
    Wandelt den Feldwert über die String-Funktion von einem anderen Datentyp (hier: Datum) in einen String-Datentyp um, der für die Verkettung notwendig ist,
  • Feldwert 1 (...)
    Das erste Feld, aus dem der Wert für die Verkettung übernommen werden soll ((tasks.Stammdaten.fields.Startdatum)),
  • Verkettungs-Operator +
    der +-Operator, um Vaira zu sagen, dass hier Strings verbunden werden sollen,
  • Statischer String "_"
    ein Teil für die Verkettung, der nicht aus einem Feld bezogen wird, sondern eine eigene Zeichenfolge ist, die immer in dieser Form dazugenommen werden soll; hier wird das Symbol _ hinzugefügt, um einzelne Teile der Verkettung abzutrennen,
  • Verkettungs-Operator +
    Verkettungs-Operator wie oben schon,
  • Feldwert 2 (...)
    das zweite Feld, aus dem der Wert für die Verkettung übernommen werden soll; hier aus dem Schritt "Stammdaten" das Feld "Startdatum" ((tasks.Stammdaten.fields.Startdatum)),
  • Verkettungs-Operator +
    Verkettungs-Operator wie oben schon,
  • Statischer String "_"
    wieder das _ wie oben zum Abtrennen,
  • Verkettungs-Operator +
    Verkettungs-Operator wie oben schon,
  • Statischer String statt Feldwert 3  (...)
    statt hier einen Wert aus einem Feld zu nehmen, setzten wir ans Ende einen festen String, der immer angehängt werden soll in Anführungszeichen oben; hier ist es das Wort "Testwort"
  • Ergebnis
    Aus dem Beispiel ersteht im Feld, in dem dieser Befehl steht, nun ein zusammenhängender String aus allen verketteten Bestandteilen.
  • Ergebnis-Beispiel
    2024-04-24_Mustermann_Testwort

» zurück nach oben