【Salesforce】入力規則が期待通りに判定されない→beforeトリガのせいかも
入力規則で項目が未入力であることを判定する場合、下記のように数式を書きます。
ISBLANK( TEXT( 項目 ) ) |
でもこれがなぜか期待通りに判定されない。確かに項目を未入力にして保存ボタンを押したのに、未入力のチェックをすり抜けてしまう。
これ、入力規則よりも先にApexトリガ(before)が処理されるために起こる事象かもしれません。
公式のナレッジでも取り上げられていますが、beforeトリガはカスタム入力規則よりも先に実行されます。もしbeforeトリガで項目に何かしらの値を設定している場合、上記入力規則はfalseを返してしまいます。
自動化ルール、および、Apex トリガーはどのような順番で処理されますか?
対策としては、Apexトリガの処理内容を考慮して入力規則を作成するというのが1つですが、何の入力規則かがよく分からなくなりそうな場合にはApexトリガ側でエラー処理を行ってしまうのがシンプルかもしれません。
個人的にこの事象はハマリポイントですね。気づきヅライ・・
入力規則が期待通りに動かない場合は、参照している項目の使用場所でApexTriggerが無いか見てみた方が良さそうです。
