Docs  /  Preise & Regeln  /  Formeln & Berechnungen

Formeln & Berechnungen

Zuletzt aktualisiert: 20. Oktober 2026

Mit einer Formel rechnet der Konfigurator selbst: aus Breite und Höhe eine Fläche, aus Menge und Stückpreis einen Betrag, aus einer Auswahl einen Zuschlag. Eine Formel ist ein eigenes Merkmal, das die Werte anderer Merkmale liest und bei jeder Auswahl neu rechnet. Ihr Ergebnis kannst du anzeigen, in weiteren Formeln verwenden oder in den Preis übernehmen.

So funktioniert es

  1. Lege ein Merkmal an und wähle unter Datenkategorie die Berechnung und als Datentyp die Formel.
  2. Vergib unter Grundeinstellungen einen sprechenden Internen Namen (ID), z. B. flaeche. Über diesen Namen verwenden andere Formeln das Ergebnis.
  3. Trage unter Formel-Einstellungen im Feld Berechnung (Formel) die Formel ein, z. B. $breite * $hoehe / 10000.
  4. Soll das Ergebnis in den Preis einfließen, lege einen Staffelpreis an – siehe Ergebnis in den Preis übernehmen.
  5. Setze die Sichtbarkeit auf Nein (versteckt), wenn deine Kunden das Ergebnis nicht sehen sollen.
  6. Prüfe das Ergebnis in der Vorschau mit einigen Testwerten.

Formel-Merkmal Statikzuschlag: Datenkategorie Berechnung, Datentyp Formel und in den Formel-Einstellungen die Berechnung eines Zuschlags ab 3500 mm Tiefe; links die verketteten Preisformeln

Eine Formel ist ein JavaScript-Ausdruck. Du brauchst dafür keine Programmierkenntnisse – Grundrechenarten, Klammern und ein paar Funktionen reichen für fast alles.

Merkmale in der Formel verwenden

Du sprichst ein Merkmal über seinen Internen Namen (ID) mit einem vorangestellten $ an. Groß- und Kleinschreibung zählt.

Schreibweise Ergebnis
$breite Der aktuelle Wert des Merkmals (siehe Tabelle unten)
$farbe.price Der Aufpreis des gewählten Werts. Bei Mehrfachauswahl die Summe der gewählten Aufpreise.
$farbe.originalPrice Der Aufpreis ohne Multiplikation mit einer Menge. In V3 identisch mit .price.
$$breite Wie $breite. In der Legacy-Engine rechnet die Formel aber nicht neu, wenn sich nur dieses Merkmal ändert – nur wenn sich eines der anderen ändert. In V3 gibt es diesen Unterschied nicht.

Welcher Wert kommt heraus?

Merkmal $name liefert
Auswahl, Radio Buttons, Liste mit Bildern Das Feld Wert des gewählten Eintrags – nicht die Bezeichnung. Ist der Wert eine Zahl (120), rechnet die Formel damit. Sonst ist es ein Text ('holz').
Mehrfachauswahl, Checkbox Legacy: eine Liste der gewählten Werte, z. B. ['led','dimmer']. V3: leer. Für Aufpreise nimm $name.price.
Kleines / Großes Eingabefeld Die Eingabe. Zahlen werden zu Zahlen, auch mit Dezimalkomma (12,5 → 12.5). Alles andere bleibt Text.
Formel, Preisliste, Einfache Kombination Ihr Ergebnis. So kannst du Formeln verketten.
Nichts gewählt, nichts eingegeben, durch eine Regel ausgeblendet Leer ('') – siehe Leere Felder.

Rechnen, vergleichen, entscheiden

Zeichen Bedeutung Beispiel
+ - * / Grundrechenarten $breite * $hoehe
% Rest der Division $menge % 10
( ) Klammern ($breite + 10) * 2
== != < <= > >= Vergleich $breite > 200
&& ! und, nicht $breite > 200 && $hoehe > 150
bedingung ? a : b Wenn – dann – sonst $breite > 200 ? 25 : 0

Oder schreibst du mit zwei senkrechten Strichen: $breite > 200 || $hoehe > 150 trifft zu, wenn mindestens eine der beiden Bedingungen erfüllt ist.

