Salesforce 如何在Apex触发器中从记录中拉入字段

Salesforce 如何在Apex触发器中从记录中拉入字段,salesforce,apex,apex-trigger,salesforce-development,salesforce-developer,Salesforce,Apex,Apex Trigger,Salesforce Development,Salesforce Developer,我试图找出如何创建一个Apex触发器,根据机会类型触发不同的类。我在下面添加了我认为会起作用的内容,但它似乎不像我想象的那样拉动了领域。有人能告诉我如何从更新的记录中提取值吗?非常感谢您的帮助,因为我正在努力尽快修复此问题 trigger OrderRollupSummaryTrigger on Order_Location_Package__c (after insert, after update, after delete, after undelete) { if (Order_Loc

我试图找出如何创建一个Apex触发器,根据机会类型触发不同的类。我在下面添加了我认为会起作用的内容,但它似乎不像我想象的那样拉动了领域。有人能告诉我如何从更新的记录中提取值吗?非常感谢您的帮助,因为我正在努力尽快修复此问题

trigger OrderRollupSummaryTrigger on Order_Location_Package__c (after insert, after update, after delete, after undelete) {

if (Order_Location_Package__c.Order_Sheet__c.Opportunity__c.Type = 'NEW' || Order_Location_Package__c.Order_Sheet__c.Opportunity__c.Type = 'Renewal') {
    if (trigger.isAfter && (trigger.isInsert || trigger.isUpdate || trigger.isUndelete)) {
        OrderLocationRollupSummary.rollupOrderPackages(trigger.new);
    }
    else if (trigger.isAfter && trigger.isDelete) {
        OrderLocationRollupSummary.rollupOrderPackages(trigger.old);
    }
}

else if (Order_Location_Package__c.Order_Sheet__c.Opportunity__c.Type != 'NEW' || Order_Location_Package__c.Order_Sheet__c.Opportunity__c.Type != 'Renewal') {
    if (trigger.isAfter && (trigger.isInsert || trigger.isUpdate || trigger.isUndelete)) {
        OrderLocationRollupSummaryOther.rollupOrderPackages(trigger.new);
    }
    else if (trigger.isAfter && trigger.isDelete) {
        OrderLocationRollupSummaryOther.rollupOrderPackages(trigger.old);
    }
}
}

谢谢

经过大量阅读,我找到了最好的方法。特别是使用公式字段(以避免触发器中的SOQL查询)

trigger OrderLocation RollupSummaryTrigger on Order\u Location\u Package\u\c(插入后、更新后、删除后、取消删除后){
List OrderLocationPackageNewAllist=新列表();
List OrderLocationPackageTherList=新列表();
//根据条件检查并将记录添加到列表中
if(trigger.isAfter&(trigger.isInsert | | | trigger.isUpdate | | trigger.isUndelete)){
用于(订单、位置、包装、olp:trigger.new)
如果(olp.Opportunity_Type_uc=='NEW'| | olp.Opportunity_Type_uc=='Renewal')
OrderLocationPackageNewAllist.add(olp);
其他的
OrderLocationPackageTherList.add(olp);
}
else if(trigger.isAfter&&trigger.isDelete){
用于(订单、位置、包装、olp:trigger.old)
如果(olp.Opportunity_Type_uc=='NEW'| | olp.Opportunity_Type_uc=='Renewal')
OrderLocationPackageNewAllist.add(olp);
其他的
OrderLocationPackageTherList.add(olp);
}
//将要处理的记录发送到RollupSummary类
if(orderLocationPackageNewAllist!=null&&!orderLocationPackageNewAllist.isEmpty())
OrderLocationRollupSummary.rollupOrderPackages(OrderLocationPackageNewAllist);
//将不符合条件的记录发送到其他RollupSummary类
if(orderLocationPackageTherList!=null&!orderLocationPackageTherList.isEmpty())
OrderLocationRollupSummaryOther.rollupOrderPackages(orderLocationPackageOtherList);
}
trigger OrderLocationRollupSummaryTrigger on Order_Location_Package__c (after insert, after update, after delete, after undelete) {
    
    List<Order_Location_Package__c> orderLocationPackageRenewalList = new list<Order_Location_Package__c>();
    List<Order_Location_Package__c> orderLocationPackageOtherList = new list<Order_Location_Package__c>();

    //Check and add the records to list based on condition
    if (trigger.isAfter && (trigger.isInsert || trigger.isUpdate || trigger.isUndelete)) {
        for(Order_Location_Package__c olp: trigger.new)
            if(olp.Opportunity_Type__c == 'NEW' || olp.Opportunity_Type__c == 'Renewal')
                orderLocationPackageRenewalList.add(olp);
            else
                orderLocationPackageOtherList.add(olp);
    }
    else if (trigger.isAfter && trigger.isDelete) {
        for(Order_Location_Package__c olp: trigger.old)
            if(olp.Opportunity_Type__c == 'NEW' || olp.Opportunity_Type__c == 'Renewal')
                orderLocationPackageRenewalList.add(olp);
            else
                orderLocationPackageOtherList.add(olp);     
    }


    //Send the records for processing to RollupSummary class
    if(orderLocationPackageRenewalList!=null && !orderLocationPackageRenewalList.isEmpty())
        OrderLocationRollupSummary.rollupOrderPackages(orderLocationPackageRenewalList);

    //Send the records not meeting the criteria to other RollupSummary class
    if(orderLocationPackageOtherList!=null && !orderLocationPackageOtherList.isEmpty())
        OrderLocationRollupSummaryOther.rollupOrderPackages(orderLocationPackageOtherList);

}