Erstellen Sie geskriptete Filter

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 1 Minute Lesedauer
  • Der Bedingungsgenerator allein kann einige Filter nicht erstellen, z. B. das Anzeigen eines Datensatzes, der von einer nicht zugehörigen Tabelle abhängt. Wenn Sie sich mit JavaScript auskennen, können Sie JavaScript-Funktionen zur Verwendung in erweiterten Filtern erstellen.

    Vorbereitungen

    Erforderliche Rolle: Administrator

    Prozedur

    1. Erstellen Sie eine neue Skripteinbindung.
      1. Navigieren zu Alle > Systemdefinition > Skripteinbindungen.
      2. Klicken Sie auf Neu.
      3. Füllen Sie das Formular aus, und wählen Sie Absendenaus.
    2. Öffnen Sie die Skripteinbindung, und erstellen Sie im Feld Skript eine JavaScript-Funktion, die ein Array von sys_idszurückgibt.
      • Stellen Sie sicher, dass die Funktion denselben Namen wie die Skripteinbindung verwendet.
      • Stellen Sie sicher, dass die Skripteinbindung Aktiv und vom Client aufrufbarist.
    3. Rufen Sie die JavaScript-Funktion aus dem Bedingungsgenerator auf.
      Weitere Informationen finden Sie unter GlideRecord- Abfragen und Skripteinbindungen.
      Hinweis:
      Gruppierte Listen mit einer Skripteinbindung im Filter können zu Verlangsamungen führen.

    Beispiel

    Ein Unternehmen bietet einer Gruppe von Kunden Intensivpflege an. Um diese Services nachzuverfolgen, benötigt der Servicemanager ein allgemeines Journal und Links zu allen von den Kunden ausgelösten Incidents.

    Das Unternehmen erstellt eine Anwendung, Intensive Care, und eine Tabelle, [u_intensive_care]. Die Tabelle enthält zwar ein Referenzfeld für den Kundennamen, es gibt jedoch keinen direkten Link zur Benutzertabelle. Daher kann der Manager mit dem Bedingungsgenerator keinen Incident-Listenfilter für Kunden einrichten, die sich auf der Intensivstation befinden.

    Die Lösung besteht darin, eine JavaScript-Funktion zu schreiben, die eine GlideRecord-Abfrage verwendet, um ein Array von Anwender-sys_ids in der Tabelle [u_intensive_care] zu erstellen (siehe Beispielcode unten). Rufen Sie die Funktion über den Bedingungsgenerator in der Incident-Tabelle ([Anrufer] [ist] [javascript:myFunction()]) auf.
    function myFunction(){ 
        var arrUsers = [];
        var gr = new GlideRecord('u_intensive_care');
        gr.query(); 
        while(gr.next()){
            arrUsers.push(gr.u_customer.toString()); 
        }
        return arrUsers;
    }