Achtung bei ^: Das ist in JavaScript kein Hochzeichen, sondern ein bitweises XOR. 2 ^ 3 ergibt 1, nicht 8. Für Potenzen nimm Math.pow(2, 3).

Wenn – dann schreibst du immer mit ? :. Mehrere Stufen kannst du verschachteln:

$menge >= 100 ? 7.90 : ($menge >= 50 ? 8.90 : 10.90)

Gib immer eine Zahl zurück. Ein reiner Vergleich wie $breite > 200 ergibt in der Legacy-Engine 1 oder 0, in V3 aber kein Ergebnis. Schreib deshalb $breite > 200 ? 1 : 0.

Funktionen

Die Funktionen mit Math. funktionieren in beiden Engines. Die Kurzformen ohne Math. gibt es nur in V3.

Funktion Bedeutung Kurzform (nur V3)
Math.round(x) Kaufmännisch auf eine ganze Zahl runden round(x), mit Nachkommastellen: round(x, 2)
Math.ceil(x) Aufrunden ceil(x)
Math.floor(x) Abrunden floor(x)
Math.abs(x) Betrag ohne Vorzeichen abs(x)
Math.min(a, b, …) Kleinster Wert min(a, b, …)
Math.max(a, b, …) Größter Wert max(a, b, …)
Math.sqrt(x) Quadratwurzel sqrt(x)
Math.pow(x, y) x hoch y pow(x, y)
Math.log(x) Natürlicher Logarithmus log(x)
Math.exp(x) e hoch x exp(x)
Math.PI Kreiszahl π PI

Auf Nachkommastellen runden in beiden Engines: Math.round(x * 100) / 100 (zwei Stellen) oder Math.ceil(x * 2) / 2 (auf 0,5 aufrunden).

Die Großschreibweisen aus Tabellenkalkulationen (ROUND, IF, MAX) gibt es nicht.

Eine Formel, ein Ausdruck

In V3 besteht eine Formel aus genau einem Ausdruck. Zwischenvariablen (var), if-Blöcke, Schleifen und mehrere Anweisungen mit ; liefern dort kein Ergebnis.

Die Legacy-Engine führt auch mehrzeilige Formeln aus. Damit eine Komponente in beiden Engines gleich rechnet, schreib trotzdem einen Ausdruck und teile lange Rechnungen auf mehrere Formel-Merkmale auf – etwa flaeche und darauf aufbauend preis_flaeche. Das ist auch leichter zu prüfen. Mehr dazu: Frontend-Engine: Legacy oder V3.

Leere Felder

Solange ein Merkmal leer ist, setzt die Formel einen leeren Text ein. Beim Multiplizieren und Dividieren zählt das als 0 ('' * 2 ergibt 0). Beim Addieren hängt JavaScript aber Texte aneinander: Ist $a gleich 5 und $b leer, ergibt $a + $b den Text „5“ statt der Zahl 5. Die V3-Engine übernimmt einen Text nicht in den Preis. Sicher bist du mit:

($a || 0) + ($b || 0)

|| 0 setzt für ein leeres Feld 0 ein. Für Auswahl-Merkmale mit Text-Werten brauchst du das nicht – vergleiche dort direkt: $farbe == 'rot' ? 20 : 0.

Ergibt eine Formel einen Fehler (Tippfehler, unbekannte Funktion), ist ihr Ergebnis leer bzw. 0. Der Konfigurator läuft weiter.

Ergebnis in den Preis übernehmen

Eine Formel liefert zunächst nur eine Zahl. In den Preis fließt sie über den Staffelpreis der Formel und den Preis-Operator – genau wie bei der Preismatrix:

Ziel Staffelpreis Preis-Operator
Die Formel ist der Preis (z. B. 49.90) eine Stufe: Wert 0, Preis 1 Wert × Preis
Die Formel ist eine Menge, z. B. m², die mit einem Preis multipliziert wird eine Stufe: Wert 0, Preis = Preis pro Einheit, z. B. 45 Wert × Preis
Preis pro Einheit hängt von der Menge ab mehrere Stufen, z. B. 0 → 45, 5 → 42, 10 → 38 Wert × Preis
Fester Zuschlag ab einer Grenze eine Stufe mit der Grenze und dem Zuschlag Preis

