数式項目は値の計算ができたり、親レコードの項目を参照できたりと非常に便利ですよね。
Apexやフローを実装せずとも簡単にやりたいことが実現できてしまいます。
ただ、もちろん数式項目にも不得意なことはありまして。
今日はその数式項目の不得意なことをちゃんと認識したうえで実装しましょうね、というお話です。
1. 変更履歴を残すことができない
数式項目は項目値の変更履歴を残すことができません。
例えば、ステータスごとに値が変わる数式があったとします。
ステータス1の時の数式項目はA、ステータス2の時はB、ステータス3の時はCみたいな。
ステータスが変更されると数式項目の値も変更されるのですが、変更前の数式項目の値を辿ることはできません。
仮に今、数式項目がCだったとするとその前の値はAだったのか、Bだったのかが分からないということです。(ステータスの履歴をみればわかりはするがロジックが複雑だと確認が面倒。)
対処法
- 数式ではなくApexやフローで値を設定 & 項目履歴管理をオンにする
対処法としては数式項目ではなく、テキスト型や数値型などの項目を使用しApexやフローで値を設定します。
その項目を項目履歴管理の対象とすることで履歴のトラッキングができます。
2. スナップショットを残すことができない
数式項目ではスナップショットを残すことができません。
例えば、数式のロジックを変更するとこれまで数式で設定されていた値がすべて変更後のロジックで上書きされます。
つまり過去データがすべて置換されるということです。
また、数式項目が親レコードの項目を参照している場合、参照先の親レコードが変われば数式の値も変更後の親レコードの値になりますよね。
本当は元の親レコードの値をそのまま保持していたいのに、リレーションが変わることで最初の時点での値が変更されてしまいます。
対処法
- 数式ではなくApexやフローで値を設定
こちらの対処法も数式項目ではなく、テキスト型や数値型などの項目を使用しApexやフローで値を設定します。
ロジック変更やリレーション、他の項目値の変更に影響されず、その時点での値を保持することができます。
3. 手動編集ができない
数式項目は手動編集ができません。
システム管理者含めすべてのユーザに対して編集不可の項目となります。
自動設定はしたい、けど手動でも入力できるようにしたい、そんな場合は数式項目の使用は避けましょう。
これもApexやフローでの自動設定を検討するという形になります。
まとめ
メリット・デメリットを理解した上で、運用に合う手段を選びましょう、というお話でした。
- 変更履歴を残すことができない
- スナップショットを残すことができない
- 手動編集ができない
コメント