スクリプトからのみ変更可能な非算式フィールドの実装
LineEditedCountフィールドをOrderLineItemオブジェクトに追加して、編集された回数を追跡するとします。 フィールド値はデータベースに格納する必要があるため、式フィールドは適切ではありません。
まず、タイプNumberのカスタム・フィールドをオブジェクトに追加し、デフォルト値をリテラル値0
(ゼロ)に構成します。 次に、式を使用して、新しいLineEditedCount
に対して条件付きで更新可能な式を構成します:
false
これにより、ユーザー・インタフェースでは、フィールドが更新不可であることが常に確認され、値はスクリプトからのみ更新されます。 常にfalse
を返すように条件付きで更新可能な式を構成することは、「更新可能」チェック・ボックスの選択を解除することとは意味的に異なります。 後者の場合、フィールドは更新できません(ユーザー・インタフェースからもスクリプトからも更新できません)。 条件付きで更新可能な式を使用すると、更新可能性の適用はユーザー・インタフェース・レベルでのみ実行されます。
最後に、LineEditedCount
の値を導出するには、次のトリガーを追加します:
-
トリガー・オブジェクト:
OrderLineItem
-
トリガー: データベースでの更新前
-
トリガー名:
Before_Update_Adjust_Edited_Count
トリガー定義
adf.util.logStart('Before_Update_Adjust_Edited_Count')
// Get the original value of the LineEditedCount field
def origCount = getOriginalAttributeValue('LineEditedCount_c')
def newCount = origCount + 1
// Only assign the value if it's not already what we want it to be
if (LineEditedCount_c != newCount) {
LineEditedCount_c = newCount
}