スクリプトからのみ変更可能な非算式フィールドの実装
LineEditedCountフィールドをOrderLineItemオブジェクトに追加して、編集された回数を追跡するとします。 フィールド値をデータベースに格納する必要があるため、Formulaフィールドは適切ではありません。
まず、タイプ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
}