Salesforce opportunity更新后的apex触发器副本记录

Salesforce opportunity更新后的apex触发器副本记录,salesforce,apex,Salesforce,Apex,我对Apex和trigger写作比较陌生。以下是我试图实现的目标: 是否可以将自定义对象中的记录复制到同一对象中创建的新记录中?在我的例子中,当opportunity设置为“close won”时,我需要在名为Project_uc的自定义对象中创建一条新记录。但关键是有一个名为proj1的现有记录,其中包含需要复制到对象项目中的每个新记录中的默认数据 我知道如何在更新Opportunity后创建新记录,但我不确定如何从对象项目中获取记录proj1并复制它。任何帮助都会很好 您可以使用SOQL检索

我对Apex和trigger写作比较陌生。以下是我试图实现的目标:

是否可以将自定义对象中的记录复制到同一对象中创建的新记录中?在我的例子中,当opportunity设置为“close won”时,我需要在名为Project_uc的自定义对象中创建一条新记录。但关键是有一个名为proj1的现有记录,其中包含需要复制到对象项目中的每个新记录中的默认数据


我知道如何在更新Opportunity后创建新记录,但我不确定如何从对象项目中获取记录proj1并复制它。任何帮助都会很好

您可以使用SOQL检索默认数据项目记录,并将其克隆为将插入的新对象的基础。为此,您需要使用该方法

例如

List toUpdate=new List();
/您可能想考虑如何识别此模板记录。
//例如,使用记录Id或唯一名称进行自定义设置
//确保选择了要克隆的字段。
列表templateProjects=[Select]
Id、名称、其他自定义字段\uuu\c,这些字段应被克隆\uu\c
来自项目c,其中名称='proj1'限制1];
if(templateProjects.size()==1){
Project_u_uc templateProject=templateProjects[0];
//克隆中的默认opt_preserve_id参数不会克隆该id。
Project_u_c opportunityProject=templateProject.clone();
//根据未从模板记录克隆的Opportunity设置任何字段
opportunityProject.OpportunitySpecificCustomField__c=opp.名称;
toUpdate.add(机会项目);
}否则{
//如果没有可用的模板记录,您应该怎么做?
}
插入更新;

顺便说一句,这里有专门针对Salesforce的问题。

感谢您的帮助!!这帮我完成了扳机。
List<Project__c> toUpdate = new List<Project__c>();

// You might want to consider how you identify this template record. 
// E.g. Custom Setting with the record Id or unique name
// Make sure you select the fields you want to clone.
List<Project__c> templateProjects = [Select 
         Id, Name, OtherCustomFields__c, ThatShouldBeCloned__c 
         from Project__c where Name = 'proj1' limit 1];
if(templateProjects.size() == 1) {
    Project__c templateProject = templateProjects[0];
    // The default opt_preserve_id param in clone won't clone the Id.
    Project__c opportunityProject = templateProject.clone();

    // Set any fields based on the Opportunity that weren't cloned from the template record
    opportunityProject.OpportunitySpecificCustomField__c = opp.Name;

    toUpdate.add(opportunityProject);
} else {
     // What should you do if there isn't a template record available?
}

insert toUpdate;