Choiceが表示されない=どこが壊れている?
Choiceリスト(選択肢)が表示されないトラブルは、見た目は同じでも原因がいくつかに分かれます。たとえば次のような症状、見覚えありませんか?
- フィールド自体は表示されるのに、選択肢が空
- 以前は出ていたのに、急に一部だけ消えた
- 親フィールドを変えると出るはずの子Choiceが、何も出ない(依存Choiceが効かない)
- 環境やユーザーによって、見える選択肢が違う
こういうとき、闇雲にChoiceを追加したり、スクリプトを書き足したりすると、直ったように見えて再発します。なので本記事では、**「Choiceが表示されるまでの経路」**を3つに分けて、短い時間で切り分けできるように整理します。
- 辞書(Dictionary):そのフィールドは「Choiceとして表示される定義」になっているか
- sys_choice:選択肢データが「正しいテーブル・フィールド」に「有効な状態」で存在するか
- UI制御・権限:UIポリシーやClient Script、権限で“見えなくされていないか”
CSA学習でも、Choiceは暗記というより「仕組みが分かっていないと混乱しやすい」ポイントです。たとえば「依存Choice」「辞書の上書き」「UI制御での非表示」は、実務でも試験学習でも前提として扱われやすい部分なので、考え方をここで整理しておくと後が楽になります。
本番形式で慣れるのが合格への近道。UdemyのServiceNow模擬問題集を人気順で一覧比較できます👇
辞書設定でまず疑うポイント
最初に見るべきは、フィールドの**辞書(Dictionary)**です。Choiceが出ないとき、意外と「そもそもChoiceとして扱われていない」ケースがあります。
フィールド型が本当にChoiceか確認する
当たり前に見えて、地味に起きます。
- そのフィールドは Type = Choice になっているか
- 似たUIでも、Reference や List など別タイプだと挙動が違う
特にListフィールドは“Choiceを持つ”というより参照の集合なので、Choiceを期待して設定しても噛み合わないことがあります。
「参照フィールドをChoice風に見せている」ケースを疑う
フィールドがReferenceなのに、UI上はプルダウンっぽく見える構成もあります。代表例が「参照の件数が少ないときはドロップダウン、増えると虫眼鏡(参照アイコン)」に変わる挙動です。
この切り替えは、インスタンス全体のプロパティ glide.ui.max_ref_dropdown で制御され、件数がしきい値を超えるとドロップダウンではなく参照アイコン表示になります。フィールド単位で max_ref_dropdown 属性で上書きできることもあります。
「Choiceが表示されない」という相談でも、実際は **“Choiceがない”のではなく“表示形式が変わった”**だけ、ということがあるので注意です。
辞書の上書き(Dictionary Override)で依存関係が崩れていないか
依存Choice(親の値で子の候補が変わる)を使っている場合、テーブルによっては辞書の上書き(Dictionary Override)で設定がずれて、急に効かなくなることがあります。
コミュニティでも、依存が効かないときに「該当テーブル側のDictionary Overrideで依存フィールドを設定する」話が出ています。
ここで大事なのは、**“どのテーブル定義を見ているか”**です。継承や拡張が絡むと、同じフィールド名でも参照している辞書が違って、結果的に依存が外れたように見えることがあります。
sys_choice(選択肢レコード)の確認観点
辞書が正しそうなら、次はChoiceの実体である sys_choice を見ます。ここが原因だと、UI側は正しくても“材料”がないので表示できません。
「Show Choice List」で対象が合っているか確認する
フォーム上でフィールドラベルを右クリックして Show Choice List を開き、該当フィールドの選択肢が一覧できるのが一番早いです。
ただし注意点があります。環境や権限設定によっては Show Choice List が出ないことがあります(personalize_choices などの扱い)。この場合は「UIがおかしい」と決めつけず、権限側の影響も疑ってください。
sys_choiceの基本チェック
sys_choiceを直に見る場合は、最低でも次を確認します。
- name(テーブル):そのChoiceは、どのテーブルのフィールド向けか
- element(フィールド名):対象フィールドが合っているか
- inactive:無効化されていないか
- label / value:表示名と値が意図通りか
SupportのKBでも、Choiceラベルが表示されない/期待したChoiceが出ない系のトラブルは、sys_choiceレコードの欠落や整合性不良を疑うよう整理されています。
実務でありがちなのは、次のような“ズレ”です。
- テーブル継承の理解が曖昧で、親テーブルにChoiceを作ってしまった(本当は子テーブルのnameが必要)
- 同名フィールドを別テーブルにも作っていて、別のsys_choiceを見ていた
- アップデートセット移送やスコープ差で、sys_choiceが片環境にしかない
依存Choice(Dependent value)のミスを疑う
「親によって子が変わる」構成は便利ですが、ちょっとのミスで候補が0件になります。
子Choice側で Dependent value を正しく入れていないと、当然ですが一致しないので何も出ません。依存Choiceの概念自体はコミュニティでも説明されています。
ここでのコツは、「ラベル」ではなく value同士で一致しているかを疑うこと。人が目で見て分かるのはラベルなので、ラベルで合わせたつもりがvalueが違っていた、という事故が起きます。
UI側で“見えなくなる”要因
sys_choiceも辞書も問題なさそうなのに空っぽ。こういうときは、UI側で“消されている”可能性が高いです。
UIポリシー/Client Scriptで選択肢を消していないか
典型例は以下です。
- UI Policyでフィールドを非表示にする/値をクリアする
- Client Scriptで
g_form.removeOption()やg_form.clearOptions()的な処理をしている - カタログアイテム(変数)側のUI制御で選択肢を絞っている
「特定の選択肢のときだけ別フィールドを非表示にしたい」といった要件は頻出なので、コミュニティでもUI制御の相談が多いです。
トラブル時は、**“正しく出す”より“誰かが消してないか”**を先に疑うと早いです。
(特に、昔の要件で書かれたClient Scriptが残っていると、いまの仕様とぶつかります。)
権限・パーソナライズが関係していないか
Choiceは「表示されるもの」なので見落とされがちですが、権限と関係するケースもあります。
- Show Choice List が出ない(権限付与のされ方で制限されることがある)
- 参照・選択肢を“絞る”仕組み(Reference qualifier 等)で結果が0件になる
Reference qualifierは主に参照フィールドの話ですが、「候補を絞る」という意味では“表示されない”原因になり得ます。ドキュメントとしても、参照を返すデータをフィルタする仕組みとして整理されています。
Choice設計の考え方と運用ルール、学習
最後に、直すだけで終わらせず、再発しにくい運用のコツをまとめます。Choiceは小さな設定に見えて、運用が雑だと“静かに壊れる”カテゴリです。
Choiceを増やす前に決めておくこと
- value設計:後から変えない前提で、意味がブレない値にする
- 依存Choiceの親子関係:どのフィールドが親で、何をvalueで紐づけるかを明確化
- 継承テーブルの方針:Choiceは親に置くのか子に置くのか(検索性・運用のしやすさで決める)
Supportのベストプラクティスとしても、Choice値の扱い方や命名の注意がまとまっています。
「Choice tableを参照する」ような設計は慎重に
稀に、Choice(sys_choice)を参照フィールドで直接参照して“Choiceっぽいもの”を作る設計を見ますが、これは後々トラブルの温床になりがちです。コミュニティ記事でも、Choice table参照の注意点が語られています。
基本は素直に「Type=Choice」を使い、どうしてもマスタ化が必要なら専用テーブルを作る、という考え方の方が事故りにくいです。
体系的に学ぶなら
Choice周りのトラブルは、単発の直し方を覚えるよりも、**辞書(Dictionary)→データ(sys_choice)→UI制御(UI Policy/Client Script)**のつながりで理解すると強いです。
Udemyには、管理者向けに「フィールド設計、辞書属性、UI制御、トラブルシュート」を一通り扱う講座がいくつかあります。手を動かしながら体系的に学べる教材の一例として、**“管理者(CSA)向け入門〜設定全般”**の講座を1本持っておくと、Choiceに限らず詰まりどころの回収が早くなります(ブログ内のUdemyリンク導線に自然に置くのが相性良いです)。
本番形式で慣れるのが合格への近道。UdemyのServiceNow模擬問題集を人気順で一覧比較できます👇
Choiceが表示されない時の切り分けチェックリスト
Choiceリストが出ないときは、原因を「辞書」「sys_choice」「UI/権限」に分解すると迷子になりません。
- 辞書(Dictionary)
- フィールド型は本当にChoiceか(List/Referenceと取り違えていないか)
- Referenceをドロップダウン表示しているだけでは?(max_ref_dropdownの影響)
- 継承・Overrideで依存関係がズレていないか
- sys_choice
- 対象テーブル(name)とフィールド(element)が合っているか
- inactiveになっていないか
- 依存ChoiceならDependent valueが“value一致”しているか
- そもそもsys_choiceが欠けていないか(移送漏れ等)
- UI制御/権限
- UI Policy/Client Scriptで消していないか
- Show Choice List が出ないなど、権限由来の制限がないか
- 候補を絞る仕組みで結果が0件になっていないか(Reference qualifier等)
このチェック順で見れば、「どこが壊れているか」が見えます。直す速度も上がりますし、同じタイプの不具合が出ても再現性のある切り分けができるようになります。

