2021.03.15

Salesforceの画面フローで選択リストを活用する方法

  • このエントリーをはてなブックマークに追加
  • follow us in feedly
gettyimages (19975)

はじめに

Salesforceフローの「画面フロー」はノーコードで独自の画面を作成できるので、項目の簡易入力画面を作成する際などに重宝する機能です。
画面フローで選択リスト項目を扱う場合も、項目の配置自体は簡単に行うことができますが、デフォルト値の設定や入力チェックなど、現行のバージョンでは基本的な機能を追加実装で補う必要が出てくる場合がありますので、まとめておきたいと思います。

画面フローでの選択肢リソース

まず、画面フローにおける選択肢系のリソースは以下の種類のものがあります。

・選択肢
ラジオボタンコンポーネントや複数選択リストコンポーネントなどの画面コンポーネントで使用する選択肢を作成します。

・選択リスト選択肢セット
選択リスト項目または複数選択リスト項目の値を使用して、選択肢のセットを生成します。

・レコード選択肢セット
レコードの条件設定済みリストを使用して、選択肢のセットを生成します。

選択リストを作成する場合、メンテナンス性も踏まえて基本的には「選択リスト選択肢セット」か「レコード選択肢セット」のどちらかを使うことになるかと思いますが、デフォルト値を設定する場合などに「選択肢」を使用することになります。

選択リストのデフォルト値をセットする

項目の更新を目的とした場合、画面上に表示させる選択リストは「選択リスト選択肢セット」を使えばよさそうに思えますが、デフォルト値に現在のレコード値をセットしようとした場合は対応できません。

①選択リスト選択肢セットを作成します。

②作成したリソースを選択肢にセットしても、デフォルト値が選択できません。
デフォルト値をセットするには、「選択肢」とあわせて「レコード選択肢セット」を使用します。
オブジェクト項目の選択リストを生成するために、レコード選択肢セットを使うというのは不思議な感じがしますが、実はSalesforceでは選択リストの値を保持している[選択リスト値情報(PicklistValueInfo)]という標準オブジェクトが存在しており、こちらから必要な情報を取り出すことができます。

①事前に既存の選択リスト値を取得します。

②空欄を「--なし--」として表示する為に、取得した値を整形する数式を作成します。

③数式を元に選択肢を作成します。

④[選択リスト値情報]オブジェクトのレコードを元に、既存の選択リスト値を除外したレコード選択肢セットを作成します。

⑤選択肢とレコード選択肢リストを組み合わせて、画面コンポーネントで作成する選択リストを作成します。
選択リスト値情報からデータを呼び出す際、EntityParticleIdの値は[オブジェクトAPI名].[選択リスト項目ID]という形になっています。
項目ID というものはあまり馴染みがないかと思いますが、オブジェクトマネージャで項目を開いた際にURLに表示されているものとなります。

選択リスト項目IDの確認方法
まとめると「現在選択しているリスト値」と「現在選択しているリスト値以外」の2つをあわせて、画面に表示する選択リストを作成する、ということになります。

選択リストの入力チェックを行う

画面フローでテキストは「入力を検証」というセクションが表示され、入力する値をチェックできますが、選択リストではこの機能はありませんので、必要に応じて入力値のチェック処理を追加してあげる必要があります。

フロー上では画面コンポーネントの後処理で入力値のチェックを行うことになりますので、ユーザーに画面の再入力を促したい場合は、元の画面コンポーネントに戻る条件分岐を設定する形となります。

また、どの項目の入力内容がエラー原因であったかをユーザーに示してあげる必要がありますので、数式などでエラーメッセージを作成した上で、画面上に表示テキストで追加しておきましょう。

[設定内容]エラーメッセージ用のテキストを配置して、エラー時のみ表示される様に表示条件を設定
さらに、再入力時に画面がクリアされ、元の画面でどのリスト値を選択していたかが分からなくなってしまうと不便ですので、一度ユーザーが選択した値を保持しておき、画面の再表示時に復元するという処理も追加しておきたいところです。

これらをまとめると、以下のようなフローになります。

なお、複数選択リストの場合は、デフォルト値が一つしか選択できない関係で、デフォルト値の設定や入力エラー時の選択リスト値の復元がうまくできないという点にご注意ください。

まとめ

画面フローで選択リストを扱う場合に、追加実装が求められるポイントをまとめてみました。
Salesforceフローはバージョンアップによる機能強化のスピードも早いので、現状備わっていない機能をナレッジで共有しつつ、効果的に活用していただければと思います。
26 件
     
  • banner
  • banner

関連する記事