Adsenseコード

2017-10-11

【Salesforce】選択リスト値のデフォルト設定はいつ有効なのか

■前提

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 件のコメント:

コメントを投稿