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

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