触发任务Salesforce

时间:2014-02-03 05:06:38

标签: salesforce apex

我正在尝试编写一个触发器来更新“名称”字段(因此API中的WhoId)到与任务相关的帐户的自定义主要联系人字段的“名称”(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;        
    }
}

我一直在做一些测试,不认为它有效,也无法找出原因。只是在正确的方向上寻找一个点,因为我仍处于学习过程中。

1 个答案:

答案 0 :(得分:0)

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

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;      
    }
}