■前提
Salesforce Winter'18■調査内容
Salesforce の選択リスト値にある「マスタリストのデフォルト値に設定する」
のオプションは、どんなときに有効なのか調査しました。
具体的には、
デフォルト値が設定してある選択リスト項目を
Apexトリガの beforeInsert, beforeUpdate の処理で
null や空文字を指定してを実行すると、
デフォルト値の設定で上書きされないか、です
■結果
以下の場合でデフォルト選択設定が適用されるかを確認する※ ×:適用されなかった
beforeInsert で
・nullをセットした場合 ×
・空文字をセットした場合 ×
値がセットされていなくて、beforeUupdate で
・操作なし ×
・null をセットした場合 ×
・空文字をセットした場合 ×
既に値がセットされていて、beforeUpdate で
・操作なし ×
・null をセットした場合 ×
・空文字をセットした場合 ×
冷静に考えると「操作なし」の検証は、
操作していないものが update する度に
デフォルト値になってしまう仕様は現実的ではないので
調べるまでもなかったですね
■insert での操作なしについて
・レコード詳細画面に項目を配置している場合→ デフォルト値がセットされた状態で表示されます
そこで選択リストを改めて選択すれば、
もちろん選択した値が登録されます
・レコード詳細画面に項目を表示していない場合
→ そのままデフォルト値が登録されます
■結論
「マスタリストのデフォルト値に設定する」はGUI, Apex 等で積極的に値の選択がなかった場合にのみ
有効になる設定
■不具合情報
選択リスト値セットを使用した選択リスト項目のデフォルト値が動作しない
といった現象が、Winter'18にバージョンアップ以降に発生しているようです
デフォルト値をセットした選択リスト値セットを
レコードタイプを使用したオブジェクトと
レコードタイプを使用しないオブジェクトの
両方に用いると、設定したデフォルト値が動作しないようです
参考
https://success.salesforce.com/issues_view?id=a1p3A000000mCYTQA2
■10月12日追記
本日パッチがあてられたそうです
https://success.salesforce.com/issues_releases_view?release=210009001
0 件のコメント:
コメントを投稿