Zum Hauptinhalt springen

Extra Form Fields

Extra Form Fields ermöglichen es Ihnen, benutzerdefinierte Salesforce-Felder zu Formularen im Employee Hub hinzuzufügen. Sie erscheinen neben den Standardfeldern und können mit bedingter Sichtbarkeit, benutzerdefinierten Anforderungen und dynamischen Lookup-Filtern konfiguriert werden.

Übersicht

Extra Form Fields werden mithilfe des Custom Metadata Type flair__Extra_Form_Field__mdt konfiguriert. Sie definieren zusätzliche Felder, die in Formularen erscheinen – sie ersetzen nicht den Standard-Feldsatz, sondern erweitern ihn.

Unterstützte Formulare

Extra Form Fields können zu folgenden Formularen hinzugefügt werden:

  • Abwesenheitsantragsformular (flair__Absence__c.RequestAbsence)
  • Abwesenheits-Manager-Details (flair__Absence__c.ManagerDetails)
  • Ausgabenantragsformular (flair__Expense__c.RequestExpense)
  • Ausgaben-Details (flair__Expense__c.Details)
  • Ausgabenposten-Antragsformular (flair__Expense_Item__c.RequestExpenseItem)
  • Projekt-Benutzer-Details (flair__Project__c.UserDetails)
  • Projekt-Manager-Details (flair__Project__c.ManagerDetails)
  • Projektzeiteintrags-Bearbeitung (flair__Project_Time_Entry__c.Edit)

Ein Extra Form Field erstellen

Schritt 1: Auf Custom Metadata zugreifen

  1. Navigieren Sie zu Setup in Salesforce
  2. Geben Sie im Feld „Schnellsuche" Custom Metadata Types ein
  3. Finden Sie Flair Extra Form Field und klicken Sie auf Manage Records

Schritt 2: Einen neuen Datensatz erstellen

  1. Klicken Sie auf New, um einen neuen Extra Form Field-Datensatz zu erstellen
  2. Füllen Sie die erforderlichen Konfigurationsfelder aus
Extra Form Field Edit Page

Schritt 3: Feldeigenschaften konfigurieren

Erforderliche Felder

  • Object API Name: Der API-Name des Salesforce-Objekts (z. B. flair__Expense__c, flair__Absence__c, MyOrg_Date__c)
  • Field API Name: Der API-Name des benutzerdefinierten Feldes, das Sie anzeigen möchten (z. B. flair__Amount__c, flair__Description__c)

Optionale Konfiguration

  • Required: Überschreiben Sie die „Required"-Eigenschaft des Salesforce-Feldes. Aktivieren Sie dieses Kontrollkästchen, um das Feld im Formular erforderlich zu machen, auch wenn es in Salesforce nicht erforderlich ist.
  • Active: Aktivieren oder deaktivieren Sie das Feld. Deaktivieren Sie es, um das Feld vorübergehend auszublenden, ohne die Konfiguration zu löschen.
  • Form Id: Wenn angegeben, erscheint das Feld nur im Zielformular. Lassen Sie es leer, um es in allen Formularen für dieses Objekt anzuzeigen.
    • Beispiel: flair__Absence__c.RequestAbsence zeigt das Feld nur im Abwesenheitsantragsformular an
  • Position: Numerischer Wert, der die Anzeigereihenfolge der Felder steuert (niedrigere Zahlen erscheinen zuerst)
  • Visibility Condition: JSON-basierte Bedingung, die steuert, wann das Feld sichtbar ist (siehe Sichtbarkeitsbedingungen)
  • Lookup SOQL Filter: SOQL WHERE-Klausel zum Filtern von Lookup-Referenzoptionen (siehe Lookup-Filter)
  • Visible Lines: Anzahl der anzuzeigenden Zeilen für mehrzeilige Text Area-Felder

Unterstützte Feldtypen

Extra Form Fields unterstützen die folgenden Salesforce-Feldtypen:

  • Text Area
  • Long Text Area
  • Date
  • Time
  • DateTime
  • Picklists
  • Lookup References
  • Number

Sichtbarkeitsbedingungen

Sichtbarkeitsbedingungen ermöglichen es Ihnen, Felder basierend auf Formularwerten, Datensatztypen oder Kontextparametern anzuzeigen oder auszublenden. Bedingungen werden mithilfe von JSON-basierten Kriterien definiert (ähnlich der MongoDB-Abfragesyntax).

Grundlegende Beispiele

Feld nur für bestimmten Datensatztyp anzeigen:

{
"$formValues.recordTypeName": "Travel_Expense"
}

Feld nur für bestimmte Abwesenheitskategorie anzeigen:

{
"$contextParams.absenceCategoryName": "Sickness"
}

Feld für bestimmte Werte ausblenden:

{
"$contextParams.absenceCategoryName": {"$ne": ["Sickness", "Home Leave"]}
}

Erweiterte Beispiele

Logische ODER-Bedingung:

{
"$or": [
{ "$formValues.recordTypeName": "Travel_Expense" },
{ "$formValues.recordTypeName": "Default_Expense" }
]
}

Komplexe logische Bedingungen:

{
"$or": [
{ "$formValues.recordTypeName": "Travel_Expense" },
{
"$and": [
{ "$contextParams.absenceCategoryName": { "$ne": ["Sickness", "Home Leave"] } },
{ "$formValues.recordTypeName": "Default_Expense" }
]
}
]
}

Unterstützte Operatoren

  • $eq: Gleich (Standard, wenn kein Operator angegeben ist)
  • $ne: Ungleich
  • $or: Logisches ODER
  • $and: Logisches UND

