Erfassen Sie Ihre Fortschritte
Trailhead-Startseite
Trailhead-Startseite

Verwenden von Auswahllisten in Formeln

Lernziele

Nachdem Sie diese Lektion abgeschlossen haben, sind Sie in der Lage, die folgenden Aufgaben auszuführen:
  • Beschreiben von Anwendungsfällen für Formeln, die auf Auswahllistenfelder verweisen
  • Verwenden von Auswahllistenfunktionen in Formelfeldern
  • Erstellen einer auf ein Auswahllistenfeld verweisenden Formel

Einführung in das Verwenden von Auswahllisten in Formeln

In einem Auswahllistenfeld können Sie einen Wert in einer vorab ausgefüllten Liste wählen. Sie können zwar keine Formel schreiben, die als Ergebnis eine Auswahlliste zurückgibt, aber Sie müssen wahrscheinlich in Ihren Formelfeldern auf Auswahllisten verweisen.

Angenommen, Sie benötigen eine Validierungsregel, die von einem Benutzer verlangt, dass er eine Begründung abgibt, wenn er als Typ des Accounts "Sonstige" wählt. Diese Validierungsregelformel erfordert, dass ein Benutzer das Textfeld Anderer Typ ausfüllt, wenn er den Typ des Accounts auf "Sonstige" festlegt.

ISPICKVAL(Type, "Other") &&
ISBLANK(Other_Type__c)

Wenn ein Benutzer Other_Type__c leer lässt, sofern Typ auf "Sonstige" festgelegt ist, wird die Validierungsregel ausgelöst, und der Benutzer kann das Formular nicht speichern.

Gängige Funktionen und Operatoren für Auswahllisten

Drei Funktionen verwenden in allen Formelfeldern Auswahllistenwerte als Argumente: ISPICKVAL(), CASE() und TEXT().

ISPICKVAL(picklist_field, picklist_field) gibt TRUE zurück, wenn picklist_field gleich picklist_field ist, und andernfalls FALSE zurück. Sie können ISPICKVAL() mit PRIORVALUE() kombinieren. Sie können diese Funktion in Zuweisungsregeln, Validierungsregeln, Feldaktualisierungen und Workflow-Regeln verwenden, um den vorherigen Wert eines Felds zu ermitteln.

Diese Validierungsregel verhindert beispielsweise, dass ein Benutzer den Type (Typ) eines Kundenvorgangs von einem zuvor ausgewählten Wert wieder in "Leer" ändert.

NOT(ISPICKVAL(PRIORVALUE(Type), "")) &&
ISPICKVAL(Type, "")

Die Validierungsregel wird ausgelöst, wenn der vorherige Wert von Type nicht leer ist und der aktuelle Wert es ist.

CASE() ist nützlich zum Schreiben von Formeln, die basierend auf dem Wert einer Auswahlliste unterschiedliche Ergebnisse haben. Diese Formel mit dem Rückgabetyp "Zahl" weist einem Kundenvorgang basierend auf seinem Typ eine Priorität zu.

CASE(Type,
  "Electrical", 1,
  "Electronic", 2,
  "Mechanical", 3,
  "Structural", 4,
  "Other", 5,
5)

Die Formel vergleicht Type mit jedem Kundenvorgang und weist eine Priorität zu, wenn eine Übereinstimmung gefunden wird. Kundenvorgänge des Typs "Electrical" erhalten die Priorität 1, Kundenvorgänge des Typs "Electronic" die Priorität 2 usw.

TEXT() konvertiert einen Auswahllistenwert in einen Textwert in der Standardsprache Ihres Unternehmens, nicht in der Sprache des aktuellen Benutzers. Nachdem ein Auswahllistenwert in einen Textwert umgewandelt wurde, können Sie Textfunktionen wie BEGINS() und CONTAINS() darauf anwenden.

In dieser Formel wird beispielsweise der Status eines Kundenvorgangs als Satz angezeigt.

"This case is " & TEXT(Status)
Hinweis

Hinweis

Sie können TEXT() nicht für Auswahllisten mit Mehrfachauswahl verwenden. Auswahllisten mit Mehrfachauswahl werden in Formelfeldern nicht empfohlen.

