こんにちは
本橋孝昭です
今回はSalesforceフローを使い
・2つの親オブジェクトを持つ子オブジェクトで2つ同じ親オブジェクトを持つレコードを作成させない方法
についてご紹介します
今回の内容は動画でも解説しています
例としてこちらのようなオブジェクト構成がSalesforceであったとします
求人掲載オブジェクトのレコードを作成する際
・職種 レコード
・職務 レコード
を紐づけて作成しますが
1.求人掲載作成時に 職種A 職務aのレコードを紐づけて作成
→成功
2.次に求人掲載作成時に 職種A 職務aのレコードを紐づけて作成
→失敗(さきほどの1職種も職務も同じ親なので作成できないようにする)
3.次に求人掲載作成時に 職種A 職務bのレコードを紐づけて作成
→成功(職種Aと職務aは組み合わせがすでにあるが職種Aと職務bの組み合わせの求人掲載レコードは無いから)
上記のような設定ができるフローを作成します
こちらのフローを作成すれば不要な重複のようなデータを作成することを防ぐので大変便利になりますね
なお今回は分かりやすいようにフロー作成の例として
・親1は「親1オブジェクト」(Parent1__c)
・親2は「親2オブジェクト」(Parent2__c)
・子は「子オブジェクト」(Child__c)
とします
それではフローの設定画面を見ていきます
フロー全体像
フロー詳細
※最後のANDは ID 次の文字列に一致しない {!$Record.Id} です
※もちろんエラーメッセージは任意で大丈夫です
今回は例としてこのようなエラーメッセージを作成しました
親1オブジェクトと親2オブジェクトで全く同じデータのものがあります。
こちら同じものがすでにあるので保存はできないです。
同じデータはこちらです
https://wise-koala-1v6x88-dev-ed.trailblaze.lightning.force.com/lightning/r/Child__c/{!GetChild.Id}/view
なお、このURLは例でありSalesforce環境により異なります
(「wise-koala-1v6x88-dev-ed.trailblaze.」は他環境により異なります)
もしもそちらの環境で設定したい場合、子オブジェクトのレコード(なんでもいいので)を開きそのURLをコピペして貼ることが確実です
これでフローの設定は完成です
フローを有効にして、子レコード作成時に親1オブジェクトと親2オブジェクトレコードの紐づけがすでにある場合エラーを起こしレコード保存ができなくなります
そして表示されるURLを見ると作成しようとしている親1と親2がすでに紐づいている子オブジェクトのレコードが表示されます
(上記画像でいうと「親1-A」と「親2-A」が紐づく子オブジェクトのレコードがURLで表示されます)
おまけ アクションの挙動
こちらのフローのエラーメッセージはレコード作成アクション時でも発生することが確認しました
例として親1オブジェクトにこのようなアクションを作成してページレイアウトに表示させると、親1オブジェクトレコードから子オブジェクトのレコード作成が可能ですね
しかしながら、アクションからの子オブジェクトのレコード作成でも今回のような条件で子レコード作成の場合同様のエラーを発生することが可能です
今回のようなフローを作成すれば重複するようなレコード作成を防ぐことが出来そうですね
ぜひいろいろと試してみてください