Unterstützte Schlüssel

  • $formValues.recordTypeName: Verwenden Sie den Record Type Name (API-Name), nicht das Record Type Label
  • $contextParams.*: Verfügbare Kontextparameter hängen vom Formular ab:
    • Abwesenheitsantragsformular: absenceCategoryName, employeeAbsenceCategory
    • Projektzeiteintrags-Bearbeitung: day, project, employee

Lookup-Filter

Für Lookup-Referenzfelder können Sie SOQL WHERE-Kriterien angeben, um verfügbare Optionen dynamisch zu filtern.

Grundlegende Beispiele

Mitarbeiter nach Manager filtern:

flair__Manager__c = :currentEmployee.Manager__c

Nach Kontextparameter filtern:

Absence_Category__c = :contextParams.employeeAbsenceCategory.flair__Absence_Category__c

Mit LIKE-Operator filtern:

flair__Manager__r.Name LIKE '%:currentEmployee.flair__First_Name__c%'

Unterstützte Parameter

  • :currentEmployee: Verweist auf den Datensatz des aktuellen Mitarbeiters
    • Beispiel: :currentEmployee.flair__First_Name__c
    • Beispiel: :currentEmployee.Manager__c
  • :contextParams: Verweist auf Kontextparameter, die an das Formular übergeben werden
    • Beispiel: :contextParams.employeeAbsenceCategory.flair__Absence_Category__c

Erweitertes Beispiel

Ensurance_Number__c LIKE ':currentEmployee.Ensurance_Number__c%' 
AND Some_Employee__c = :currentEmployee.flair__Manager__r.flair__Manager__c

Häufige Anwendungsfälle

Ärztliches Attest-Feld für Krankheitsabwesenheiten

Zeigen Sie ein „Ärztliches Attest-ID"-Feld nur an, wenn Krankheitsabwesenheiten beantragt werden:

  1. Erstellen Sie das benutzerdefinierte Feld flair__Medical_Certificate_ID__c auf flair__Absence__c
  2. Erstellen Sie ein Extra Form Field mit:
    • Object API Name: flair__Absence__c
    • Field API Name: flair__Medical_Certificate_ID__c
    • Form Id: flair__Absence__c.RequestAbsence
    • Visibility Condition:
      {
      "$contextParams.absenceCategoryName": "Sickness"
      }

Ausgaben-Allowance-Lookup gefiltert nach Mitarbeiter

Erstellen Sie ein Ausgaben-Allowance-Lookup, das nur Allowances für den aktuellen Mitarbeiter anzeigt:

  1. Erstellen Sie ein Lookup-Feld flair__Expense_Allowance__c auf flair__Expense__c
  2. Erstellen Sie ein Extra Form Field mit:
    • Object API Name: flair__Expense__c
    • Field API Name: flair__Expense_Allowance__c
    • Lookup SOQL Filter:
      flair__Employee__c = :currentEmployee.Id

Datensatztypspezifische Felder

Zeigen Sie verschiedene Felder basierend auf dem Ausgaben-Datensatztyp an:

  1. Erstellen Sie Felder für Reiseausgaben (z. B. flair__Flight_Number__c)
  2. Erstellen Sie ein Extra Form Field mit:
    • Object API Name: flair__Expense__c
    • Field API Name: flair__Flight_Number__c
    • Visibility Condition:
      {
      "$formValues.recordTypeName": "Travel_Expense"
      }

Best Practices

  1. Verwenden Sie beschreibende Feldnamen: Machen Sie deutlich, wofür das Feld dient
  2. Testen Sie Sichtbarkeitsbedingungen: Überprüfen Sie, ob Felder korrekt erscheinen und ausgeblendet werden, basierend auf Ihren Bedingungen
  3. Legen Sie angemessene Positionen fest: Verwenden Sie Positionswerte, um die Feldreihenfolge logisch zu steuern
  4. Dokumentieren Sie benutzerdefinierte Felder: Behalten Sie den Überblick darüber, welche benutzerdefinierten Felder für Extra Fields verwendet werden
  5. Verwenden Sie Form Id sparsam: Geben Sie Form Id nur an, wenn Sie das Feld in einem bestimmten Formular benötigen; lassen Sie es andernfalls leer, um es in allen Formularen anzuzeigen

Fehlerbehebung

Feld erscheint nicht

  • Überprüfen Sie, ob Active aktiviert ist
  • Überprüfen Sie, ob Object API Name und Field API Name korrekt sind (verwenden Sie API-Namen, nicht Labels)
  • Stellen Sie sicher, dass das Feld auf dem Salesforce-Objekt existiert
  • Überprüfen Sie die Visibility Condition-Syntax, wenn eine festgelegt ist
  • Überprüfen Sie, ob Form Id mit dem Formular übereinstimmt, das Sie anzeigen

Lookup-Filter funktioniert nicht

  • Überprüfen Sie, ob die SOQL-Syntax korrekt ist
  • Überprüfen Sie, ob Parameternamen genau übereinstimmen (:currentEmployee, :contextParams)
  • Stellen Sie sicher, dass referenzierte Felder auf den Objekten existieren
  • Testen Sie die SOQL-Abfrage direkt in der Salesforce Developer Console

Sichtbarkeitsbedingung funktioniert nicht

  • Überprüfen Sie, ob die JSON-Syntax gültig ist
  • Überprüfen Sie, ob Record Type Name den API-Namen verwendet, nicht das Label
  • Stellen Sie sicher, dass Kontextparameter für den Formulartyp verfügbar sind
  • Testen Sie zunächst mit einfacheren Bedingungen und bauen Sie dann die Komplexität auf