Navigations-Handler

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 1 Minute Lesedauer
  • Ein Navigations-Handler ist eine geskriptete Ansichtsregel und wird jedes Mal ausgeführt, wenn Daten aus der angegebenen Tabelle in der Formularansicht angefordert werden.

    Erstellen Sie einen Navigations-Handler

    Die Tabelle „Navigations-Handler“ [sys_navigator] enthält die Navigations-Handler Ihrer Instanz. Greifen Sie auf diese Tabelle zu, indem Sie im Filternavigator sys_navigator.list eingeben. Navigations-Handler-Datensätze enthalten ein Tabellenfeld, um anzugeben, für welche Tabelle der Navigations-Handler gilt, und ein Skript -Feld, das die geskriptete Ansichtsregel enthält.

    Das folgende Skript stammt aus dem Navigations-Handler, der im Plugin „HR“ enthalten ist. Das Skript erzwingt, dass für Datensätze aus der Tabelle im Feld Tabelle die ESS-Ansicht für Benutzer ohne Rollen und die Standardansicht für alle anderen Benutzer verwendet wird.

    var now_GR = new GlideRecord(hr.TABLE_CASE);  
    if (gr.get(g_uri.get('sys_id'))) {  
         if (!gs.getUser().hasRoles())   
              g_uri.set('sysparm_view', 'ess');  
         else  
              g_uri.set('sysparm_view', '');  
    }  
      
      
    answer =  g_uri.toString('hr_case.do'); 

    Führen Sie Navigations-Handler vor oder nach den Ansichtsregeln aus

    Verwenden Sie die Systemeigenschaft glide.ui.view_rule.check_after_nav_handler, um die Reihenfolge zu steuern, in der Ansichtsregeln und Navigationshandler angewendet werden. Legen Sie den Eigenschaftswert auf true fest, um Ansichtsregeln nach Navigations-Handlern zu verarbeiten. Wenn die Systemeigenschaft in Ihrer Instanz nicht vorhanden ist, hat der Navigations-Handler immer Vorrang.

    Die Systemeigenschaft überschreibt den Navigations-Handler nur, wenn die geskriptete Funktion des Navigations-Handlers keine Antwort zurückgibt. Im obigen Beispielskript hat die Eigenschaft keine Auswirkung. Dies liegt daran, dass dieser Navigations-Handler immer eine Antwort zurückgibt, da sich die Antwortzeile außerhalb der if -Anweisung befindet.

    Um zu erzwingen, dass das Navigations-Handler-Skript im vorherigen Beispiel Ansichtsregeln berücksichtigt, führen Sie die folgenden Schritte aus:
    1. Erstellen Sie die Systemeigenschaft glide.ui.view_rule.check_after_nav_handler.
    2. Legen Sie den Wert der Eigenschaft auf true fest.
    3. Aktualisieren Sie das Navigations-Handler-Skript so, dass nur dann eine Antwort zurückgegeben wird, wenn die Ansicht geändert oder erzwungen werden muss.

    Dieses Beispiel ist eine geänderte Version des vorherigen Skripts. In diesem Fall wird die Antwortzeile nur angezeigt, wenn der Benutzer keine Rollen hat. Wenn der Benutzer über Rollen verfügt, wird die Antwort nie erreicht, und Ansichtsregeln in derselben Tabelle werden ggf. angewendet.

    var now_GR = new GlideRecord(hr.TABLE_CASE);  
    if (gr.get(g_url.get('sys_id'))) {  
         if (!gs.getUser().hasRoles()) {  
              g_url.set('sysparm_view'),'ess');  
              answer = g_url.toString('hr_case.do');  
         }  
    }