我想克隆Profile__c记录。领导者有一个与之相关的profile__c。转换发生时,潜在客户的Profile_c将复制到创建的帐户。我需要做的是在转换后创建的新帐户上深入克隆Profile__c。我可以复制profile_c但克隆会抛出此错误:
错误:System.DmlException:更新失败。第0行的第一个例外,ID为00QJ0000007dDmHMAU;第一个错误:CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY,profile:执行AfterUpdate导致:System.DmlException:插入失败。第0行的第一个例外;第一个错误:CANNOT_UPDATE_CONVERTED_LEAD,无法引用转换后的引导:[] Trigger.profile :,第1列:[](系统代码)
trigger profile on Lead (after update) {
Map<Id, Lead> cl = new Map<Id,Lead>();
Lead parent;
List<Contact> clist = new List<Contact>();
Set<Id> convertedids = new Set<Id>();
//list of converted leads
for (Lead t:Trigger.new){
Lead ol = Trigger.oldMap.get(t.ID);
if(t.IsConverted == true && ol.isConverted == false)
{
cl.put(t.Id, t);
convertedids.add(t.ConvertedContactId);
}
}
Set<Id> leadIds = cl.keySet();
List<Profile__c> mp = [select Id, lock__c, RecordTypeId, reason__c, End_Date__c,startus__c , Opportunity__c, Account__c, Lead__c from Profile__c where Lead__c in :leadIds];
List<ID>AccountIDs = new List<ID>();
List<Profile__c>clonedList = new list<Profile__c>();
for (Profile__c mpi:mp){
parent = cl.get(mpi.Lead__c );
mpi.opportunity__c = parent.ConvertedOpportunityId;
mpi.account__c = parent.ConvertedAccountId;
AccountIDs.add(parent.ConvertedAccountId);
Profile__c profile = mpi.clone(false,true,false,false);
clonedList.add(profile);
mpi.lock__c= true;
mpi.reason__c= 'Converted';
}
update mp;
insert clonelist
}
答案 0 :(得分:0)
转换导线后,我们无法对导线执行任何操作。 您尝试更新转换后的线索所做的任何操作都会给您带来错误。
答案 1 :(得分:0)
您正在执行插入操作(插入clonelist),您在其中访问字段中的Converted lead Id值。您不能在DML操作中使用转换后的LeadId字段。 以下是可行的示例代码 -
trigger ConvertedLead_Trigger on Lead (after update) {
Map<Id, Lead> cl = new Map<Id,Lead>();
Lead parent;
List<Contact> clist = new List<Contact>();
Set<Id> convertedids = new Set<Id>();
//list of converted leads
for (Lead t:Trigger.new){
Lead ol = Trigger.oldMap.get(t.ID);
if(t.IsConverted == true && ol.isConverted == false)
{
cl.put(t.Id, t);
convertedids.add(t.ConvertedContactId);
}
}
Set<Id> leadIds = cl.keySet();
List<ConvertLeadTest__c> mp =[Select Id,Name,Lead__c, Account__c,Opportunity__c from ConvertLeadTest__c where Lead__c in :leadIds];
List<ConvertLeadTest__c> mp1=new List<ConvertLeadTest__c>();
List<ConvertLeadTest__c> mp2=new List<ConvertLeadTest__c>();
for(ConvertLeadTest__c cc:mp)
{
if(cl.containsKey(cc.Lead__c))
{
cc.Account__c=cl.get(cc.Lead__c).ConvertedAccountId;
cc.Opportunity__c=cl.get(cc.Lead__c).ConvertedOpportunityId;
mp1.add(cc);
mp2.add(new ConvertLeadTest__c(Account__c=cl.get(cc.Lead__c).ConvertedAccountId,Opportunity__c=cl.get(cc.Lead__c).ConvertedOpportunityId));
}
}
update mp;
insert mp2;
}
但是如果你写的话 ConvertLeadTest__c(Lead__c = cc.Lead__c,Account__c = cl.get(cc.Lead__c).ConvertedAccountId,Opportunity__c = cl.get(cc.Lead__c).ConvertedOpportunityId)); 那么它会抛出错误。
希望这会对你有所帮助。
谢谢:)
答案 2 :(得分:0)
最终为我做的是转换后,我抓住了convertedAccountIds。由于我在转换后已将Profile__c复制到帐户,因此我只是在那里克隆了配置文件,并且必须将该配置文件的前导设置为null,因为它无法更新