Ohne Staffelpreis trägt die Formel nichts zum Preis bei. Wie Staffelpreise im Detail rechnen, steht unter Preisberechnung einrichten.

Dezimalstellen

Das Feld Dezimalstellen in den Formel-Einstellungen bestimmt, mit wie vielen Nachkommastellen das Ergebnis angezeigt wird. In der Legacy-Engine wird das Ergebnis dabei auch gerundet weiterverwendet, in V3 nur die Anzeige. Soll die Rundung den Preis beeinflussen, runde in der Formel selbst, z. B. mit Math.round(x * 100) / 100.

Formeln an anderen Stellen

  • Preismatrix: Eine Formel kann als Dimension X oder Y dienen – etwa eine berechnete Fläche als Zeile der Tabelle. Siehe Preismatrizen aus Excel/CSV.
  • Einfache Kombination: Wenn du nur zwei oder mehr Merkmale addieren, multiplizieren oder als Text verbinden willst, reicht der Datentyp Einfache Kombination – ganz ohne Formel.

Praxisbeispiele

Alle Beispiele funktionieren in beiden Engines. Die Merkmalsnamen ersetzt du durch deine eigenen.

Fläche in m² aus Zentimetern

$breite * $hoehe / 10000

Fläche mit Mindestfläche 0,5 m²

Math.max($breite * $hoehe / 10000, 0.5)

Fläche auf volle 0,5 m² aufrunden

Math.ceil($breite * $hoehe / 10000 * 2) / 2

Zuschlag ab einer Breite von 200 cm

$breite > 200 ? 35 : 0

Stückpreis mit Mengenrabatt × Menge

$menge * ($menge >= 100 ? 7.90 : ($menge >= 50 ? 8.90 : 10.90))

Zuschlag je nach Auswahl – das Merkmal material hat die Werte holz, alu, edelstahl:

$material == 'edelstahl' ? 1.35 : ($material == 'holz' ? 1.2 : 1)

Diesen Faktor kannst du in einer zweiten Formel verwenden: $flaeche * 45 * $faktor_material.

Aufpreise mehrerer Merkmale addieren

$farbe.price + $antrieb.price

Umfang eines runden Tischs aus dem Durchmesser

Math.round(Math.PI * $durchmesser)

Mit dem KI-Agenten

Der KI-Agent schreibt Formeln für dich, wenn du beschreibst, was gerechnet werden soll:

„Der Preis soll Breite mal Höhe in m² mal 45 Euro sein, aber mindestens für 0,5 m².“

Er legt das Formel-Merkmal an und richtet den Staffelpreis ein. Prüfe das Ergebnis in der Vorschau mit ein paar Testmaßen, bevor du veröffentlichst.

Fehlersuche

  1. Die Formel ergibt immer 0 oder nichts – stimmt der Interne Name (ID) samt Groß- und Kleinschreibung? Ist das Merkmal ausgefüllt?
  2. Die Formel rechnet, der Preis bleibt gleich – der Staffelpreis fehlt. Ohne Stufe (Wert 0, Preis 1) und Preis-Operator Wert × Preis zählt das Ergebnis nicht zum Preis.
  3. Summe fehlt im Preis, solange ein Feld leer ist – das leere Feld wurde als Text addiert. Schreib ($a || 0) + ($b || 0).
  4. Vergleich mit einer Auswahl greift nie – die Formel sieht den Wert des Eintrags, nicht seine Bezeichnung. $farbe == 'Rot' greift nicht, wenn der Wert rot ist.
  5. In V3 kein Ergebnis, in Legacy schon – die Formel enthält var, if oder mehrere Anweisungen, eine Kurzform wie round() fehlt in Legacy, oder sie gibt einen reinen Vergleich zurück. Schreib einen Ausdruck mit ? : und Math.-Funktionen.
  6. 2 ^ 3 ergibt 1 – ^ ist kein Hochzeichen. Nimm Math.pow(2, 3).
  7. Preis weicht um Cent-Beträge ab – runde in der Formel selbst statt über Dezimalstellen.

Nächste Schritte


← Alle Artikel 14 Tage kostenlos testen