Erfassen Sie Ihre Fortschritte
Trailhead-Startseite
Trailhead-Startseite

Durchstarten mit erweiterten Formeln

Lernziele

Nachdem Sie diese Lektion abgeschlossen haben, sind Sie in der Lage, die folgenden Aufgaben auszuführen:
  • Implementieren erweiterter Formeln für komplexe Anwendungsfälle
  • Schreiben übersichtlicher einfach zu verstehender Formeln

Erweiterte Formeln

In diesem Modul haben Sie eine ganze Menge komplizierter Formeln kennengelernt. Es ist jedoch nicht immer einfach, ein Geschäftsproblem mithilfe einer formelbasierten Lösung in den Griff zu bekommen. Diese Lektion enthält einige Tipps, wie Sie Ihre Formelkonzepte in die Realität umsetzen können.

Ideen aufschreiben

Wenn Sie eine Idee für eine Formel haben, denken Sie in der Umgangssprache darüber nach, bevor Sie den Editor für erweiterte Formeln aufrufen. Beginnen Sie, indem Sie sich fragen, was Ihr Ziel ist, und beschreiben Sie es umgangssprachlich.

Dieses Beispiel stammt aus der Salesforce Trailblazer Community: Angenommen, Ihr Ziel ist es sicherzustellen, dass wenn jemand anderes als ein Systemadministrator eine Opportunity als "Geschlossen und verloren" markiert, er eine Begründung liefern muss.

Für dieses Beispiel gehen wir davon aus, dass Sie bereits das benutzerdefinierte Auswahllistenfeld Grund für Verlust erstellt und mit gültigen Gründen für den Verlust einer Opportunity aufgefüllt haben. Da niemand in der Lage sein soll, einen Datensatz ohne Angabe von Gründen zu speichern, verwenden wir eine Validierungsregelformel, um unser Ziel zu erreichen.

Im Klartext lautet Ihre Formel wie folgt:

Einen Fehler anzeigen, wenn die Phase einer Opportunity von jemandem, der kein Systemadministrator ist, in "Geschlossen und verloren" geändert wird und Grund für Verlust leer ist.

Nachdem Sie Ihre Formel geschrieben haben, suchen Sie nach Schlüsselwörtern wie "and", "or" und "if", die den in diesem Modul verwendeten Funktionen entsprechen. Diese Funktionen sind die Bausteine größerer, komplizierterer Formeln. Indem Sie sie in Ihren Anwendungsfällen erkennen, können Sie solche Formeln implementieren.

Um sicherzustellen, dass der Benutzer kein Systemadministrator ist, fügen Sie mit $Profile.Name ein Feld ein, das das Profil darstellt, das die Änderungen am Datensatz vornimmt. Um zu prüfen, ob StageName aktualisiert wurde, verwenden Sie ISCHANGED(). ISCHANGED() gibt TRUE zurück, wenn der aktuelle Wert eines Felds vom vorherigen Wert abweicht.

Sie können den Rest Ihrer Anforderungen mit ISPICKVAL() überprüfen. Weitere Informationen zu ISPICKVAL()finden Sie unter "Verwenden von Auswahllisten in Formeln".

  1. Nutzen Sie in Setup das Feld "Schnellsuche", um zum Objekt-Manager zu wechseln.
  2. Klicken Sie auf Opportunity | Validierungsregeln.
  3. Klicken Sie auf Neu.
  4. Geben Sie als Regelname "Grund für Verlust" erforderlich ein.
  5. Geben Sie im Bereich Fehlerbedingungsformel die folgende Formel ein:
    AND(
      $Profile.Name <> "System Administrator",
      ISCHANGED(StageName),
      ISPICKVAL(StageName, "Closed Lost"),
      ISPICKVAL(Loss_Reason__c, "")
    )
  6. Geben Sie in Fehlermeldung Folgendes ein: Opportunities können nur als 'Geschlossen und verloren' markiert werden, wenn ein Grund für Verlust angegeben wird.
  7. Als Fehlerposition wählen Sie Feld und dann in der Auswahlliste Grund für Verlust aus.
  8. Klicken Sie auf Speichern.

Wenn nun ein Benutzer, der kein Systemadministrator ist, eine Opportunity als "Geschlossen und verloren" markiert, wird eine Fehlermeldung angezeigt.

Verwenden klarer Abstände und Formatierungen

Formeln lassen sich leichter lesen und verstehen, wenn Sie die richtigen Abstände und Formatierungen verwenden. Bei der Arbeit an Textformeln haben wir eine Formel geschrieben, die einem Lead basierend auf Land, Umsatz und Quelle dynamisch eine Bewertung zuweist.

