2012-02-28 3 views
3

У меня есть простой триггер, который вытаскивает данные из ведущего объекта и помещает его в пользовательский объект «Финансы» при создании или обновлении руководства. По какой-то причине Trigger.new [i] .Id возвращает NULL в триггере, который запускается перед вставкой.Ведущий триггер перед вставкой не возвращает lead.Id

я схожу с ума, потому что я не вижу никаких причин, почему Id будет NULL ... Вот мой код:

trigger FinanceNew on Lead (before insert) { 

Map<String,User> userList = new Map<String,User>{}; 

// Places each returned user into a map with their sfID as the key 
for(User tmp : [SELECT Id,Name,Email,Phone FROM User]){ 
    userList.put(tmp.Id,tmp); 
} 

for(integer i = 0; i<Trigger.new.size(); i++){ 

    string leadName = null; 

    if(Trigger.new[i].FirstName != ''){ 
     leadName = Trigger.new[i].FirstName + ' ' + Trigger.new[i].LastName; 
    }else{ 
     leadName = Trigger.new[i].LastName; 
    } 

    User ownerInfo = userList.get(Trigger.new[i].OwnerId); 

    ID leadId = Trigger.new[i].Id; // THIS IS RETURNING NULL!! 

    Finance__c financeRecord = new Finance__c(

     Name = leadName, 
     Lead__c = leadId, 
     Lead_Email__c = Trigger.new[i].Email, 
     Lead_Phone__c = Trigger.new[i].Phone, 
     Lead_Owner_Name__c = ownerInfo.Name, 
     Lead_Owner_Email__c = ownerInfo.Email, 
     Lead_Owner_Phone__c = ownerInfo.Phone 

    ); 

    insert financeRecord; 

    } 

} 

Спасибо заранее за любую помощь, оказанную!

Джош

ответ

9

По какой-то причине Trigger.new [я] .id возвращает NULL в триггере, который выстреливает перед тем вставкой.

В документах SFDC нет идентификаторов, прежде чем они будут вставлены. Процесс вставки создает идентификатор. Вероятно, вы захотите использовать его после вставки.

+0

Я чувствую себя абсолютным шутом. Это была проблема. Благодаря! – VictorKilo

Смежные вопросы