2021.01.15
Salesforce 動的フォームと動的アクションについて調べてみた
はじめに
今回はチーム活動の派生としてWinter’21のリリースで追加された動的フォーム(Dynamic Forms)、動的アクション(Dynamic Actions)について山下・田伏の共作でご紹介します。
今後、標準カスタマイズの基本思想が変化していく予兆とも言えるくらいLightningレコードページがアップデートされていますので、ぜひ最新情報キャッチのお役に立てればと思います。
※注意事項
現時点での動的フォームと、動的アクションの対象オブジェクトは下記になりますので、ご注意ください。
現時点での動的フォームと、動的アクションの対象オブジェクトは下記になりますので、ご注意ください。
動的フォーム(Dynamic Forms)の対象
・カスタムオブジェクトのみ
動的アクション(Dynamic Actions)の対象
・標準オブジェクト (デスクトップ版のみ)
取引先、ケース、取引先責任者、リード、商談 ※Spring’21で正式リリース予定
その他の標準オブジェクトは、ベータ版
・カスタムオブジェクト(デスクトップ版、モバイル版)
※モバイル版はSpring’21で正式リリース予定
・カスタムオブジェクトのみ
動的アクション(Dynamic Actions)の対象
・標準オブジェクト (デスクトップ版のみ)
取引先、ケース、取引先責任者、リード、商談 ※Spring’21で正式リリース予定
その他の標準オブジェクトは、ベータ版
・カスタムオブジェクト(デスクトップ版、モバイル版)
※モバイル版はSpring’21で正式リリース予定
動的フォームについて
まずは、動的フォームの機能をご紹介します!
選択リストの値を条件にして画面に表示する項目を変更したり、その他項目の入力を必須にしたり、という要件はよくあることかと思います。
選択リストの値の変更をトリガにプロセスビルダーなどを使用して、レコードタイプを切り替えることでページレイアウトを変更して対応するといったことは、標準機能では直感的に実装ができませんでした。
選択リストの値の変更をトリガにプロセスビルダーなどを使用して、レコードタイプを切り替えることでページレイアウトを変更して対応するといったことは、標準機能では直感的に実装ができませんでした。
そんな煩わしいことをせずに、条件によって項目やセクションを表示および非表示にすることができる機能、それが動的フォームです!!!
セクションや項目単位でコンポーネントの表示を設定し、動的フォームを設定することで、従来のレコードタイプとページレイアウトの組み合わせによる構成に比べ、ページレイアウト数を削減して、簡易的に細かな表示制御が可能です。
実際に動的フォームを設定しながら動きを見ていきたいと思います。
①事前準備
今回は、選択リストで「その他」が選択された時に、テキストの入力項目を必須として表示してみたいと思います。
まずカスタムオブジェクトに対して下記の2項目を用意します。
ページレイアウトに下記項目を追加してください。
・業種:選択リスト(AAA,BBB,CCC,その他)
・業種(その他):テキスト(255)
今回は、選択リストで「その他」が選択された時に、テキストの入力項目を必須として表示してみたいと思います。
まずカスタムオブジェクトに対して下記の2項目を用意します。
ページレイアウトに下記項目を追加してください。
・業種:選択リスト(AAA,BBB,CCC,その他)
・業種(その他):テキスト(255)
②動的フォームの有効化
オブジェクトが準備できたら、レコードページの編集ページへ移動します。
オブジェクトが準備できたら、レコードページの編集ページへ移動します。
下記画面で動的フォームを有効化していきます。
「レコードの詳細」コンポーネントを選択した状態で、「アップグレードに関するお問い合わせ」のリンクをクリックします。
「レコードの詳細」コンポーネントを選択した状態で、「アップグレードに関するお問い合わせ」のリンクをクリックします。
「次へ」を押下し、ベースとなるページレイアウトを選択します。
1セクションに項目が100以上ある場合は、100個までしか動的フォーム上に移行されないため、ご注意ください。
配置できなかった分を移行後に再度配置することは可能です。
(ただし、レコードページ上での項目配置は、ページレイアウト上での項目配置とは異なり、項目の既配置/未配置の情報がなく、項目の重複配置も可能です。項目数が多い場合には、特に移行したい項目が移行されるよう準備してから移行を実施した方が楽です。)
1セクションに項目が100以上ある場合は、100個までしか動的フォーム上に移行されないため、ご注意ください。
配置できなかった分を移行後に再度配置することは可能です。
(ただし、レコードページ上での項目配置は、ページレイアウト上での項目配置とは異なり、項目の既配置/未配置の情報がなく、項目の重複配置も可能です。項目数が多い場合には、特に移行したい項目が移行されるよう準備してから移行を実施した方が楽です。)
③動的フォーム設定
「業種」項目で”その他”が選択された場合に、「業種(その他)」項目を入力必須としていきます。
まずは、①で作成した項目「業種(その他)」を選択し、UI動作を”必須”とします。
しかしこの状態の場合、常に入力必須となってしまいます。
「業種」項目で”その他”が選択された場合に、「業種(その他)」項目を入力必須としていきます。
まずは、①で作成した項目「業種(その他)」を選択し、UI動作を”必須”とします。
しかしこの状態の場合、常に入力必須となってしまいます。
さらに設定をしていきます。
先ほどと同様に、「業種(その他)」を選択し、項目の表示条件を設定します。
「検索条件を追加」を押下し、条件を追加していきます。
先ほどと同様に、「業種(その他)」を選択し、項目の表示条件を設定します。
「検索条件を追加」を押下し、条件を追加していきます。
表示設定はレコードページのコンポーネント表示条件からデバイスがないだけです。
条件種別は、レコード項目と詳細の選択肢がありますが、レコード項目がイメージつきやすいと思いますので、今回はレコード項目の条件指定を例にご紹介します。
条件種別は、レコード項目と詳細の選択肢がありますが、レコード項目がイメージつきやすいと思いますので、今回はレコード項目の条件指定を例にご紹介します。
下記の条件で設定ができれば完了です。
条件種別:レコード項目
項目:業種
演算子:等号
値:その他
条件種別:レコード項目
項目:業種
演算子:等号
値:その他
④動作確認
「業種」で”その他”を選択している場合は、必須チェックエラーが表示され、保存できないことが確認できます。また、「業種」で”AAA”を選択すると、「業種(その他)」項目が非表示となり、保存が可能となります。
「業種」で”その他”を選択している場合は、必須チェックエラーが表示され、保存できないことが確認できます。また、「業種」で”AAA”を選択すると、「業種(その他)」項目が非表示となり、保存が可能となります。
必須項目が表示された時点で、エラーメッセージも表示されますので、必須感が強調されてユーザーフレンドリーにも感じます。
下記のように、項目に値を入力した後に項目が非表示となった場合、値がクリアされることはなく、非表示項目にデータを保持し続けているのでご注意ください。
下記のように、項目に値を入力した後に項目が非表示となった場合、値がクリアされることはなく、非表示項目にデータを保持し続けているのでご注意ください。
将来的に動的フォームを活用する新組織では、ページレイアウトは不要になると考えられます。
とはいえ、まだ網羅的に動的フォームが適用されておらず、ルックアップ項目からレコード作成が可能な場合はページレイアウトの設定が採用されますので、動的フォーム頼みにはできず、レコードページとページレイアウトの双方メンテナンスが必要となります。
その際、「空白コンポーネント」に該当するものは現時点では提供されていない点も考慮が必要です。
その他既知の問題はこちらを確認してください。
とはいえ、まだ網羅的に動的フォームが適用されておらず、ルックアップ項目からレコード作成が可能な場合はページレイアウトの設定が採用されますので、動的フォーム頼みにはできず、レコードページとページレイアウトの双方メンテナンスが必要となります。
その際、「空白コンポーネント」に該当するものは現時点では提供されていない点も考慮が必要です。
その他既知の問題はこちらを確認してください。
また、レコードページで項目を配置できるようになったと同時にテンプレート「ヘッダーと2つの等しい範囲」を採用することで、4列配置も可能になりました。
これは項目数が多いオブジェクト等で需要がありそうですね!
これは項目数が多いオブジェクト等で需要がありそうですね!
<その他検証>
①非表示項目に対して入力規則やTriggerでエラーを付与した場合
非表示項目に対して入力規則やTriggerでエラーを付与した場合も検証しました。
今回は上記で利用した、「業種(その他)」の動的フォーム側の必須条件を外し、未入力だった場合にエラーとなる入力規則を設定してみます。
下記エラーが発生し、保存することはできなくなりました。
Triggerでエラーを付与したときも同様の動きとなります。
ーーー
このページのエラーを確認してください。
入力規則でエラーが発生しました。
次の項目を確認してください
業種(その他)
ーーー
非表示項目に対してのエラー付与は、注意が必要ですね。
①非表示項目に対して入力規則やTriggerでエラーを付与した場合
非表示項目に対して入力規則やTriggerでエラーを付与した場合も検証しました。
今回は上記で利用した、「業種(その他)」の動的フォーム側の必須条件を外し、未入力だった場合にエラーとなる入力規則を設定してみます。
下記エラーが発生し、保存することはできなくなりました。
Triggerでエラーを付与したときも同様の動きとなります。
ーーー
このページのエラーを確認してください。
入力規則でエラーが発生しました。
次の項目を確認してください
業種(その他)
ーーー
非表示項目に対してのエラー付与は、注意が必要ですね。
②カスタムボタンでdefaultFieldValuesとの組み合わせ
表示条件として使われている値を作成画面で初期値として設定したところ、動的フォームの制御設定が有効であることが確認できました。
③選択リストの連動関係項目を表示条件に設定
項目の連動関係の設定がある場合、動的フォームの設定を上乗せはできませんが、表示項目を条件項目に利用することは可能でした。
④動的フォームのネスト
表示条件が設定されている項目を、別の項目の表示条件として設定することが可能であることが確認できました。
例)
チェックボックス①→チェックボックス②→テキスト
・チェックボックス①がTrueの場合のみ、チェックボックス②を表示
・チェックボックス②がTrueの場合のみ、テキストを表示
⑤複数項目表示/非表示について
複数項目を同時に表示/非表示を切り替えることは可能なことが確認できました。
表示条件として使われている値を作成画面で初期値として設定したところ、動的フォームの制御設定が有効であることが確認できました。
③選択リストの連動関係項目を表示条件に設定
項目の連動関係の設定がある場合、動的フォームの設定を上乗せはできませんが、表示項目を条件項目に利用することは可能でした。
④動的フォームのネスト
表示条件が設定されている項目を、別の項目の表示条件として設定することが可能であることが確認できました。
例)
チェックボックス①→チェックボックス②→テキスト
・チェックボックス①がTrueの場合のみ、チェックボックス②を表示
・チェックボックス②がTrueの場合のみ、テキストを表示
⑤複数項目表示/非表示について
複数項目を同時に表示/非表示を切り替えることは可能なことが確認できました。
動的アクションについて
次に動的アクションをご紹介します。
レコードページでアクションボタンの表示条件の設定が可能になります。
ここからも脱ページレイアウトのメンテナンスを見据えていることが伺えます。
表示設定はレコードページのコンポーネント表示条件と同じです。
標準ボタンも出し分け可能なため、Apexトリガでレコードの条件に合わせて編集・削除可を制御していた部分も、ボタンの出し分けで実現可能となる日が近づいているように感じます。
現在は、あくまでもレコードページの範囲であり、権限が付与されている場合、関連リストやリストビューのボタンは表示されますので、気を付けてください。
こちらも1度承認申請を行ったら、承認申請ボタンが非表示となり、再度承認申請を押せないように設定するかたちで紹介していきたいと思います。
レコードページでアクションボタンの表示条件の設定が可能になります。
ここからも脱ページレイアウトのメンテナンスを見据えていることが伺えます。
表示設定はレコードページのコンポーネント表示条件と同じです。
標準ボタンも出し分け可能なため、Apexトリガでレコードの条件に合わせて編集・削除可を制御していた部分も、ボタンの出し分けで実現可能となる日が近づいているように感じます。
現在は、あくまでもレコードページの範囲であり、権限が付与されている場合、関連リストやリストビューのボタンは表示されますので、気を付けてください。
こちらも1度承認申請を行ったら、承認申請ボタンが非表示となり、再度承認申請を押せないように設定するかたちで紹介していきたいと思います。
①事前準備
カスタムオブジェクトに、下記項目を作成します。
・ステータス:選択リスト(申請中,承認済み)
また上記のカスタムオブジェクトに対し、承認プロセスを作成します。
承認プロセスには、申請時に「ステータス」を”申請中”に、承認時に”承認済み”に値を更新する項目自動更新を作成します。
②動的アクションの設定
動的アクションを有効化します。
有効化が完了したら「強調表示パネル」を選択し、「アクションの追加」より「承認申請」アクションを追加します。
カスタムオブジェクトに、下記項目を作成します。
・ステータス:選択リスト(申請中,承認済み)
また上記のカスタムオブジェクトに対し、承認プロセスを作成します。
承認プロセスには、申請時に「ステータス」を”申請中”に、承認時に”承認済み”に値を更新する項目自動更新を作成します。
②動的アクションの設定
動的アクションを有効化します。
有効化が完了したら「強調表示パネル」を選択し、「アクションの追加」より「承認申請」アクションを追加します。
承認申請時に「承認申請」を非表示にするため、上記「承認申請」アクションに表示条件を設定します。
追加した「承認申請」アクションを押下し「検索条件を追加」します。
・条件種別:レコード項目
・項目:ステータス
・演算子:不等号
・値:申請中
条件種別では、Dynamic Formsではなかった「デバイス」の選択肢が追加されています。
今回は特に設定しませんが、デスクトップと電話(モバイル)でのアクションの出し分けも可能になっています。
追加した「承認申請」アクションを押下し「検索条件を追加」します。
・条件種別:レコード項目
・項目:ステータス
・演算子:不等号
・値:申請中
条件種別では、Dynamic Formsではなかった「デバイス」の選択肢が追加されています。
今回は特に設定しませんが、デスクトップと電話(モバイル)でのアクションの出し分けも可能になっています。
設定が完了したらレコードページを保存・有効化します。
③動作確認
「承認申請」ボタンから承認申請を行うと、ステータスが「申請中」となり、画面から「承認申請」ボタンが非表示になっていることが確認できると思います。
③動作確認
「承認申請」ボタンから承認申請を行うと、ステータスが「申請中」となり、画面から「承認申請」ボタンが非表示になっていることが確認できると思います。
<その他検証>
①主従の従側で主側の積み上げ集計値をアクションの出し分けに使えるか
主従関係の従側のアクションの表示条件として、従側から主側の積み上げ集計値を利用することが可能であることが確認できました。
①主従の従側で主側の積み上げ集計値をアクションの出し分けに使えるか
主従関係の従側のアクションの表示条件として、従側から主側の積み上げ集計値を利用することが可能であることが確認できました。
さいごに
ここまで読んでみて業務要件にぴったりな便利な機能だから取り入れたいとお考えの皆様へ
動的フォーム、動的アクションを設定したレコードページに割り当てた場合、設定前に作成されたデータも含め、表示/非表示の設定が適用されます。
新しい機能で、制限事項もありますので、既存組織に設定を施す際は、ヘルプやリリースノートを十分チェックした上で既存データ・業務に影響が出ないようくれぐれもご注意ください。
Winter'21でリリースされた動的フォーム・動的アクションの機能ですが、Spring'21では、動的アクションの対象が拡張し、動的フォーム対応ページにはさらに以下の追加機能がリリースされるようです。
・保存前の重複警告機能
・フィールドセクションを折りたたんで展開する機能
まだまだ今後、より簡単に使いやすく便利なアップデートがされることが期待できますので、適切に活用できるよう情報へのアンテナ張っていきましょう!
動的フォーム、動的アクションを設定したレコードページに割り当てた場合、設定前に作成されたデータも含め、表示/非表示の設定が適用されます。
新しい機能で、制限事項もありますので、既存組織に設定を施す際は、ヘルプやリリースノートを十分チェックした上で既存データ・業務に影響が出ないようくれぐれもご注意ください。
Winter'21でリリースされた動的フォーム・動的アクションの機能ですが、Spring'21では、動的アクションの対象が拡張し、動的フォーム対応ページにはさらに以下の追加機能がリリースされるようです。
・保存前の重複警告機能
・フィールドセクションを折りたたんで展開する機能
まだまだ今後、より簡単に使いやすく便利なアップデートがされることが期待できますので、適切に活用できるよう情報へのアンテナ張っていきましょう!
49 件