ナビゲーションハンドラー

  • リリースバージョン: Australia
  • 更新日 2026年03月12日
  • 所要時間:2分
  • ナビゲーションハンドラーはスクリプト化されたビュールールであり、指定されたテーブルのデータがフォームビューで要求されるたびに実行されます。

    ナビゲーションハンドラーの作成

    ナビゲーションハンドラー [sys_navigator] テーブルには、インスタンスのナビゲーションハンドラーが含まれています。このテーブルにアクセスするには、フィルターナビゲーターに 「sys_navigator.list 」と入力します。ナビゲーションハンドラーレコードには、ナビゲーションハンドラーが適用されるテーブルを指定するための テーブル フィールドと、スクリプト化されたビュールールを含む スクリプト フィールドが含まれています。

    次のスクリプトは、HR プラグインに含まれるナビゲーションハンドラーから取得されます。このスクリプトは、[ テーブル] フィールドのテーブルのレコードに、ロールを持たないユーザーに対しては ESS ビューを使用し、他のすべてのユーザーに対してはデフォルトビューを使用するように強制します。

    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'); 

    ビュールールの前後にナビゲーションハンドラーを実行

    glide.ui.view_rule.check_after_nav_handlerシステムプロパティを使用して、表示ルールとナビゲーションハンドラーを適用する順序を制御します。ナビゲーションハンドラーの後にビュールールを処理するには、プロパティ値を True に設定します。システムプロパティがインスタンスに存在しない場合は、ナビゲーションハンドラーが常に優先されます。

    システムプロパティは、ナビゲーションハンドラースクリプト関数が回答を返さない場合にのみ、ナビゲーションハンドラーを上書きします。上記のスクリプト例では、このプロパティは効果がありません。これは、 回答 行が if ステートメントの外側にあるため、このナビゲーションハンドラーが常に回答を返すためです。

    前の例のナビゲーションハンドラースクリプトに表示ルールを優先させるには、次の手順を実行します。
    1. glide.ui.view_rule.check_after_nav_handlerシステムプロパティを作成します。
    2. プロパティの値を [true] に設定します。
    3. ナビゲーションハンドラースクリプトを更新して、ビューを変更または強制する必要がある場合にのみ 回答 を返します。

    この例は、前のスクリプトの変更バージョンです。この場合、 ユーザーに ロールがない場合にのみ応答ラインが表示されます。ユーザーにロールがある場合、 回答 に到達することはなく、同じテーブルの表示ルールがある場合は適用されます。

    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');  
         }  
    }