フローで積み上げ集計(その2)

フローで積み上げ集計(その2)

積み上げ集計項目を最大数まで使用している場合や、参照関係で積み上げ集計をしたい場合にはフローで設定が必要です。その2では積み上げ集計の最少、最大を紹介します。
フローで積み上げ集計(その2)
40
フローで積み上げ集計(その2)
chirosuke
2022/01/14 14:27:50
フローで積み上げ集計(その1)に続いて、その2では最少と最大のフローでの設定方法を紹介いたします。



注意

その1でもご案内していますが、標準機能の積み上げ集計項目と違い、レコードトリガフローの場合は、既に稼働しているオブジェクトであれば、既存レコードに対して何かしらのメンテナンスが必要になります。データローダで一括更新や、メンテナンス対応用に別のフローを作成するなどの対応が必要です。
また、条件も稼働後に修正しても積み上げ集計項目のように既存レコード分は反映されないので、こちらもメンテナンスが必要になります。




サンプルの要件

親:取引先(Account)に、子:商談(Opportunity)のフェーズが受注の件数、金額を積み上げ集計する

サンプルの要件のような条件がない場合は、トリガの条件は「レコードが作成された」、エントリ条件の[条件の要件]は「なし」の設定で良いかと思います。また、親の参照項目の入力が必須ではないときは、「親のIdがNullでない」の条件を追加するなど、要素の条件は要件に合わせるようにしてください。




<最少、最大の設定方法>

1.[設定] → [フロー] → [新規フロー] → [レコードトリガフロー] → [自由形式]をクリック(自動レイアウトでも可。お好きな方でどうぞ)


2.開始を設定します。
 ・オブジェクト:商談(子オブジェクト)
 ・フローをトリガする条件:レコードが作成または更新された
 ・エントリ条件を設定
[条件の要件カスタム条件ロジックに一致
[条件ロジック(1 AND 2) OR (3 AND 4)

 

項目

演算子

1

StageName (条件となる項目)

次の文字列と一致する

08-受注(条件の値) 

2

StageName (条件となる項目)

変更済み

True

3

StageName (条件となる項目)

次の文字列と一致する

08-受注(条件の値) 

4

Amount (集計する項目)

変更済み

True

 ・フローを最適化:アクションと関連レコード




3.要素から[レコードを取得]をドラッグし以下のとおり設定します。
 ・オブジェクト:商談(子オブジェクト)
 ・レコードを絞り込み[条件の要件すべての条件に一致(AND)

 

項目

演算子

1

AccountId 

次の文字列と一致する

$Record > 取引先 ID

2

StageName 

次の文字列と一致する

08-受注

 ・最少の場合…レコードを並び替え[並び替え順]昇順 [並び替え] Amount(集計する項目)
 ・最大の場合…レコードを並び替え[並び替え順]降順 [並び替え] Amount(集計する項目)
 ・保存するレコード数:最初のレコードのみ
 ・レコードデータの保存方法:すべてのデータを自動的に保存




4.[レコードを取得]要素をコネクタで接続します。


5.要素から[レコードを更新]をドラッグし以下のとおり設定します。
 ・更新するレコードを検索してその値を設定する方法
            レコードを識別する条件を指定し、項目を個別に設定
 ・オブジェクト:取引先(親オブジェクト)
 ・レコードを絞り込み[レコードを更新する条件の要件すべての条件に一致(AND)

項目

演算子

Id

次の文字列と一致する

$Record > 取引先 ID(開始したレコードの親のID項目)

 ・項目値をレコードに設定

項目

MinCcontractAmount__c 

(最少または最高金額を入力する項目)

get_Opportunity 商談 > 金額

 (3.で取得したレコード(単一)変数の集計する項目)





6.[レコードを更新]要素を接続します。
 【一方のみ】


 【最少、最大両方の場合はそれぞれで取得し、レコード更新の項目値もそれぞれ設定】



7.最後にデバッグ、保存、有効化をします。


8.レコードを削除した場合のトリガのフローを作成します。
業務フロー上レコードを削除することがなければ、この手順は不要です。

 1.と4.~7.は同じ内容で、2.の開始設定3.のレコードの取得を削除用で設定します。
 [別名で保存]をクリックし、新規フローで保存して修正すると簡単です。

【2.開始設定】
・オブジェクト:商談(子オブジェクト)
・フローをトリガする条件:レコードが削除された
・エントリ条件を設定
 [条件の要件] すべての条件に一致(AND)

 

項目

演算子

1

StageName (条件となる項目)

次の文字列と一致する

08-受注



【3.レコードを取得】※削除する開始レコードを除く条件の3が追加
  ・オブジェクト:商談(子オブジェクト)
  ・レコードを絞り込み[条件の要件すべての条件に一致(AND)

 

項目

演算子

1

AccountId (条件となる項目)

次の文字列と一致する

$Record > 取引先 ID

2

StageName (条件となる項目)

次の文字列と一致する

08-受注

3

Id

次の文字列と一致しない

$Record > 商談 ID

  ・最少の場合…レコードを並び替え[並び替え順]昇順 [並び替え] Amount(集計する項目)
  ・最大の場合…レコードを並び替え[並び替え順]降順 [並び替え] Amount(集計する項目)
  ・保存するレコード数:最初のレコードのみ
  ・レコードデータの保存方法:すべてのデータを自動的に保存




【結果確認】

商談のフェーズを受注にしてみます。
RRR建築事務所株式会社の最少成約金額の「¥3,317,760」が、成約金額(最少)項目に入力され、最高成約金額の「¥12,773,280」が、成約金額(最高)項目に入力されました。




次の商品を削除して商談の金額を変更してみます。
商談「RRR建築事務所株式会社 ライセンス追加提案_20211122」の成約金額が「¥12,773,280-¥1,360,800-¥2,138,400=¥9,274,080」になり、成約金額(最高)項目にも「¥10,115,280」が入力されました。




フェーズが受注の商談を削除してみます。
最少成約金額「¥3,317,760」の商談を削除すると、成約金額(最少)項目に「¥9,274,080」が入力されました。





おまけ

フローで積み上げ集計(その1)と(その2)で紹介した積み上げ集計の件数、合計、最少、最大、平均をすべて行いたい場合は、それぞれ別々のフローを作成するのではなく、1つにまとめる必要があります。その場合は、カウンター用の変数を使用します。

フロー等に慣れていない方は少し複雑に感じてしまうかもしれませんが、カウンターを使わないと①最少金額のレコード取得②最大金額のレコード取得③合計、平均のレコード取得と3つのレコード取得要素を使用することになってしまいます。

今回は完成図と簡単な説明だけご紹介したいと思います。


【簡単な説明】
・カウンター変数のデフォルト値を1としました。
・レコードの取得の並び替えで昇順としましたので、今回はカウンターが1の時に最少成約金額を変数に割り当てしています。
・ループ処理の割り当て時にカウンターに+1をしています。
・カウンターの数がレコード取得の件数と一致したら、最大成約金額を変数に割り当てしています。
・最後に取引先の項目を件数、合計、最少、最大、平均の変数で更新するようにしています。
gilde tech(for Salesforce)」に入会しませんか?
登録すると、「gilde tech」に掲載されているSalesforceのノウハウを全部閲覧できるだけでなく、自分が知っている知識を発信し、他の会員と交流することもできます。
またSalesforceの知識習得に役立つイベント情報も得ることができます。
是非ここで得た知識を業務に活かしてください!
40
コメント