Using the Related Object Accessor Field to Work with a Referenced Object
When writing business logic for an object like TroubleTicket
that has a
lookup field like Contact
or AssignedTo
, you can access the
object referenced by the lookup field using the respective lookup field's secondary related
object accessor field.
See Understanding Secondary Fields Related to a Dynamic Choice List Field for more information on this.
For the Contact
and AssignedTo
lookup fields, the secondary
related object accessor fields are named Contact_Obj_c
and
AssignedTo_Obj_c
, respectively. The example below shows how to reference
the two lookup objects from script written in the context of TroubleTicket
,
and access one of each's fields. It is best practice to always store the referenced lookup
object in a local variable as shown in the example below. This ensures that no matter how many
fields you access from the related object you only retrieve it once.
// Store the contact object and assignedTo object in a local variable
def customer = Contact_Obj_c
def supportRep = AssignedTo_Obj_c
// Now reference one or more fields from the parent
if ((endsWith(customer?.EmailAddress_c,'.gov') ||
endsWith(customer?.EmailAddress_c,'.com')
)
&&
(startsWith(supportRep?.PhoneNumber_c,'(202)')||
startsWith(supportRep?.PhoneNumber_c,'(206)')
)
)
{
// Do something here because contact's email address
// is a government or business email and assigned-to
// support rep is in 202 or 206 Washington DC area code
}
Notice that since the dynamic choice list fields Contact_c
and
AssignedTo_c
might be optional, their value may be null
and consequently the value of the related object accessor may be null
, too.
This is why the example is using the Groovy safe navigation operator (?.
) to
reference fields of the related object in case either related object might be
null
.