「
画面フローの繰り返しコンポーネント:ひとつの画面で複数のレコードを新規作成」ではレコードの新規作成を行いましたが、Winter'25で「事前入力された項目のコレクション」という設定項目が加わり、レコードの新規作成以外の処理もできるようになったということで、新規作成/更新/削除ができるフローを作ってみました。
長くなりますので、前編と後編に分けて記事にしました。今回は
全体の構成と削除部分の説明になります。
やりたいこと
前提
・生徒と資格情報を Salesforce上で管理している。
・主従関係によって生徒(カスタムオブジェクト)を参照する資格情報(カスタムオブジェクト)があり、Salesforceの資格取得情報を管理している。
《オブジェクト構成》
生徒(主)ー資格情報(従)
※資格情報オブジェクトの名前は自動採番。
・主要な項目は次の 5つ。
・資格情報番号(自動採番):レコード名
・生徒(主従関係):紐づいている生徒
・資格取得日(日付):認定試験に合格した日付
・資格名(選択リスト):取得した Salesforce認定資格
・状況(選択リスト):「有効」「要更新」「無効」
※更新用モジュールが公開されたら、管理者が一括で「要更新」に変更し、各ユーザーがモジュールを完了後に「有効」へ変更する。
要望
・ひとつの画面で既存(登録済み)の資格情報を確認し、あらたな資格情報の追加、既存の情報の更新、削除を行えるようにしたい。
・操作は生徒レコード上で行いたい。
設定
概要
フローの全体図です。

①既存のレコードを取得します。②繰り返しコンポーネントで構成した画面を表示します。ユーザーが作成/更新/削除の操作を行います。③②削除の操作の有無を確認し、あった場合は「Yes」、なかった場合は「No」の分岐を進みます。
④削除データをループします。
⑤削除対象のレコードIDを単一レコード変数に割り当てます。
⑥⑤の単一レコード変数を削除用のレコードコレクション変数に割り当てます。
⑦⑥を使ってレコードを削除します。
⑧②でレコードの新規作成または更新があったか確認し、あった場合は「Yes」、なかった場合は「No」の分岐を進みます。
⑨②の出力データをループします。出力データには既存の値と新規作成された値が含まれています。
⑩単一レコード変数に②の出力データの値を割り当てます。
⑪⑩の単一レコード変数を新規作成/更新用のレコードコレクションに割り当てます。
⑫⑪を使って、レコードの新規作成と更新を行います。「レコードを作成」要素の「既存のレコードを更新」オプションを使用します。
⑬操作の終了を告げるテキストと、生徒の関連リスト「資格情報」のページに遷移するリンクを配置した画面を表示します。
今回は⑦までの設定内容詳細をご説明します。
設定詳細
最初に、①の要素で必要となる変数を作成します。「
画面フローの繰り返しコンポーネント:ひとつの画面で複数のレコードを新規作成」と同様に、最終的にこのフローは生徒レコードのアクションから呼び出せるようにするため、画面からレコードの情報を取得できる変数を作成します。
レコード単一変数「recordId」-----------------------
API参照名:recordId
必ずこの値にしてください。
データ型:レコード
複数の値を許可(コレクション):チェックなし
オブジェクト:生徒
フロー外部での可用性:入力で使用可能に✓を入れます。
フロー外部(レコード画面)から値を受け渡すため、こちらにチェックが必要です。
------------------------------------------------------------
①レコードを取得:資格情報を取得
表示ラベル:資格情報を取得
組織の命名ルールに則って、わかりやすい名前を付けます。
API参照名:GetCredentials
組織の命名ルールに則って、わかりやすい名前を付けます。
このオブジェクトのレコードを取得:資格情報
資格情報のレコードを絞り込み>条件の要件:すべての条件に一致(AND)
Students__c(生徒)|次の文字列と一致する|recordId > カスタムオブジェクト ID
資格情報レコードを並び替え:並び替えなし
保存するレコード数:すべてのレコード
レコードデータの保存方法:すべての項目を自動的に保存
②画面:編集画面
画面右側のプロパティで、画面要素自体の表示ラベル、API参照名を設定します。
表示ラベル:編集画面
組織の命名ルールに則って、わかりやすい名前を付けます。
API参照名:ScreenEdit
組織の命名ルールに則って、わかりやすい名前を付けます。
フッター >ナビゲーションの設定-------------------------
状況に応じたナビゲーションのラベルに設定すると、ユーザビリティも良くなります。
今回は、「
[次へ] ボタンまたは [完了] ボタン」の設定を変更しています。

------------------------------------------------------------
繰り返しコンポーネント繰り返しコンポーネントを画面に追加します。

繰り返しコンポーネントを選択した状態で、右側の設定項目に入力していきます。