Verwenden von Auswahllistenfeldern in Formeln

Erstellen einer auf einer Auswahlliste basierende Validierungsregel

Ein Auswahllistenwert bestimmt oft, welche anderen Felder in einem Datensatz erforderlich sind. ISPICKVAL() und CASE() sind nützlich für die Erstellung von Validierungsregeln, die prüfen, ob ein bestimmter Auswahllistenwert ausgewählt wurde. Angenommen, Sie möchten, dass Benutzer einen Grund eingeben, wenn sie den Auswahllistenwert Status eines Kundenvorgangs in "Eskaliert" ändern.

Erstellen Sie zuerst für das Kundenvorgangsobjekt das benutzerdefinierte Textfeld Grund für Eskalation.

  1. Nutzen Sie in Setup das Feld "Schnellsuche", um zum Objekt-Manager zu wechseln.
  2. Klicken Sie auf Kundenvorgang | Felder & Beziehungen und dann auf Neu.
  3. Wählen Sie Textbereich aus und klicken Sie dann auf Weiter.
  4. Geben Sie in Feldbezeichnung den Text "Grund für Eskalation" ein. "Feldname" wird automatisch ausgefüllt.
  5. Klicken Sie auf Weiter.
  6. Klicken Sie erneut auf Weiter und dann auf Speichern.

Verwenden Sie nun das Auswahllistenfeld Status, um eine Validierungsregel für Grund für Eskalation einzurichten.

  1. Klicken Sie auf das neu erstellte Feld "Grund für Eskalation".
  2. Klicken Sie unter "Validierungsregeln" auf Neu.
  3. Geben Sie als Regelname "Grund_erforderlich" ein.
  4. Geben Sie im Bereich Fehlerbedingungsformel die folgende Validierungsregel ein:
    AND(
      ISPICKVAL(Status, "Escalated"),
      ISBLANK(Reason_for_Escalating__c)
    )
  5. Geben Sie in Fehlermeldung Folgendes ein: Geben Sie einen Grund für die Änderung des Kundenvorgangsstatus in "Eskaliert" ein.
  6. Klicken Sie auf Speichern.

Die Validierungsregel stellt sicher, dass, wenn der Status auf "Eskaliert" festgelegt ist, Grund für Eskalation nicht leer bleibt. Testen Sie Ihre Formel, indem Sie den Status eines Kundenvorgangs in "Eskaliert" ändern und den Datensatz speichern, ohne etwas in Grund für Eskalation einzugeben. Auf dem Formular wird Ihre Fehlermeldung unter dem Feld Grund für Eskalation angezeigt.

Benutzern, die keinen 'Grund für Eskalation' festlegen, wird diese Fehlermeldung angezeigt.

Zuweisen der Priorität eines Kontakts

Was ist, wenn Sie Kontakten basierend auf der zugehörigen Account-Bewertung mithilfe eines Auswahllistenfelds eine Priorität zuweisen möchten? Für diese Formel verwenden wir einen objektübergreifenden Verweis auf die Account-Bewertung des Kontakts und das Formelfeld für das "Kontrollkästchen" Is Executive (Führungskraft), das wir in "Verwenden einfacher Logik in Formeln für Kontrollkästchen" erstellt haben. Is Executive wird aktiviert, wenn der Title (Titel) eines Kontakts das Wort "Executive," "President" oder "Chief" enthält.

Da es drei mögliche Account-Bewertungen – "Hot", "Warm", "Cold" (Heiß, Warm, Kalt) und zwei Optionen für Is Executive – aktiviert oder nicht aktiviert– gibt, sind insgesamt sechs Fälle möglich. Wir verwenden CASE(), um jeder Möglichkeit eine Priorität zuzuweisen, die auf den folgenden Bedingungen basiert.

Account.Rating Is_Executive_c Priority
Hot Ja 1
Hot Nein 1
Warm Ja 1
Warm Nein 2
Cold Ja 2
Cold Nein 3

