Zum Hauptinhalt springen
Die folgenden JavaScript-Beispiele veranschaulichen gängige Muster für erweiterte Skriptregeln — das Prüfen, ob ein Feld vorhanden ist, das Vergleichen numerischer Werte, das Anwenden bedingter Validierungen und das Validieren von Tabellendaten. Kopieren Sie sie und passen Sie sie an Ihre eigenen Feldnamen und Geschäftsregeln an.

Prüfen, ob ein Feld vorhanden ist

Prüfen Sie zum Beispiel, ob das Feld MyField gefunden wurde und ausgefüllt ist:

Gleitkommazahlen vergleichen

Der direkte Vergleich von Gleitkommazahlen kann zu unvorhersehbaren Ergebnissen führen. Verwenden Sie Methoden des integrierten Math-Objekts, um Zahlen – insbesondere Geldbeträge – zuverlässig zu vergleichen.

Je nach anderem Feld einen nicht leeren Wert verlangen

Ein optionales Feld kann erforderlich werden, wenn der Wert eines anderen Felds dies nötig macht. Wenn MaritalStatus den Wert Married hat, sollten die Felder für den Vor- und Nachnamen des Ehepartners ausgefüllt sein. Diese Skriptregel stellt sicher, dass sowohl SpouseFirstName als auch SpouseLastName ausgefüllt sind, wenn MaritalStatus den Wert Married hat:

Prüfen, ob ein Feld auf dem Dokument vorhanden ist

Regeln können auch Feldwerte befüllen, auch wenn der Wert nicht auf dem Dokument aufgedruckt ist. Wenn beispielsweise mehrere Steuern anfallen, kann die Gesamtsteuer automatisch berechnet werden. In einigen Ländern ist jedoch vorgeschrieben, dass der Gesamtsteuerbetrag auf dem Dokument ausgewiesen ist. Diese Skriptregel prüft, dass bei Belegen aus Deutschland die Gesamtsteuer im Bild vorhanden ist. Für andere Länder ist keine zusätzliche Prüfung erforderlich, da das Flag Erforderliches Feld für das Feld „Gesamtsteuer“ aktiviert ist:

Daten in besonderen Fällen validieren

Die Überprüfung, dass die Gesamtsteuer der Summe aller Steuern entspricht, kann mit einer vordefinierten Regel (Check Sum) erfolgen. Wenn jedoch in bestimmten Ländern eine der Steuern einen negativen Wert haben kann, lässt sich nur mit einer Skriptregel beiden Fällen gerecht werden — je nach Herkunftsland werden entweder alle Steuern addiert oder eine Rückerstattungssteuer addiert und subtrahiert. Dieses Skript prüft, dass die Summe zweier Steuern der Gesamtsteuer entspricht, außer wenn der Beleg aus Spanien stammt. In diesem Fall kann entweder die Summe oder die Differenz der beiden der Gesamtsteuer entsprechen:

Eine Spaltensumme mit einem externen Feld vergleichen

Skripte können nicht nur auf reguläre Felder zugreifen, sondern auch auf Tabellenwerte. Um Regelprüfungen zu beschleunigen, empfehlen wir, Tabellen als Variablen zu speichern und anschließend diese Variablen statt der ursprünglichen Tabellen zu verwenden. Wenn eine Variable eine gesamte Tabelle enthält, können Sie die Eigenschaft Instances nutzen, um auf die Zeilen der Tabelle zuzugreifen, und anschließend GetChild verwenden, um eine bestimmte Zelle in einer Zeile zu ermitteln. Das folgende Beispiel summiert alle Werte in der Spalte Total Price und vergleicht das Ergebnis mit dem Feld Total:

Vergleichen Sie Spaltenzellen mit einem externen Feld und listen Sie fehlerhafte Zeilen auf

Mit Context.GetFields können Sie auf Tabellenspalten verweisen, um jede Zelle in der Spalte abzurufen, was für Schleifen nützlich ist. Das folgende Beispiel vergleicht den Steuersatz jeder Zeile mit dem Gesamtsteuersatz. Stimmen die Werte nicht überein, wird das Skript nicht sofort abgebrochen, sondern sammelt die Zeilennummern mit Abweichungen und meldet sie in der Fehlermeldung:

Vergleichen Sie das Produkt von Werten in einer Zeile mit einem anderen Zeilenwert

Sie können Operationen für verschiedene Spalten in einer Tabelle zeilenweise ausführen, ohne explizite Schleifen zu verwenden — referenzieren Sie jede Spalte dazu mit Context.GetField. Dadurch wird eine wiederkehrende Regel erstellt, die automatisch für jede Zeile ausgeführt wird. Alle so referenzierten Spalten müssen zu derselben Tabelle gehören. Das folgende Beispiel multipliziert für jede Zeile die Stückzahl mit dem Stückpreis und vergleicht das Ergebnis mit dem Gesamtpreis der Position: