本記事では、選択リストの項目の連動関係の設定時に、想定していない選択リスト値が設定されてしまった事象とその原因を備忘録として記録しています。
事象:予期せぬ選択リスト値が選択可能に
選択リストで親となる選択リスト(制御項目)と子となる選択リスト(連動項目)について、
選択リスト間で項目の連動関係を設定しました。
※以下に例として、親の選択リスト「地方区分」、子の選択リスト「都道府県」で設定
画面上では、上記の想定通りの選択リスト値が表示され、選択も可能でした。
設定完了と思ったのも束の間、困ったことにApexクラス等で選択リスト値を直接設定した際には、
項目の連動関係で設定された値以外の選択リスト値が登録されてしまう事象が発生しました。
※以下に例として、開発者コンソールから都道府県の選択リスト値を更新
以下の通りに項目の連動関係を設定していましたが、『地方区分:中国』を選択しているにも関わらず『地方区分:中国』のセットに含まれない『兵庫県』が登録出来てしまいました。
画面上では問題なく動作していたのになぜでしょうか。
どうやら選択リスト項目の設定が完璧ではなかったようです。
それでは、次にその原因について確認していきます。
原因:選択リストオプションの設定漏れ
項目の連動関係は正しく設定できていたはずなので、
他の設定を確認してみることにしました。
他の設定を確認したところ、選択リストオプションの設定に不備があることが発覚しました!
【原因】
選択リストオプションの「値セットで定義された値に選択リストを制限します」にチェックが必要でした。
とても初歩的なことですが、私にとっては盲点でした。
以下の通り、「値セットで定義された値に選択リストを制限します」にチェックした後、
開発者コンソールから選択リスト値を更新してみます。
これでApexクラス等で選択リスト値を設定した際にも、連動関係の設定で設定されていない値はエラーとなり、更新されなくなりました!
まとめ
Salesforceでは多種多様な設定が行えるという便利さの反面、適切な設定が行われていない場合には、
想定した動作を得られないこともあります。
皆さんは項目の連動関係を設定する際は、最初に連動項目となる選択リスト項目の「値セットで定義された値に選択リストを制限します」の設定を確認してみてください。