Erstellen Sie für das Kontaktobjekt ein Formelfeld mit dem Namen "Priorität" und dem Typ "Zahl".

  1. Nutzen Sie in Setup das Feld "Schnellsuche", um zum Objekt-Manager zu wechseln.
  2. Klicken Sie auf Kontakt | Felder & Beziehungen und dann auf Neu.
  3. Wählen Sie Formel aus und klicken Sie auf Weiter.
  4. Geben Sie "Priorität" in Feldbezeichnung ein. "Feldname" wird automatisch ausgefüllt.
  5. Wählen Sie Zahl aus und ändern Sie Dezimalstellen in 0.
  6. Klicken Sie auf Weiter.
  7. Geben Sie die folgende Formel ein:
    CASE(Account.Rating,
      "Hot", 1,
      "Warm", IF(Is_Executive__c, 1, 2),
      "Cold", IF(Is_Executive__c, 2, 3),
    3)

In dieser Formel haben wir IF()-Anweisungen innerhalb der übergeordneten CASE()-Anweisung verwendet, um alle sechs Fälle effizienter zu prüfen.

Auswahllistenbeispiele

  1. Diese Formel gibt die Anzahl der Tage seit der Aktivierung eines Accounts basierend auf dem benutzerdefinierten Auswahllistenfeld "Vertragsstatus" und dem benutzerdefinierten Datumsfeld "Vertragsaktivierungsdatum" zurück. Wenn Vertragsstatus nicht "Aktiviert" lautet, ist dieses Feld leer.
    IF(ISPICKVAL(Contract_Status__c, "Activated"),
      TODAY() - Contract_Activated_Date__c, null)
  2. Diese Formel verwendet das benutzerdefinierte Datumsfeld "Fälligkeitsdatum" und das benutzerdefinierte Auswahllistenfeld "Zahlungsstatus" mit den Optionen "Bezahlt" und "Unbezahlt" für das Vertragsobjekt. Wenn Zahlungsstatus "Unbezahlt" ist und das Fälligkeitsdatum der Zahlung überschritten ist, wird im Formelfeld die Meldung "Zahlung überfällig!" angezeigt. Andernfalls bleibt das Feld leer.
    IF(AND(Payment_Due_Date__c < TODAY(),
      ISPICKVAL(Payment_Status__c,
      "UNPAID")),
      "Payment overdue!", null)
  3. Diese Validierungsregel verwendet ISPICKVAL() und PRIORVALUE(), um einen Fehler anzuzeigen, wenn jemand versucht, den Status eines Leads von "Geschlossen – Konvertiert" oder "Geschlossen – Nicht Konvertiert" in "Offen – Nicht kontaktiert" zu ändern.
    ISPICKVAL(Status, "Open - Not Contacted") &&
    BEGINS(TEXT(PRIORVALUE(Status)), "Closed")
    Wenn Benutzer den Status eines Lead von "Geschlossen" in "Offen" ändern, wird beim Versuch, den Datensatz zu speichern, ein Fehler angezeigt. Die Fehlermeldung, die ein Benutzer beim Verstoß gegen die Validierungsregel erhält.

Gängige Fehler bei Auswahllisten

  • Die einzigen Funktionen, die Auswahllistenfelder als Parameter in allen Formelfeldern verwenden können, sind ISPICKVAL(), CASE() und TEXT(). Die Verwendung von Auswahllistenwerten in anderen Funktionen führt zu einem Fehler. Dieses Formelfeld des Typs "Kontrollkästchen" soll z. B. ein Kontrollkästchen einblenden, das anzeigt, ob "Leadquelle" gleich "Partnerempfehlung" ist. Der Gleichheitsoperator (=) unterstützt jedoch keine Auswahllistenfelder, weshalb diese Formel einen Fehler verursacht.
    LeadSource = "Partner Referral"
    Verwenden Sie stattdessen ISPICKVAL(), um den Wert eines Auswahllistenfeldes zu überprüfen, oder TEXT(), um einen Auswahllistenwert in Text zu konvertieren, bevor Sie den Gleichheitsoperator verwenden.
    ISPICKVAL(LeadSource, "Partner Referral")
    TEXT(LeadSource) = "Partner Referral"