7-6-22. 複数選択リスト項目(入力)が配置されているデータテーブルにおいて、未変更のレコードが保存時に更新される

事象概要

事象概要

・複数選択リスト項目(入力)が配置されたデータテーブルを使用して、子オブジェクトのレコード更新を行うページにおいて、レコード保存時に項目値が未変更のレコードも更新され、Apexトリガーやフローなどが想定外のタイミングで実行されてしまう事象を検出しております。

 

再現条件&再現例

再現条件&再現例

■再現条件

・下記条件において再現いたします。

・対象ページに下記部品が配置されている

  • 複数選択リスト項目(入力)が配置されたデータテーブル

  • 保存ボタン

  ・レコードに含まれる複数選択リスト項目において、

   現在の値の設定後に選択肢の並び順が変更されている。

■再現例

 ・下記手順を例として再現します。

 

◇手順1

 ・任意のオブジェクトに複数選択リスト型項目を作成し、
 上から「1,2,3,4,5」という順番で選択肢の値を定義します。

◇手順2

・対象オブジェクトのレコードを作成します。
その際、複数選択リスト型項目には「2,3,4,5」の選択肢を値として設定します。

◇手順3

・複数選択リスト型項目の定義変更から、
選択肢の値の並び順を上から「5,4,3,2,1」に変更します。

◇手順4

・下記部品が配置されているページをデプロイし、手順2で作成したレコードをSalesforce上で保存ボタンを押下します。

  • 複数選択リスト項目(入力)が配置されたデータテーブル

  -保存ボタン

・すると、保存時のページ上の項目の値と元のレコードデータの値の並び順に下記のような差分が生じ、

項目が更新されたと検知されることで、値を変更していなくてもレコードが更新されます。

 -保存時のページ上の項目の値の並び順:5,4,3,2

 -元のレコードデータの値の並び順:2,3,4,5

 

原因および回避策

原因および回避策

・本事象は下記ページに記載のSalesforce仕様挙動に伴う事象となり、選択肢の値の並び順を変更しても、

保存済レコードの値の並び順は変更されないため生じます。

https://help.salesforce.com/s/articleView?id=000384484&type=1

・回避策として、「置換」機能を使用することで、既存の値を上書きして値の順序変更が可能となりますので、こちらにて事象回避ください。

「置換」機能の詳細は上記Salesforce公式ページを参照ください。