Erfassen Sie Ihre Fortschritte
Trailhead-Startseite
Trailhead-Startseite

Beheben von Formelfehlern

Lernziele

Nachdem Sie diese Lektion abgeschlossen haben, sind Sie in der Lage, die folgenden Aufgaben auszuführen:
  • Verstehen der Ursachen gängiger Formelfehler
  • Beheben von Problemen mit erweiterten Formelfeldern

Syntaxfehler

Selbst erfahrene Formelexperten stoßen gelegentlich bei ihren Formeln auf Probleme. Die häufigsten Formelfehler sind syntaxbedingt. Sie können die Syntax Ihrer Formel jederzeit überprüfen, indem Sie auf Syntax prüfen klicken.

Fehlende oder zusätzliche Klammern

Es kann leicht passieren, dass Sie versehentlich eine zusätzliche Klammer in Ihre Formel eingeben oder eine weglassen. Dieser Fehler tritt insbesondere beim Schachteln logischer Anweisungen wie IF(), AND() und OR() auf.

Dieser Formel fehlt z. B. am Ende eine schließende Klammer.

Syntaxfehler aufgrund einer fehlenden Klammer

Sie erhalten diesen Fehler auch, wenn es innerhalb einer Funktion zu viele Klammern gibt oder ein Komma falsch platziert ist. Hier ist die gleiche Formel, aber mit zusätzlicher Klammer.

Syntaxfehler aufgrund einer zusätzlichen Klammer

Feld nicht vorhanden

Was Syntaxfehler angeht, ist der Editor für erweiterte Formeln Ihr bester Freund. Es ist nahezu unmöglich, den Namen eines Felds oder einer Funktion falsch zu schreiben, wenn Sie die Schaltfläche Operator einfügen oder Feld einfügen verwenden.

Syntaxfehler aufgrund eines falsch geschriebenen Feldnamens

Hier wollten wir auf das Feld Principal__c verweisen, nicht auf Principle__c. Sie erhalten diesen Fehler auch, wenn Sie vergessen, eine Textzeichenfolge in Anführungszeichen zu setzen.

Falsche Anzahl von Parametern

Wenn Sie für eine bestimmte Funktion die falsche Anzahl von Parametern verwenden, kommt es zu Syntaxfehlern. Seien Sie besonders vorsichtig bei Funktionen, die eine variable Anzahl von Parametern akzeptieren, wie z. B. CASE().

Ein Syntaxfehler bei falscher Anzahl von Parametern in einer Funktion

Dieser Formel fehlte in ihrer CASE()-Anweisung das letzte Argument, der Fall-Through-Fall. Der Formel-Editor ging davon aus, dass wir nur vier Fälle überprüfen wollten, nicht fünf. Also hat er insgesamt nach 10 Argumenten gesucht, obwohl wir ihm eigentlich 12 angeben wollten.

Unbekannte Funktion

Es treten auch Fehler auf, wenn Sie einen Funktionsnamen falsch schreiben oder versuchen, eine nicht existierende Funktion zu verwenden.

Syntaxfehler aufgrund einer unbekannten Funktion

Diese Formel versucht, auf die Funktion MINIMUM() zu verweisen, die nicht existiert. Wir meinten eigentlich die Funktion MIN(), die eine Liste von Zahlen verwendet und das Minimum zurückgibt.

Arbeiten mit unterschiedlichen Datentypen

Wenn Sie eine Formel erstellen, denken Sie daran, welche Art von Daten sie zurückgeben soll, ehe Sie sie schreiben. Wenn Ihre Formel einen anderen Datentyp als den von Ihnen ausgewählten zurückgibt, können Sie sie nicht speichern.

Datentypen können leicht verwechselt werden, wenn Sie einen Wert zwischen Typen konvertieren oder ähnliche Datentypen wie Datum und Datum/Uhrzeit oder Zahl und Währung verwenden. Diese Formel wird beispielsweise geschrieben, um einen Datumswert zurückzugeben, wenn der ausgewählte Formelrückgabetyp Datum/Uhrzeit ist.

Der Rückgabetyp dieser Formel unterscheidet sich vom Datentyp des Werts, für dessen Rückgabe er geschrieben wird.

Um diesen Fehler zu korrigieren, können Sie den Rückgabetyp des Formelfelds in Datum ändern. Oder Sie können TODAY() durch NOW() ersetzen, um einen Datum/Uhrzeit-Wert anstelle eines Datums zu erzeugen.

Fehler aufgrund von Kompiliergröße und Formellänge

Formelfelder sind leistungsstark, aber von begrenzter Größe. Formeln sind auf 3.900 Zeichen bzw. 4.000 Bytes begrenzt, einschließlich Leerzeichen, Zeilenumbrüche und Kommentaren, und dürfen beim Kompilieren 5.000 Bytes nicht überschreiten. Es ist wichtig, die Unterschiede zwischen diesen Größenbeschränkungen zu verstehen und wie man mit diesen Einschränkungen zurechtkommt.

