ServiceNowのフォームにおいて、正しく設定したはずなのになぜか項目が表示されない、といったことはないでしょうか。ServiceNowではフォームに項目が表示されるまでに様々な設定の影響を受けるため、項目が表示されないと言っても原因は一つではありません。この記事では、フォームになぜか項目(フィールド)が表示されない場合に考えられる理由と対応方法を説明します。
フォームに項目(フィールド)が表示されないときの事象と考えられる原因
前提
まず、前提として、次の2つが満たされていることを確認してください。
テーブルに項目(フィールド)が存在すること
テーブルに項目(フィールド)が存在しないことには表示のしようがありません。複数のインスタンスで並行で作業をしている場合に、項目(フィールド)が存在する方のインスタンスつもりで、項目が存在しない方を触っているということもあるので、一応確認しましょう。
フォームが開けること(テーブルの読み取り(Read)が制限されていないこと)
テーブルの読み取り(Read)が制限されていると、フォーム自体が開けません。この場合は、まずテーブルレベルの読み取り(Read)のACL(Access Control List)を設定しましょう。
なお、テーブルの読み取り(Read)の権限があっても、書き込み(Write)が制限されていると、項目は表示されますが、全ての項目が読み取り専用となります。
フォームに項目(フィールド)が表示されないときの事象と考えられる原因
フォームに項目(フィールド)が表示されないときは、どのような事象が起きているかによって、考えられる原因がある程度絞り込めます。その対応を下図に示します。
以下、それぞれの考えられる原因ごとの対応方法を説明します。
フォームに項目が表示されない原因と対応方法
フィールドACLで制限されている
管理者権限など高い権限のユーザでは見えるのに、一般ユーザが見えないという場合は、フィールドACLで読み取り(Read)が制限されている可能性があります。この場合は、そのフィールドの読み取り(Read)のACLを設定し、権限を与えましょう。
ただし、標準のタスク(Task)[task]テーブルの追加コメント(Additional comment)項目や、作業メモ(Work notes)項目のような、Journal(ジャーナル)型、Journal Input(ジャーナル入力)型の項目については、書き込み専用項目であるため、読み取り(Read)権限に加え、書き込み(Write)権限がないと表示すらされないことに注意が必要です。タスク関連テーブルにおいて追加コメント(Additional comment)項目や、作業メモ(Work notes)項目がなぜか表示されない場合、これが原因であることが多いです。
Reference先のテーブルのテーブルACLで制限されている
意外と気づきにくいパターンとして、ReferenceフィールドのReference先のテーブルの読み取り(Read)が制限されていると、そのテーブルをReferenceしているフィールドが非表示になります。
具体例として、会社(Company)[core_company]テーブルを参照するフィールドを一般ユーザに見せようとしたが、標準では会社テーブルの読み取りにはitilやuser_adminなどのロールが必要なので、一般ユーザにはその項目が表示されなかった、というケースを何度か見たことがあります。(なお、このような場合、標準のACLを無理やり変更して読み取り可能にすることはライセンス違反に当たる可能性があるため、標準テーブルのACLの変更可否はServiceNow社の担当者に相談してください。)
Viewが異なる
管理者権限など高い権限のユーザでは見えるのに、一般ユーザが見えないという場合は、管理者ユーザの見ているViewと、一般ユーザが見ているViewが異なっていて、一般ユーザが見ているViewではその項目を表示しない設定になっている可能性があります。
このような場合は、フォーム上部のビュー名が一致しているかを確認した上で、適切なビューに設定を加えましょう。
ビューについては、同じビューを見ているつもりでも、そのフォームに遷移するためのメニューやURL、View Ruleという機能でユーザの権限や属性に応じて強制的に特定のビューが適用されることがあるため、注意が必要です。
Viewについてはこちらに詳しくまとめているので、あわせてご参照ください。
個人設定(Personalize)で非表示にしている
特定の一人だけが見れない場合は、個人設定(Personalize)で非表示にしてしまっている可能性があります。
フォーム上では、画面上部のスライダーのアイコンから、自分が見たい項目だけを表示させることができます。この設定は、他人が見たときの画面には影響を与えず、自分が見たときの画面にだけ影響を与えるため、本人は意外と気づきません。
これはあまりないとは思いますが、以前おっちょこちょいな方がやってたので一応書いておきます。
UIポリシー(UI Policy)やクライアントスクリプト(Client Script)による動的な制御がかかっている
該当の項目が一瞬表示されるがすぐ消える、という場合は、UIポリシー(UI Policy)やクライアントスクリプト(Client Script)によって特定の条件の場合は非表示になるよう動的な制御がかかっている可能性が高いです。UIポリシー(UI Policy)やクライアントスクリプト(Client Script)は”見る人”はなく、ステータスフィールドの値などの”対象レコードの状態”に基づいて制御を行うことが多いため、誰が見ても見えない場合が多いです。
この場合は、そのテーブルに設定されているUIポリシー(UI Policy)やクライアントスクリプト(Client Script)を調べてみましょう。特に継承テーブルの場合は、その親テーブルのUIポリシー(UI Policy)やクライアントスクリプト(Client Script)が影響を与えていることもあります。
アップグレード(バージョンアップ)やパッチ適用が原因で上記設定が変更されることもある
また、アップグレード(バージョンアップ)やパッチ適用を実施したことによって、上記の設定が変更され、運用中に急に項目が表示されなくなった、ということもあります。アップグレード時の対応については次の記事にまとめたので、あわせて参照ください。
おわりに
ServiceNowでは、最終的に項目が表示されるまでに様々な要素の影響を受けます。そのため、単に項目が表示されないといってもその原因はさまざまで、上述のように、事象からあたりを付けて設定を見ていくとよいです。
また、もしこの記事には記載されていないけどこんなパターンもあるよ!というのがあれば、ぜひコメントいただければと思います。
以上です。
コメント