1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Salesforce】数式を参照する入力規則でハマったポイント

Posted at

導入

常識かもしれませんが、入力規則の中でも数式項目を参照できます。

本記事では、上代 × 下代率を算出する数式項目と、その数式項目を変更不可に制御する入力規則が存在する状態で説明します。
image.png
image.png

この状態だと、UnitPrice__c * CostRate__cの結果が変更される場合に入力規則によって保存が中断されます。
そのためUnitPrice__cCostRate__cを個別で監視する必要がなく、下記の例では下代が¥500以外の値となる場合に中断されます。

  • 例1:上代を¥1,000 → ¥2,000に変更
    image.png

  • 例2:下代率を50% → 100%に変更
    image.png

本題

上代を¥333に設定した状態で、何も変更を加えずに保存を掛けると怒られます。
何も変更してないのに何故。
image.png

結論としては、数式項目の「小数点の位置」が原因でした。
入力規則の実行時に¥167と¥166.5で比較検証されるため、ISCHANGED(CostPriceFormula__c)だと値が変更扱いになるようです。
数式項目はアクセスされる度に値が計算されると思っていたのですが、小数点の位置など補助的な設定は別ということですかね、、

対策

入力規則内で、四捨五入を行った値に対して検証を行えばOKです。
PRIOVALUE(変更前の値)と現在の値がそれぞれ四捨五入された後に比較されることで、小数点切り捨てによる値の不一致が解消されます。
image.png

結果としてはとても単純な解決方法ですが、この現象に直面した時は何が起こっているのか分からずかなり混乱しました、、
入力規則が想定外の動きをする場合に、今回挙げた例が参考になれば幸いです!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?