Administrator

数式項目を入力規則に使う際の注意点【セールスフォース】

Administrator
この記事は約2分で読めます。

こんにちは、アンダーソンです。
最近気づいた数式項目の評価タイミングについて書いていきます。

スポンサーリンク

数式項目おさらい

まず数式項目とは同レコードもしくはリレーションのあるレコードの項目を参照して、その項目の値を評価したり、計算したり、なにか追加して表示したりできる便利な項目です。
で、今回の注意点なんですが、ポイントは数式項目がいつ評価されて反映されるのか
というところです。
下記にテスト用のオブジェクトを用意しました。完了日【CloseDate__c】という項目に
日付が入れば数式項目の完了フラグ【CloseFlg__c】という項目にチェックが入るという
内容です。

完了日をいれると自動で完了フラグがたちました

入力規則を作ってみる

上記のようなロジックに入力規則を組み合わせてみました。
単純に一度完了フラグが立ったものは完了日を編集できないというものです。
なので、完了フラグがTrueの場合に完了日を変更するとエラーが帰る入力規則を作りました。

こんな感じで設定して先ほど登録したレコードの日付を変更しようとすると、、、

ちゃんと怒られましたね。成功です。

他のパターンも検証

編集は無事にOKでした。で次は完了日が空のレコードを編集して完了日を入れたときに
今回の注意点がきたのでした。

???完了フラグは立っていないはずなのに、なぜかエラーで返される。。。
これについてはHelpなどにも特に記述がなかったのですが、おそらく

数式項目の評価→入力規則→それ以降の評価

といった感じで続くからなのかなと思ってます。
今回の場合はそもそも完了日入れれないやんってことになり、
入力規則の内容を見直して対応することにしました。

AND(
 AND(CloseFlg__c = True,NOT(ISCHANGED(CloseFlg__c))),
 AND(CloseFlg__c = False,ISCHANGED(CloseFlg__c)),
 ISCHANGED(CloseDate__c)
)

完了フラグがTrueのときに触れないというのを追加し、なおかつ完了フラグが
変更されなかったとき=完了日がBlankになるか埋まるかのどっちかのとき
は入力規則から外れて通常通り完了日を入力できるという風にしました。

ちょっとした落とし穴かもしれませんがひっかかると結構厄介なので
ぜひ頭に入れておいてください。

コメント