動的選択リスト(DCL)フィールドは、あるオブジェクトと、同じまたは異なるタイプの別のオブジェクトとの間の多対to-1外部キー参照を表します。
たとえば、TroubleTicket
オブジェクトに、トラブル・チケットを報告した特定のContact
オブジェクトへの外部キー参照を表すContact
という名前のDCLフィールドがあるとします。
DCLフィールドを定義する場合は、参照オブジェクトからプライマリ表示フィールド名を指定します。 たとえば、Contact
オブジェクトを参照するContact
動的選択リスト・フィールドを定義する際に、「担当者名」フィールドを指定できます。
Contact
のようなDCLフィールドを定義すると、1つのプライマリ・フィールドと2つのセカンダリ・フィールドが表示されます:
-
DCL表示フィールド
このプライマリ・フィールドの名前はContact_c
で、参照オブジェクトに関連するプライマリ表示フィールドの値(関連連絡先の名前など)を保持します。
-
DCL外部キー・フィールド
このセカンダリ・フィールドの名前はContact_Id_c
で、参照担当者の主キーの値が保持されます。
-
DCL関連オブジェクト・アクセサ・フィールド
このセカンダリ・フィールドの名前はContact_Obj_c
で、スクリプト・コードの関連するコンタクト・オブジェクトにプログラムでアクセスできます
関連オブジェクトの表示名以外の追加フィールドにアクセスするには、次のような関連オブジェクト・アクセサ・フィールドを使用できます:
// Assume script runs in context of TroubleTicket object
def contactEmail = Contact_Obj_c?.EmailAddress_c
関連オブジェクトから複数のフィールドを参照する場合、関連オブジェクトを変数に保存し、このオブジェクト変数を使用して複数のフィールドを参照できます:
// Assume script runs in context of TroubleTicket object
def contact = Contact_Obj_c
def email = contact?.EmailAddress_c
def linkedIn = contact?.LinkedInUsername_c
TroubleTicket
が関連付けられている連絡先を変更するには、次のいずれかの方法を使用して新しい連絡先を設定できます。 新しい担当者の主キー値がわかっている場合は、次のアプローチを使用します:
// Assume script runs in context of TroubleTicket object
def newId = /* ... Get the Id of the New Contact Here */
Contact_Id_c = newId
担当者のプライマリ表示フィールドの値がわかっている場合は、かわりに次のアプローチを使用します:
// Assume script runs in context of TroubleTicket object
Contact_c = 'James Smith'
ヒント: スクリプトが動的選択リスト・フィールドに割り当てる値(Contact_c
など)が参照オブジェクトを一意に識別する場合、外部キー・フィールドの対応する値(Contact_Id_c
など)が自動的に更新され、一致するオブジェクトの主キーが反映されます。
注意: スクリプトがDCLフィールドに割り当てる値が参照オブジェクトを一意に識別しない場合、割当ては無視です。