You need to sign in to do that
Don't have an account?
Saurabh Thorat
execution of BeforeInsert caused by: System.ListException: List index out of bounds: 0
I'am trying to create an apex trigger for conditional autonumber on lead based on lead record type. Getting an error ''execution of BeforeInsert caused by: System.ListException: List index out of bounds: 0''. Can someone help pelase? Thanks.
trigger Autonumber on Lead (before insert, before update) {
list<Lead> lead= [SELECT Id,Name,Company,Status,Lead_Number__c FROM Lead WHERE Lead_Number__c !=:null AND Lead_Number__c > 0 order by Lead_Number__c desc limit 1];
decimal maxlead=lead[0].Lead_Number__c;
for(Lead Lead:Trigger.new){
if(lead.RecordTypeId =='0126F000001Cmgn'){
lead.Lead_Number__c = Integer.valueOf(maxlead)+1;
}
}
}
trigger Autonumber on Lead (before insert, before update) {
list<Lead> lead= [SELECT Id,Name,Company,Status,Lead_Number__c FROM Lead WHERE Lead_Number__c !=:null AND Lead_Number__c > 0 order by Lead_Number__c desc limit 1];
decimal maxlead=lead[0].Lead_Number__c;
for(Lead Lead:Trigger.new){
if(lead.RecordTypeId =='0126F000001Cmgn'){
lead.Lead_Number__c = Integer.valueOf(maxlead)+1;
}
}
}
Get record type id dynamically rather than hardcode the value
All Answers
Thanks for the response. I dont understand what you mean by that. Can you elaborate?
This query is not returning any record
list<Lead> lead= [SELECT Id,Name,Company,Status,Lead_Number__c FROM Lead WHERE Lead_Number__c !=:null AND Lead_Number__c > 0 order by Lead_Number__c desc limit 1];
So when you are trying to access its 1st value by lead[0]:
decimal maxlead=lead[0].Lead_Number__c;
its giving error
just check its size before assigning its value:
trigger Autonumber on Lead (before insert, before update) {
list<Lead> lead= [SELECT Id,Name,Company,Status,Lead_Number__c FROM Lead WHERE Lead_Number__c !=:null AND Lead_Number__c > 0 order by Lead_Number__c desc limit 1];
if(lead.size()>0) {
decimal maxlead=lead[0].Lead_Number__c;
}
for(Lead Lead:Trigger.new){
if(lead.RecordTypeId =='0126F000001Cmgn'){
lead.Lead_Number__c = Integer.valueOf(maxlead)+1;
}
}
}
Get record type id dynamically rather than hardcode the value