Zum Inhalt

Berechnete Felder

Berechnete Felder sind Attribute, deren Wert nicht eingegeben, sondern automatisch aus anderen Feldern abgeleitet wird. Die Berechnung erfolgt serverseitig beim Speichern eines Datensatzes – das Ergebnis ist konsistent, nachvollziehbar und unabhängig davon, wo der Datensatz erzeugt wird (Formular, Prozess, Import).

So bleiben abgeleitete Werte wie Bruttobeträge, Vollnamen oder Fälligkeitsdaten immer synchron zu den Quelldaten – ohne dass eine separate Service-Aufgabe modelliert werden muss.


Wann ist ein berechnetes Feld sinnvoll?

Ein berechnetes Feld ist die richtige Wahl, wenn ein Wert eindeutig aus anderen Feldern desselben Datensatzes ableitbar ist und immer aktuell sein soll.

Typische Beispiele:

  • Bruttopreis aus Nettopreis und Umsatzsteuersatz.
  • Vollname aus Vor- und Nachname.
  • Fälligkeitsdatum aus Rechnungsdatum plus Zahlungsziel.
  • Status-Kennzeichen aus mehreren Bedingungen (z. B. „überfällig", wenn Fälligkeit überschritten und Status nicht „bezahlt").
  • Gesamtmenge aus Einzelposten.

Berechnetes Feld anlegen

  1. Im Daten-Designer eine Datenstruktur öffnen und auf „+ Attribut hinzufügen" klicken.
  2. Name, Typ und Eigenschaften wie bei einem normalen Attribut wählen.
  3. Den Bereich „Berechnung" öffnen und aktivieren.
  4. Eine Sprache wählen (JSONata oder JavaScript) und den Ausdruck eingeben.
  5. Speichern.

Berechnete Felder sind im Formular automatisch schreibgeschützt und werden visuell hervorgehoben (dezenter Farbverlauf, gestrichelter Rahmen, Hinweis „Wird automatisch berechnet").

Welche Typen werden unterstützt?

Berechnete Felder sind für Text, Zahl, Ganzzahl, Wahrheitswert, Datum und Zeitstempel verfügbar. Listen (Array-Felder) werden derzeit nicht als berechnet unterstützt.


Sprachen für die Berechnung

JSONata

JSONata ist eine kompakte Abfragesprache für JSON-Strukturen. Sie eignet sich besonders für einfache Verknüpfungen, Formatierungen und Aggregationen.

$.netto * (1 + $.ustSatz / 100)
$.vorname & " " & $.nachname

JavaScript

Für komplexere Logik kann JavaScript verwendet werden. Der Ausdruck erhält das aktuelle Objekt als Variable obj.

obj.netto * (1 + obj.ustSatz / 100)
obj.status === 'offen' && new Date(obj.faelligkeit) < new Date() ? 'überfällig' : obj.status

Wann welche Sprache?

JSONata ist kompakter und für reine Datentransformationen oft die bessere Wahl. JavaScript empfiehlt sich für Bedingungen, Datumsarithmetik oder mehrstufige Logik.


Reihenfolge mehrerer berechneter Felder

Wenn mehrere berechnete Felder existieren, werden sie in der Reihenfolge der Attribute ausgewertet. Ein späteres berechnetes Feld kann auf das Ergebnis eines früheren zugreifen.

Beispiel: Eine Rechnung enthält drei berechnete Felder:

  1. nettoSumme – Summe aller Positionen.
  2. ustBetragnettoSumme mal Steuersatz.
  3. bruttoSummenettoSumme plus ustBetrag.

Da Felder nacheinander berechnet werden, kann bruttoSumme direkt auf nettoSumme und ustBetrag zugreifen.

Die Reihenfolge lässt sich im Daten-Designer per Drag-and-drop anpassen.


Beispiel: Bruttopreis aus Netto + USt

Attribut Typ Berechnung
netto Zahl
ustSatz Zahl
brutto Zahl $.netto * (1 + $.ustSatz / 100) (JSONata)

Beim Speichern eines Datensatzes mit netto = 100 und ustSatz = 19 wird brutto automatisch auf 119 gesetzt – auch wenn der Datensatz über einen Prozess oder Import erzeugt wird.


Beispiel: Fälligkeitsdatum aus Rechnungsdatum

new Date(new Date(obj.rechnungsdatum).getTime() + obj.zahlungsziel * 86400000).toISOString().slice(0, 10)

Setzt das Fälligkeitsdatum auf das Rechnungsdatum plus die in zahlungsziel angegebene Anzahl an Tagen.


Hinweise

  • Berechnete Felder werden bei jedem Speichern neu ausgewertet. Auch nachträgliche Korrekturen an Quellfeldern wirken sich automatisch aus.
  • Ergebnisse werden dauerhaft im Datensatz gespeichert und stehen für Dashboards, Reports, Tabellen und Exporte zur Verfügung – wie jedes andere Attribut.
  • Greift ein berechnetes Feld auf ein anderes berechnetes Feld zu, muss dieses vorher in der Attributliste stehen.
  • Fehlerhafte Ausdrücke (z. B. ungültige Syntax) werden geloggt – das Feld bleibt in diesem Fall leer.
  • Ein bestehender Wert kann jederzeit durch Deaktivieren der Berechnung wieder zu einem regulären Eingabefeld werden.

Abgrenzung zu Expressions in Formularen

Expressions im Datendesigner steuern das Verhalten eines Feldes im Formular (sichtbar, deaktiviert, Pflichtfeld). Berechnete Felder dagegen erzeugen einen dauerhaften Wert im Datensatz selbst.

Aspekt Expressions Berechnete Felder
Wirkungszeitpunkt Bei Anzeige des Formulars Beim Speichern des Datensatzes
Wirkungsort Formular (UI) Datensatz (gespeicherter Wert)
Ergebnis Sichtbarkeit, Pflichtstatus etc. Konkreter Feldwert
Persistiert? Nein Ja