API参照名:RepeatCredentials
組織の命名ルールに則って、わかりやすい名前を付けます。
データソースの設定 >事前入力された項目のコレクション:GetCredentials 資格情報
①で取得したレコードコレクションを選択します。
項目の一位の識別子:Id
※自動的に設定されます。
表示オプションを設定 > 項目の追加または削除をユーザーに許可:
☑ユーザーは項目を追加できる
☑ユーザーは事前入力された項目を削除できる
※「ユーザーは項目を追加できる」にチェックを入れると、【追加】のアクションが画面に表示され、レコードの新規作成ができるようになります。
「ユーザーは事前入力された項目を削除できる」にチェックを入れると、【削除】のアクションが画面に表示され、レコードの削除ができるようになります。
コンポーネントの表示を設定 > コンポーネントを表示するタイミング:常に
子コンポーネント
4つの項目を表示するため、4つのコンポーネントを繰り返しコンポーネントの中に追加します。

《項目》
・資格情報番号(自動採番)※編集は不可
・資格取得日
・資格名
・状況
↓
《コンポーネント》
・テキスト
・日付
・選択肢ルックアップ
・選択リスト
それぞれのポイントに絞って内容をご説明します。
・資格情報番号(テキスト)
表示ラベル:資格情報番号
組織の命名ルールに則って、わかりやすい名前を付けます。
API参照名:CredentialsName
組織の命名ルールに則って、わかりやすい名前を付けます。
無効:True ({!$GlobalConstant.True})
値は表示しますが、編集はさせたくない場合に Trueにします。
デフォルト値:{!GetCredentials[$EachItem].Name}
「繰り返しの事前入力された項目 >資格情報番号(Name)」で↑の値を設定します。

その他はデフォルトのままです。
・資格取得日(日付)
表示ラベル:資格取得日
組織の命名ルールに則って、わかりやすい名前を付けます。
API参照名:AcquisitionDate
組織の命名ルールに則って、わかりやすい名前を付けます。
デフォルト値:{!GetCredentials[$EachItem].AcquisitionDate__c}
資格情報番号のときと同様に、「繰り返しの事前入力された項目 >資格取得日(AcquisitionDate)」で↑の値を設定します。
その他はデフォルトのままです。
・資格名(選択肢ルックアップ)
新しく「選択リスト選択肢セット」を作成します。
選択リスト選択肢セット「CertificationPicklistSet」------------------
「+新規選択肢リソース」で↓の内容で作成します。
API参照名:CertificationPicklistSet
組織の命名ルールに則って、わかりやすい名前を付けます。
オブジェクト:資格情報
データ型:選択リスト
項目:資格名(CertificationName__c)
並び替え順:項目のデフォルトの順序
---------------------------------------------------------------------------
選択肢ルックアップを設定していきます。

表示ラベル:資格名
組織の命名ルールに則って、わかりやすい名前を付けます。
API参照名:CertificationName
組織の命名ルールに則って、わかりやすい名前を付けます。
選択肢を設定 > ユーザーが複数のオプションを選択できるようにする:いいえ
選択肢:{!CertificationPicklistSet}
作成した選択リスト選択肢セットを設定します。
デフォルト値:{!GetCredentials[$EachItem].CertificationName__c}
資格情報番号のときと同様に、「繰り返しの事前入力された項目 >資格名(CertificationName)」で↑の値を設定します。
その他はデフォルトのままです。
・状況(選択リスト)
新しく「選択リスト選択肢セット」を作成します。
選択リスト選択肢セット「StatusPicklistSet」------------------
「+新規選択肢リソース」で↓の内容で作成します。
API参照名:StatusPicklistSet
組織の命名ルールに則って、わかりやすい名前を付けます。
オブジェクト:資格情報
データ型:選択リスト
項目:状況(Status__c)
並び替え順:項目のデフォルトの順序
---------------------------------------------------------------------------
選択リストを設定していきます。