Längenbegrenzung

Formeln sind auf 3.900 Zeichen begrenzt. Es gibt verschiedene Möglichkeiten zum Kürzen langer Formeln. Das Ersetzen von AND() durch && spart beispielsweise bei jeder Verwendung ein paar Zeichen, ebenso wie das Ersetzen geschachtelter IF()-Anweisungen durch eine CASE()-Anweisung. Kürzere Feldnamen und Kommentare führen auch zu einem kleinen, aber signifikanten Unterschied bei der Länge Ihrer Formel.

Wenn Ihr Formelfeld deutlich länger als 3.900 Zeichen ist, verwenden Sie ein Hilfsformelfeld.

Obergrenze für die Kompiliergröße

Eine Formel mit weniger als 3.900 Zeichen kann die Obergrenze für die Kompiliergröße von 5.000 Bytes dennoch überschreiten. Wenn eine Formel die Obergrenze der Kompiliergröße überschreitet, bewirkt das Erstellen von Hilfsfeldern und das Kürzen von Feldnamen oder Kommentaren keinen Unterschied. Wenn Sie auf ein Hilfsfeld verweisen, wird dessen Kompiliergröße zur Kompiliergröße der Formel addiert, die darauf verweist. Eine Möglichkeit, die Kompiliergröße einer Formel zu verkleinern, besteht darin, Verweise auf andere Formelfelder zu minimieren.

Einige Methoden zur Reduzierung der Formellänge, wie das Ersetzen geschachtelter IF()-Anweisungen durch eine CASE()-Anweisung, verringern auch die Kompiliergröße einer Formel.

Beachten Sie zwei Felder:
  • Date1__c ist ein Datumsfeld.
  • Date2__c ist ein Formelfeld, das ein Datum anhand von Date1__c erzeugt.
    DATE( YEAR( Date1__c ), MONTH( Date1__c ), DAY( Date1__c ) )

Die folgende Formel gibt das Datum des letzten Tags des Monats für ein bestimmtes Datum zurück (es wird angenommen, dass der Februar immer 28 Tage hat):

DATE(
 YEAR( SomeDate__c ),
 MONTH( SomeDate__c ),
 IF(
   OR(
     MONTH( SomeDate__c ) = 4,
     MONTH( SomeDate__c ) = 6,
     MONTH( SomeDate__c ) = 9,
     MONTH( SomeDate__c ) = 11
   ),
   30,
   IF(
     MONTH( SomeDate__c ) = 2,
     28,
     31
   )
 )
)

Die Formel prüft zunächst auf Monate mit 30 Tagen, dann auf Februar und die restlichen Monate mit 31 Tagen. Die Formel benötigt eine geschachtelte IF()-Funktion, die nicht sehr lesbar ist und zu 1069 Zeichen für Date1__c und satten 7.271 Zeichen für Date2__c kompiliert wird! Warum? Weil die Formel sieben Mal auf das Datum verweist. Vergleichen Sie dies mit dieser überarbeiteten Version der Formel:

DATE(
 YEAR( SomeDate__c ),
 MONTH( SomeDate__c ),
 CASE(
   MONTH( SomeDate__c ),
   2, 28,
   4, 30,
   6, 30,
   9, 30,
   11, 30,
   31
 )
)

Die Formel ist nicht nur einfacher zu lesen, sondern wird auch nur zu 645 Zeichen für Date1__c und zu 3.309 Zeichen für Date2__c kompiliert. Sie verweist nun drei statt sieben Mal auf das Datum.

Dieses Beispiel stammt aus der Community Salesforce Answers. In einer Auswahlliste wird der Name eines Mitarbeiters gespeichert, der für eine Opportunity verantwortlich ist. Die Formel berechnet eine Provision, die auf dem Wert der "Basisprovision" und einem Multiplikator basiert. Da jedoch in jeder Bedingung der CASE()-Anweisung auf Base_Commission__c verwiesen wird, überschreitet die Formel die Kompiliergröße.

CASE( Agent__c,
  "John", Base_Commission__c * 2,
  "Jane", Base_Commission__c * 6,
  /* Repeat for many other agents */
  Base_Commission__c
)

Um dies zu korrigieren, verschieben Sie Base_Commission__c aus der CASE()-Funktion heraus. Die Formel kann so neu geschrieben werden:

Base_Commission__c * CASE( Agent__c,
  "John", 2,
  "Jane", 6,
  /* Repeat for many other agents */
  1
)

Selbst wenn "Basisprovision" nur ein Währungsfeld und keine Formel selbst ist, wird durch den einmaligen statt mehrmaligen Verweis auf sie die Kompiliergröße der Formel stark verringert.