業務の中で一致ルールと重複ルールを設定したいと思ったけど、以下のような制約や課題があり、それを回避してみました。
一致ルールの制約:複数の参照項目を一致条件にできない。チェックボックス、数式項目は一致条件にできない。
重複ルールの課題:チェックボックスがTRUE重複はレコード保存をブロックしたいが、FALSEの重複は許可したい。→「重複ルールの条件」を使用
■背景、目的
以下のような状況がありました。
・カスタムオブジェクト内で、複数のマスタ(参照項目)が一致するレコード集団の内、印刷対象チェックボックスにチェックが入っているレコードが唯一の状態にしたい。
→複数チェックが入ることをブロックしたい。
レコードの編集や作成をブロックするということで入力規則のVLOOKUPかなと考えていましたが、ルールが複雑なこともあり最終手段としていました。
参考:入力規則でVLOOKUPを使って、カスタムオブジェクトのレコード名の重複を防ぐ
https://sf.forum.circlace.com/articles/534432046349553664
様々検討した結果、一致ルールと重複ルールをすこし変わった方法で使用することで解決ができたので紹介したいと思います。
■課題
今回の主な課題と回避策は以下の通りです。
・一致ルールで使用できる参照項目は1つまで
→フローで3つの項目をつなげ、テキスト項目に入力する
(数式項目は一致ルールで使用できない)
・チェックボックスは一致ルールで使用できない
→上記と同様にフローでテキスト項目に転記
・チェックが入っているレコードが重複した場合にエラーとしたいが、チェックが入っていない場合の重複は正常
→重複ルールの「条件」を指定■環境設定
環境:デベロッパー環境
▼事前準備
・テスト用のマスタ(カスタムオブジェクト)を3つ作成
・重複を検知したい印刷カスタムオブジェクトを作成
・印刷オブジェクトに3つの参照項目と[印刷対象]チェックボックスを作成

・3つの参照項目を1つのテキスト項目に結合し転記する、またチェックボックスの中身をテキスト項目に転記するレコードトリガーフロー(高速項目更新)を作成

▼一致ルール、重複ルール
・一致ルールを作成

・重複ルールを作成
これまで使用することがありませんでしたが今回初めてこの「条件」を指定しました。
この条件は「印刷対象チェックボックスがTRUEの時だけ重複ルール起動」という意味になります。
■実行結果
3つの参照項目が一致するレコードを3つ作成し、1つだけ印刷対象チェックボックスがTRUEになっています。


※この時印刷対象チェックボックスがFALSEのレコードでは重複ルールが起動しておらず、レコードが保存できています。
実際に印刷対象をFALSE→TRUEにしてみると…

このように正常に重複ルールが作動します。
■まとめ
一致ルールには複数の参照項目やチェックボックスが使えないデメリットがありますが、それを回避することができました。
■参考ページ
・一致ルールの一致条件
(サポートされる項目はメール、参照関係、主従関係、番号、電話番号、標準選択リスト、カスタム選択リスト (単一選択のみ)、テキスト、および URL です)
https://help.salesforce.com/s/articleView?id=sf.matching_rule_matching_criteria.htm&type=5
{{i18n("articles.view.premium")}}