1.計算式が実行される順序
計算式項目を利用する場合、計算される順番が重要になります。順番に沿った設計でない場合、アプリが意図しない挙動になってしまいます。そのため、計算順序を知ることは便利なアプリの開発につながります。
計算式項目は下記の4つに分類され、順番に実行されます。
- サブレコード内の計算
- サブレコードの値をメインレコードに渡す計算
- メインレコード内の計算
- メインレコードの値をサブレコードに渡す計算
これらの分類の中で、上から並べられている順番通りに計算が実行されます。
ここからは各分類ごとの例を紹介します。
1.サブレコード内の計算
サブレコードの値を使って、サブレコードの値を算出する計算式項目が最初に計算されます。具体例としては、下記画像のように合計金額をサブレコードごとに算出したい場合などが挙げられます。
2.サブレコードの値をメインレコードに渡す計算
次に実行されるのは、サブレコードの値を使って、メインレコードの値を算出する計算式項目です。具体例としては、下記画像のようにそれぞれのサブレコードの値の合計値をメインレコードに算出したい場合などが挙げられます。
3.メインレコード内の計算
その次に、メインレコードの値を使って、メインレコードの値を算出する計算が実行されます。具体例としては、下記画像のようにサブレコードの値の合計値に何かしらの計算を行いたい場合などが挙げられます。
4.メインレコードの値をサブレコードに渡す計算
最後に、メインレコードの値を使って、サブレコードの値を算出する計算が実行されます。具体例としては、下記画像のようにメインレコードの文字列をサブレコードに自動入力したい場合などが挙げられます。
2.計算が失敗する例
計算が失敗してしまう主なパターンとして、下記のような計算順序を想定している場合が挙げられます。
- メインレコードの値を使って、サブレコードの値を算出(順序4)
- 算出したサブレコードの値を使って、さらに計算を実行しようとする(順序1〜3)
具体例としては、下記画像のように
- メインレコードの「割引率」の値を使って、サブレコードの「割引率」の値を算出(順序4)
- サブレコードの「合計金額(税込)」「割引率」の値を使って、サブレコードの「割引後金額」の値を算出(順序1)
- サブレコードの「割引後金額」の合計値を使って、メインレコードの「総計金額(税込)」の値を算出(順序2)
と計算されることが期待される構成です。
例外的にサブレコード登録時はこれらが動作しますが、レコード編集時には順序通りに計算が実行されます。そのため、仮にメインレコードの「割引率」の値を変更しても、サブレコードの「割引後金額」やメインレコードの「総計金額(税込)」には更新が掛かりません。
そのため、レコード編集する可能性のあるメインレコード項目を使って、サブレコードの項目の値を算出する設計は、非推奨となります。
3.計算が実行されるタイミング
上述した計算は、下記のタイミングにて実行されます。
- メイン・サブレコードを登録・修正した後
- サブレコードを削除した後
- 一括登録機能を実行した後
- レコード一覧画面からメイン・サブレコードを一括削除した後
- アプリ間連携で、計算式に絡む参照先の値が変更された後
関連記事:レコードの登録(個別登録)
関連記事:レコード一括登録方法