こんにちは
本橋孝昭です
今回はSalesforceフロー項目更新で入力規則を回避する方法をご紹介します
今回の内容は動画でも公開しています
参考記事は英語で分かりにくかったので日本語で分かりやすく解説しようと思います
※今回の紹介事例
例として
・商談の特定のフェーズ「Qualification」がある
・この商談フェーズに進むには手動での項目更新で進ませないようにしたい(入力規則作成)
・しかし、もしも商談項目で金額「Amount」項目が空欄でなくなった場合(項目更新が発生し金額が入力された)に、商談フェーズが自動的に「Qualification」に更新されたい(フロー作成)
という状況があったとします
要は特定の項目更新を手動では出来なくするが自動化で行いたい というものです
この場合、入力規則は単純に考えれば
AND(
ISCHANGED(StageName),
ISPICKVAL(StageName,"Qualification"))
のような数式になります
しかしながら、このような入力規則とフローでは
・手動更新でも商談フェーズが「Qualification」にはならない
のですが
・フローの自動更新でも商談フェーズが「Qualification」にならない
(フローも入力規則が働いてエラー発生)
となります
では、どうすればいいでしょうか
ここでは回避方法として以下のステップを行います
ステップ1 カスタム項目(日付時間)を商談オブジェクトに作成
カスタム項目(日付)を作成します
名前やAPI名は任意で設定してください
例として
項目名ValidationBypassDateTime
API名ValidationBypassDateTime__c
とします
そして大事なことはデフォルト値の設定です
デフォルト値は
$System.OriginDateTime
とします
※このカスタム日付項目は裏でフローの項目更新で使用するためのものですので、ページレイアウト上に表示させることはおすすめしませんが、今回はわかりやすくするためあえてページレイアウト上に表示させます
ステップ2 カスタム数式項目(チェックボックス)を商談オブジェクトに作成
次にカスタム数式項目(チェックボックス)を作成します
名前やAPI名は任意で設定してください
例として
項目名はIsVRBypassed
API名はIsVRBypassed__c
とします
数式は以下となります
BLANKVALUE(ValidationBypassDateTime__c, $System.OriginDateTime) > NOW() - 0.00005787037 /Five Seconds/
※ここのValidationBypassDateTime__cはさきほどステップ1で作成した項目のAPI参照名です
ステップ3 入力規則の修正
さきほどステップ2で作成した項目を入力規則に組み込みます
変更前入力規則
AND(
ISCHANGED(StageName),
ISPICKVAL(StageName,"Qualification"))
変更後入力規則
AND(
ISCHANGED(StageName),
ISPICKVAL(StageName,"Qualification"),
NOT(IsVRBypassed__c))
要は最後の部分に
NOT(IsVRBypassed__c)
を追加します
※IsVRBypassed__cはステップ2で作成した項目のAPI参照名です
ステップ4 フローの修正
ここではフローの修正を行います
具体的にいえば項目更新時のアクションに
ValidationBypassDateTime__c(ステップ1で作成した項目のAPI参照名)
値
{!$Flow.CurrentDateTime}
※現在の日時
を追加します
画像で示すとこのようになります
これで設定は完了です
(ステップ3の入力規則の有効化やステップ4のフローの有効化はお忘れなく!)
この設定を行えば
・この商談フェーズに進むには手動での項目更新で進ませないように設定(入力規則)
・もしも商談項目で金額「Amount」項目が空欄でなくなった場合(項目更新が発生し金額が入力された)に、商談フェーズが自動的に「Qualification」に更新される(フロー作成)
という、フローの自動更新も可能だし入力規則で手動更新を防ぐことが可能です
ぜひお試ししてみてください!
(分かりにくい部分などあれば修正しますのでご連絡ください!)