表示ラベル:状況
組織の命名ルールに則って、わかりやすい名前を付けます。
API参照名:Status
組織の命名ルールに則って、わかりやすい名前を付けます。
選択肢を設定 > ユーザーが複数のオプションを選択できるようにする:いいえ
コンポーネントの種類:選択リスト
選択肢:{!StatusPicklistSet}
作成した選択リスト選択肢セットを設定します。
デフォルト値:{!GetCredentials[$EachItem].Status__c}
資格情報番号のときと同様に、「繰り返しの事前入力された項目 >状況(Status)」で↑の値を設定します。
その他はデフォルトのままです。
③決定:削除あり
表示ラベル:削除あり
組織の命名ルールに則って、わかりやすい名前を付けます。
API参照名:DeleteDataIncluded
組織の命名ルールに則って、わかりやすい名前を付けます。
結果:Yes
結果のAPI参照名:Yes
結果を実行する条件の要件:{!RepeatCredentials.RemovedItems}|空|False
「編集画面 > 繰り返しコンポーネント(API参照名で表示されます)> 削除された項目」で↑のリソースの値を設定します。
「デフォルトの結果」の表示ラベルを「No」に変更します。
④ループ:削除をループ
表示ラベル:削除をループ
組織の命名ルールに則って、わかりやすい名前を付けます。
API参照名:LoopDelete
組織の命名ルールに則って、わかりやすい名前を付けます。
コレクション変数を選択 > コレクション変数:{!RepeatCredentials.RemovedItems}
「編集画面 > 繰り返しコンポーネント(API参照名で表示されます)> 削除された項目」を設定します。
コレクションを反復処理するための方向を指定します。> 方向:最初の項目から最後の項目へ
⑤割り当て:削除データを割り当て
削除対象レコードのIdの値を割り当てる単一レコード変数を作成します。
レコード単一変数「DeleteId」-----------------------
API参照名:DeleteId
組織の命名ルールに則って、わかりやすい名前を付けます。
データ型:レコード
複数の値を許可(コレクション):チェックなし
オブジェクト:資格情報
フロー外部での可用性:チェックなし
------------------------------------------------------------
割り当ての設定を行います。
表示ラベル:削除データを割り当て
組織の命名ルールに則って、わかりやすい名前を付けます。
API参照名:AssignDeleteData
組織の命名ルールに則って、わかりやすい名前を付けます。
変数値を設定:{!DeleteRecord.Id}|次の文字列と一致する|{!LoopDelete.UniqueField__Id}
↓のようなパスで設定します。
作成した削除用単一レコード変数 >Id|次の文字列と一致する| ループ 削除をループ の現在の項目 > Id
⑥割り当て:削除コレクションに割り当て
⑤で単一レコード変数に割り当てた削除対象レコードId ×レコード件数を割り当てるコレクション変数を作成します。
レコードコレクション変数「DeleteCollection」-----------------------
API参照名:DeleteCollection
組織の命名ルールに則って、わかりやすい名前を付けます。
データ型:レコード
複数の値を許可(コレクション):チェックあり
オブジェクト:資格情報
フロー外部での可用性:チェックなし
------------------------------------------------------------
割り当ての設定を行います。
表示ラベル:削除コレクションに割り当て
組織の命名ルールに則って、わかりやすい名前を付けます。
API参照名:AssignDeleteCollection
組織の命名ルールに則って、わかりやすい名前を付けます。
変数値を設定:{!DeleteCollection}|追加|{!DeleteRecord}
↓のようなパスで設定します。
作成した削除用コレクション変数 |追加|⑤で作成しIdを割り当てた単一レコード変数
⑦レコードを削除:削除されたレコードを削除
表示ラベル:削除されたレコードを削除
組織の命名ルールに則って、わかりやすい名前を付けます。
API参照名:DeleteCredentialsRecords
組織の命名ルールに則って、わかりやすい名前を付けます。
削除するレコードを検索する方法:レコード変数またはレコードコレクション変数に保存されたIDを使用
削除するレコードを選択:DeleteCollection
⑥で作成し、削除対象Idを割り当てたコレクションを選択します。
削除の処理について、設定は終了です。
削除の処理のテスト
フローはまだ完成していませんが、最終的な削除の動作について確認した結果を載せておきます。
とある生徒さんの Salesforce認定資格取得情報です。5件の登録があります。
残念ながら、失効してしまった「認定 platform アプリケーションビルダー」を削除したいと思います😱

生徒レコードのアクションをクリックします。

削除したいレコードの右下の【削除】をクリックし、続けて【更新】をクリックします。
(実際は【削除】をクリック後すぐに画面から消えてしまいます)

表示されたリンクをクリックします。

レコードが 1件削除され、4件となりました。

つづきはこちらをご確認ください。
「
【後編】画面フローの繰り返しコンポーネント:Upsert(作成/更新)、削除を一括で行う」
関連記事
【後編】画面フローの繰り返しコンポーネント:Upsert(作成/更新)、削除を一括で行う画面フローの繰り返しコンポーネント:ひとつの画面で複数のレコードを新規作成
Winter'25 フローの選択肢ルックアップコンポーネントで複数の値を検索して保存【フロー】複数ルックアップコンポーネントを使って商談一括作成画面を作ってみたループとコレクション変数を用いたフローの作成同じパターンのレコード作成を自動化Summer'24 画面フローのAction Buttonコンポーネントでフローを呼び出す(ベータ)公開:2024年11月28日
更新①:2024年11月29日