Salesforce 插入前的Lead触发器不返回Lead.Id

Salesforce 插入前的Lead触发器不返回Lead.Id,salesforce,apex-code,Salesforce,Apex Code,我有一个简单的触发器,它从lead对象中提取数据,并在创建或更新lead时将其放入自定义的“Finance”对象中。出于某种原因,触发器.new[i].Id在插入之前触发的触发器中返回NULL 我快发疯了,因为我看不出Id为空的任何原因。。。这是我的密码: trigger FinanceNew on Lead (before insert) { Map<String,User> userList = new Map<String,User>{}; // Places

我有一个简单的触发器,它从lead对象中提取数据,并在创建或更新lead时将其放入自定义的“Finance”对象中。出于某种原因,触发器.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;

    }

}
触发Lead上的新融资(插入前){
Map userList=新映射{};
//将每个返回的用户以其sfID作为键放置到映射中
对于(用户tmp:[从用户处选择Id、姓名、电子邮件、电话]){
userList.put(tmp.Id,tmp);
}
对于(整数i=0;i
出于某种原因,触发器.new[i].Id在插入之前触发的触发器中返回NULL


SFDC记录在插入之前没有ID。插入过程会创建ID。您可能希望在插入之后使用。

我感觉自己像个十足的小丑。这正是问题所在。谢谢!