Triggers salesforce触发器中的opportunitycontactrole

Triggers salesforce触发器中的opportunitycontactrole,triggers,salesforce,apex-code,Triggers,Salesforce,Apex Code,我正在使用apex触发器,在选择“联系人”时不断出现错误 我已经尝试了很多这种代码的不同配置,但我就是无法让它工作。 forceide说在opportunitycontactrole上没有联系 我没有主意了 以下是我目前的代码: 触发Opportunity上的add_primary_advisor(插入后、更新后){ List primaries=newlist() 由于您没有提供确切的错误,我假设错误是因为您试图将一个不存在的变量“Contact”添加到您的“primaries”列表中。您可能

我正在使用apex触发器,在选择“联系人”时不断出现错误 我已经尝试了很多这种代码的不同配置,但我就是无法让它工作。 forceide说在opportunitycontactrole上没有联系 我没有主意了

以下是我目前的代码:

触发Opportunity上的add_primary_advisor(插入后、更新后){ List primaries=newlist()


由于您没有提供确切的错误,我假设错误是因为您试图将一个不存在的变量“Contact”添加到您的“primaries”列表中。您可能希望添加的是“o.Contact”。

转到OpportunityContactRole,检查Contact是否存在。可能是Contact\u C更可能存在


SOQL查询确实存在问题。

联系人不是OpportunityContactRole上的有效字段

此对象仅将对Contact的引用存储为ContactId

如果您想从OpportunityContactRole访问联系人的字段,可以通过交叉引用其字段进行访问,如下所示

List<Contact> primaries = new List<Contact>();
for(Opportunity o:
    [Select Contact.FirstName, Contact.LastName, Contact.Email
     From OpportunityContactRole
     Where OpportunityContactRole='Staff' and isPrimary='True']) {
   primaries.add(new Contact(FirstName=o.Contact.FristName, 
            LastName = o.Contact.LastName, Email =o.Contact.Email));
}    
List primaries=newlist();
对于(机会o:
[选择Contact.FirstName、Contact.LastName、Contact.Email
来自OpportunityContactRole
其中OpportunityContactRole='Staff'和iPrimary='True'])){
primaries.add(新联系人)(FirstName=o.Contact.FristName,
LastName=o.Contact.LastName,Email=o.Contact.Email));
}    
List<Contact> primaries = new List<Contact>();
for(Opportunity o:
    [Select Contact.FirstName, Contact.LastName, Contact.Email
     From OpportunityContactRole
     Where OpportunityContactRole='Staff' and isPrimary='True']) {
   primaries.add(new Contact(FirstName=o.Contact.FristName, 
            LastName = o.Contact.LastName, Email =o.Contact.Email));
}