【Salesforce】入力規則が期待通りに判定されない→beforeトリガのせいかも

Salesforce

入力規則で項目が未入力であることを判定する場合、下記のように数式を書きます。

ISBLANK( TEXT( 項目 ) )

でもこれがなぜか期待通りに判定されない。確かに項目を未入力にして保存ボタンを押したのに、未入力のチェックをすり抜けてしまう。

これ、入力規則よりも先にApexトリガ(before)が処理されるために起こる事象かもしれません

公式のナレッジでも取り上げられていますが、beforeトリガはカスタム入力規則よりも先に実行されます。もしbeforeトリガで項目に何かしらの値を設定している場合、上記入力規則はfalseを返してしまいます。
自動化ルール、および、Apex トリガーはどのような順番で処理されますか?

対策としては、Apexトリガの処理内容を考慮して入力規則を作成するというのが1つですが、何の入力規則かがよく分からなくなりそうな場合にはApexトリガ側でエラー処理を行ってしまうのがシンプルかもしれません

個人的にこの事象はハマリポイントですね。気づきヅライ・・
入力規則が期待通りに動かない場合は、参照している項目の使用場所でApexTriggerが無いか見てみた方が良さそうです。

コメント

タイトルとURLをコピーしました