2014-02-03 3 views
0

Я пытаюсь написать триггер, чтобы обновить поле «Имя» (так WhoId в API) до «Имя» (ContactId) пользовательского поля первичного контакта Учетной записи, связанной с ,Trigger on Task Salesforce

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

Я проводил некоторые испытания и не думаю, что это работает и не может понять, почему. Просто ищите точку в правильном направлении, поскольку я все еще участвую в процессе обучения.

ответ

0

Изменить Trigger from "after insert after update" Кому "перед вставкой перед обновлением". Нечто подобное

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