2012-02-28 2 views
3

리드 객체에서 데이터를 가져 와서 리드를 생성하거나 업데이트 할 때 사용자 정의 "Finance"객체에 배치하는 간단한 트리거가 있습니다. 어떤 이유로 Trigger.new [i] .Id는 삽입 전에 트리거되는 트리거에서 NULL을 반환합니다.리드를 삽입하지 않기 전에 리드를 반환합니다 .Id

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; 

    } 

} 

주어진 사전에 어떤 도움을 주셔서 감사합니다 :

나는 이드 NULL 것이 어떤 이유를 볼 수 없기 때문에 내가 미친거야 ... 여기 내 코드입니다! 어떤 이유 조쉬

답변

9

상기 Trigger.new은 [I] .ID 인서트 발사 전에 트리거 NULL로 복귀된다.

SFDC 레코드는 삽입되기 전에 ID가 없습니다. 삽입 과정에서 ID가 생성됩니다. 삽입 후 사용하는 것이 좋습니다.

+0

나는 절대 절경처럼 느껴진다. 이것은 정확히 문제였습니다. 감사! – VictorKilo

관련 문제