Erstellen Sie geskriptete Filter

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 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 JavaScript kennen, können Sie JavaScript-Funktionen zur Verwendung in erweiterten Filtern erstellen.

    Vorbereitungen

    Erforderliche Rolle: admin

    Prozedur

    1. Erstellen Sie eine neue Skripteinbindung.
      1. Navigieren zu Systemdefinition > Skripteinbindungen.
      2. Klicken Sie auf Neu.
      3. Füllen Sie das Formular aus, und wählen Sie dann Absendenaus.
    2. Öffnen Sie die Skripteinbindung, und erstellen Sie im Feld Skript eine JavaScript-Funktion, die ein Array von sys_ids zurü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 über den Bedingungsgenerator auf.
      Weitere Informationen finden Sie unter GlideRecord- Abfragen und Skripteinbindungen.

    Beispiel

    Ein Unternehmen bietet Intensivpflege für eine Gruppe von Kunden an. Um diese Services nachzuverfolgen, benötigt der Servicemanager ein allgemeines Journal und Links zu allen Incidents, die von Kunden gemeldet werden.

    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 Benutzer-sys_ids in der Tabelle [u_intensive_care] zu erstellen, wie im folgenden Beispielcode gezeigt. Rufen Sie die Funktion über den Bedingungsgenerator in der Incident-Tabelle ([Caller] [is] [javascript:myFunction()]) auf.
    function myFunction ( ) { 
        var arrUsers  = [ ];
        gr  = new GlideRecord ( 'u_intensive_care' );
        now_GR. query ( ); 
        while (now_GR. next ( ) ) {
            arrUsers. push (now_GR. u_customer. toString ( ) ); 
        }
        return arrUsers;
    }