IF(AND(AnnualRevenue > 1000000, CONTAINS(CASE(Country,
"United States", "US", "America", "US", "USA", "US", "US", "US",
"NA"), "US")), IF(ISPICKVAL(LeadSource, "Partner Referral"),
"Hot", IF(OR(ISPICKVAL (LeadSource, "Purchased List"),
ISPICKVAL(LeadSource, "Web")), "Warm”, "Cold")), "Cold")

Wenngleich syntaktisch korrekt, ist es fast unmöglich zu sagen, was die Formel tut oder wie die Logik funktioniert. Da Leerzeichen und Zeilenumbrüche in Formeln keine Rolle spielen, lässt sich Ihre Formel mit Leerzeichen einfach lesbarer gestalten. Hier ist die gleiche Formel, allerdings bereinigt mit Einrückungen und Zeilenumbrüchen.

IF(
  AND(AnnualRevenue > 1000000,
  CONTAINS(CASE(Country, "United States", "US", "America",
    "US", "USA", "US", "US", "US", "NA"), "US")),
  IF(
    ISPICKVAL(LeadSource, "Partner Referral"), "Hot",
    IF(
      OR(
        ISPICKVAL(LeadSource, "Purchased List"),
        ISPICKVAL(LeadSource, "Web")
      ), "Warm”, "Cold"
    )
  ), "Cold"
)

Obwohl es keine starren Regeln für die Formatierung von Formeln gibt, empfehlen wir, jedes Mal, wenn Sie eine logische Anweisung verschachteln, sie mit zwei Leerzeichen einzurücken. Wenn Sie richtig und einheitlich einrücken, ist es einfacher zu erkennen, in welcher Funktion Sie arbeiten, und nicht übereinstimmende Klammern zu vermeiden.

Eine weitere Möglichkeit, logische Anweisungen leichter lesbar zu machen, besteht darin, logische Operatoren anstelle von Funktionen zu verwenden. Wenn Sie && anstelle von AND() oder || anstelle von OR() verwenden, ist es für jemanden, der Ihre Formel liest, einfacher, dem logischen Ablauf zu folgen. Hier noch einmal die gleiche Formel mit && und || anstelle von AND() und OR().

IF(
  AnnualRevenue > 1000000 &&
  CONTAINS(CASE(Country, "United States", "US", "America", "US",
    "USA", "US", "US", "US", "NA"), "US"),
  IF(
    ISPICKVAL(LeadSource, "Partner Referral"), "Hot",
    IF(
      ISPICKVAL(LeadSource, "PurchasedList") ||
      ISPICKVAL(LeadSource, "Web"),
      "Warm", "Cold"
    )
  ), "Cold"
)

Einfachheit ist Trumpf

Beim Schreiben einer komplizierten Formel kann es leicht passieren, dass man sich in geschachtelten logischen Anweisungen und Verweisen auf andere Felder verstrickt. Oft ist die einfachste Formel auch die beste.

Diese Validierungsregelformel gibt TRUE zurück, wenn der Schlusstermin einer Opportunity nicht im aktuellen Monat liegt.
OR (
CloseDate < DATE( YEAR(TODAY()), MONTH(TODAY()), 1),
IF (
AND (
MONTH (TODAY() ) =1,
CloseDate > DATE( YEAR(TODAY() ), MONTH(TODAY() ), 31)),
true,
IF (
AND (
MONTH (TODAY() ) =2,
CloseDate > DATE( YEAR(TODAY() ), MONTH(TODAY() ), 28)),
true,
IF (
AND (
MONTH (TODAY() ) =3,
CloseDate > DATE( YEAR(TODAY() ), MONTH(TODAY() ), 31)),
true,
IF (
AND (
MONTH (TODAY() ) =4,
CloseDate > DATE( YEAR(TODAY() ), MONTH(TODAY() ), 30)),
true,
IF (
AND (
MONTH (TODAY() ) =5,
CloseDate > DATE( YEAR(TODAY() ), MONTH(TODAY() ), 31)),
true,
IF (
AND (
MONTH (TODAY() ) =6,
CloseDate > DATE( YEAR(TODAY() ), MONTH(TODAY() ), 30)),
true,
IF (
AND (
MONTH (TODAY() ) =7,
CloseDate > DATE( YEAR(TODAY() ), MONTH(TODAY() ), 31)),
true,
IF (
AND (
MONTH (TODAY() ) =8,
CloseDate > DATE( YEAR(TODAY() ), MONTH(TODAY() ), 31)),
true,
IF (
AND (
MONTH (TODAY() ) =9,
CloseDate > DATE( YEAR(TODAY() ), MONTH(TODAY() ), 30)),
true,
IF (
AND (
MONTH (TODAY() ) =10,
CloseDate > DATE( YEAR(TODAY() ), MONTH(TODAY() ), 31)),
true,
IF (
AND (
MONTH (TODAY() ) =11,
CloseDate > DATE( YEAR(TODAY() ), MONTH(TODAY() ), 30)),
true,
IF (
AND (
MONTH (TODAY() ) =12,
CloseDate > DATE( YEAR(TODAY() ), MONTH(TODAY() ), 31)),
true, false
)))))))))))))
Bei dieser komplexen Prüfung wird ermittelt, ob der Schlusstermin früher als der erste Tag des aktuellen Monats oder später als der letzte Tag dieses Monats ist. Aber eigentlich spielt der Tag keine Rolle: Wenn Monat und Jahr des Schlusstermins gleich dem Monat und Jahr des aktuellen Monats sind, dann haben wir den gleichen Monat. Deshalb können wir die Formel so neu schreiben:
NOT(
  AND(
    MONTH( CloseDate ) = MONTH( TODAY() ),
    YEAR( CloseDate ) = YEAR( TODAY() )
  )
)
Diese neue Version ist weitaus lesbarer und kompiliert nur bis zu 200 Zeichen, verglichen mit mehr als 3.000 bei der ursprünglichen Formel. Wenn Ihre Formel komplizierter zu sein scheint, als sie sein sollte, ist sie es wahrscheinlich auch. Versuchen Sie, das Problem aus einem anderen Blickwinkel anzugehen, um die Sache zu vereinfachen.