Salesforce 任务销售团队触发

Salesforce 任务销售团队触发,salesforce,apex,Salesforce,Apex,我正在尝试编写一个触发器,将“Name”字段(API中的WhoId)更新为与任务相关的帐户的自定义主联系人字段的“Name”(ContactId) trigger updateNameToPrimary on Task (after insert, after update) { for(Task t : Trigger.new) { t.WhoID = [SELECT Account.Id FROM Account

我正在尝试编写一个触发器,将“Name”字段(API中的WhoId)更新为与任务相关的帐户的自定义主联系人字段的“Name”(ContactId)

trigger updateNameToPrimary on Task (after insert, after update) {
    for(Task t : Trigger.new) {
        t.WhoID = [SELECT Account.Id 
                   FROM Account 
                   WHERE Id = :t.Id].Custom_Primary_Contact__c;        
    }
}
我一直在做一些测试,但认为它不起作用,也不知道为什么。只是在寻找一个方向正确的点,因为我仍在学习过程中。

将触发器从“更新后插入”更改为“更新前插入”。 像这样的

trigger updateNameToPrimary on Task (before insert, before update) {
    set<Id> accIdSet = new  set<Id>();
    for(Task t : Trigger.new) {
       if(t.AccountId!=null)
        accIdSet.add(t.AccountId);        
    }
   map<Id,Account> accMap = new map<Id,Account>([select Custom_Primary_Contact__c from Account where Id in:accIdSet]); 
   for(Task t : Trigger.new) {
        if(t.AccountId!=null && accMap.containsKey(t.AccountId))
        t.WhoID = accMap.get(t.AccountId).Custom_Primary_Contact__c;      
    }
}
在任务上触发updateNameToPrimary(插入前,更新前){
set accIdSet=new set();
for(任务t:Trigger.new){
如果(t.AccountId!=null)
accIdSet.add(t.AccountId);
}
map accMap=新地图([从Id所在的帐户中选择自定义\主要\联系人\ c:accIdSet]);
for(任务t:Trigger.new){
if(t.AccountId!=null&&accMap.containsKey(t.AccountId))
t、 WhoID=accMap.get(t.AccountId).Custom\u Primary\u Contact\u\c;
}
}