Winter '23 リリースノートにあった、
フロー画面でのレコードタイプによる選択リストの絞り込み機能。
これまではレコードタイプ選択用の選択リストを1つずつ作成して、プロファイルごとに出し分けしていたので、
便利そうだなと思い、試そうとしましたがいまいち使い方がわからず、検証も兼ねて触ってみた結果を載せてみます。以下ヘルプ
フローの動的リストを使用するときに関連する選択リスト値のみが表示されるようになりました。以前は、レコードタイプが指定されているかどうかに関係なく、項目のすべての選択リスト値が表示されていたため、関係のない値が表示されることがありました。
対象: この変更は、Essentials Edition、Professional Edition、Enterprise Edition、Performance Edition、Unlimited Edition、および Developer Edition の Lightning Experience と Salesforce Classic に適用されます。
方法: レコードタイプで選択リスト値を絞り込むには、画面要素で選択リストを使用する前にレコード変数のレコードタイプ ID を設定します。選択リスト値は、実行時にそのレコードタイプで絞り込まれます。引き続き項目のすべての選択リスト値を表示するには、代わりに選択リスト選択肢セットを使用します。または、使用するレコードリソースで、レコードタイプ ID を設定しないようにします。
とりあえずレコード変数にレコードタイプIDを設定した後に、動的リストを使えばよさそうなんですが、「動的リスト」なんてコンポーネントあったかな?と思い、色々画面フローを触ってみたところ、以下のような使い方ではないかと思われました!
もし使い方違っている場合はご指摘お願いいたします!
■事前準備
・カスタムオブジェクトに2つのレコードタイプと選択リストを2種類ずつ割当
レコードタイプA(0125h000000zSwjAAE)
└選択リスト:A-111、A-222
レコードタイプB(0125h000000zSwoAAE)
└選択リスト:B-333、B-444
■フローの設定
レコード(変数):var_testRecord
※フローは検証の為、至ってシンプルに。
まず、レコードタイプID割当で、
レコード(変数):var_testRecord のレコードタイプIDをレコードタイプA(0125h000000zSwjAAE )を指定
次に、画面要素で、コンポーネントではなく
項目 >レコード変数> var_testRecord > 選択リスト を画面フローへ配置

この状態で、デバッグを行って選択リストがレコードタイプAの
選択リスト:A-111、A-222 に絞られているか確認してみます。

きちんとレコードタイプAの
選択リスト:A-111、A-222 に絞られています。
次に、レコードタイプBのレコードタイプIDを割り当ててみた場合ですが、

上記のように、レコードタイプBの選択リスト:B-333、B-444に絞られていました。
もう1つ前にレコードタイプを選択する画面フローを挟み、レコードタイプIDの割当を行っておけば、選択リスト値の修正があった場合もメンテナンス不要の画面フローができそうです!
※レコードタイプの増減があった場合は修正しましょう
ただし、上記ヘルプに乗っていたようにこれが「動的リスト」の使い方なのかと言われると疑問ですが、英語のヘルプにはもう1つ画面フローについての記事がありました。(日本語ヘルプは、この部分だけ無し)
Record Fields on Flow Screens ConsiderationsBefore you add fields from your Salesforce objects directly to your flow screens, understand these record field considerations and behaviors.
Considerations
Record fields use record variables to determine which fields can be placed on a flow screen and their configuration.
To use a record field’s existing value, use a Get Records element for the record variable.
Record fields don’t support the default values of their source fields. If a record field’s source field has a default value, the record field is blank.
If the field contains a value in the record variable, that value is set in the screen at runtime as a default value.
Just like other fields on a screen, record fields don’t save data automatically. To save the record variable, use a Create Records or Update Records element.
You can’t reference record fields in other areas of your flow such as formulas, decisions, and conditional visibility. Instead, reference the record variable you used to create the record field.
In the record field details, the values in Update Compatible and Create Compatible reflect the properties of the field and your permissions. The values don’t reflect the permissions of the users running the flow.
Record fields support dependent picklists only if the dependent field is on the same screen as its controlling field.
System context doesn’t apply to record fields. If a user doesn’t have access to a record field, they can’t see it in a flow.
Record fields aren’t supported in screen flows on Experience Cloud sites that use Lightning Web Runtime (LWR).
Record fields use the label returned by UI API, which can differ from the labels that appear on record pages and in Object Manager. For record fields of the Name data type, the label appears as Full Name instead of Name for most objects.
If the value of a Name subfield is changed at runtime, the new value is set, and the subfield shows the new value. But the full Name record field still shows the original value.
DeepL翻訳
フロー画面上のレコードフィールドの考慮事項
Salesforceオブジェクトのフィールドをフロー画面に直接追加する前に、レコードフィールドの考慮事項と動作について理解しておいてください。
考慮事項
レコードフィールドは、レコード変数を使用して、フロー画面上に配置できるフィールドとその構成を決定します。
レコードフィールドの既存の値を使用するには、レコード変数に対してレコードを取得する要素を使用します。
レコードフィールドは、そのソースフィールドのデフォルト値をサポートしない。レコードフィールドのソースフィールドにデフォルト値がある場合、そのレコードフィールドは空白になる。
フィールドがレコード変数に値を含んでいる場合、その値はデフォルト値として実行時にスクリーンに設定される。
画面上の他のフィールドと同様に、レコード・フィールドは自動的にデータを保存しない。レコード変数を保存するには、Create RecordsまたはUpdate Recordsの要素を使用します。
数式、決定、条件付き可視性など、フローの他の領域でレコードフィールドを参照することはできません。代わりに、レコードフィールドを作成するために使用したレコード変数を参照します。
レコードフィールドの詳細で、Update CompatibleとCreate Compatibleの値は、フィールドのプロパティとあなたの権限を反映しています。この値は、フローを実行するユーザーの権限を反映するものではありません。
レコードフィールドは、従属フィールドがその制御フィールドと同じ画面にある場合にのみ、従属ピックリストをサポートします。
システムコンテキストはレコードフィールドに適用されません。ユーザーがレコードフィールドへのアクセス権を持っていない場合、フロー内でそのフィールドを見ることはできません。
レコード フィールドは、Lightning Web Runtime (LWR) を使用する Experience Cloud サイトの画面フローではサポートされていません。
レコード フィールドは UI API によって返されるラベルを使用しますが、これはレコード ページおよびオブジェクト マネージャに表示されるラベルとは異なる場合があります。Nameデータ型のレコードフィールドの場合、ほとんどのオブジェクトで、ラベルはNameではなくFull Nameとして表示されます。
Name サブフィールドの値が実行時に変更されると、新しい値が設定され、サブフィールドに新しい値が表示されます。しかし、フルネームレコードフィールドはまだ元の値を表示している。
www.DeepL.com/Translator(無料版)で翻訳しました。
というように、レコード(単一)変数から項目を配置した場合は、動的に情報を引きついでくれるようなので、この項目の配置が、動的リストなのではないかなと思っています。
通常の選択リストコンポーネント配置では実現不可能なので、おそらくこの方法ではないかなと思って検証してみましたが、使い方間違っている!ということであればご指摘お願いいたします!
{{i18n("articles.view.premium")}}