如何以可批处理的Salesforce顶点代码报告记录,以便它应报告Level2或Level3为NULL的位置

问题描述

这是我当前的可批处理顶点代码,当前此批处理作业将数据从新的自定义对象ERT_Case_Type__c复制到旧的自定义对象Case_Type__c

但是问题是当没有Level2或Level3时,此作业无法复制。我的意思是说Level2或Level3为NULL

我如何确保Batchable Salesforce顶点代码报告未复制的记录,因为在案例类型中需要匹配的L1,L2和L3集。

With wrdDoc
        With .Range.Find
        .MatchWholeWord = True
        .Text = "text1"
        .Execute
    If .Found = True Then
      Cells(resultRow,1).Value = strFileName
        .MatchCase = False
        .MatchWholeWord = True
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Text = "text2"
        .Execute
        If .Found = True Then
          MsgBox "This document contains the word2"

预先感谢, 卡罗琳

解决方法

现在还不清楚您为什么遇到问题,或者实际上是什么问题。没有逻辑以字段Level_1__cLevel_2__cLevel_3__c的条件为条件,在这些字段中的任何一个上都没有NullPointerException的可能性。

如果Case_Type__c对象上的字段是必需的,或者Case_Type__c对象上有一个触发器或声明性的自动化方法期望它们不是非{null,那么您可能会在那里产生错误。您确实有吞咽的异常:

} catch(Exception e) {
    System.debug(e);
}
您应该删除的

,因为它隐藏了insert上发生的所有实际错误。这可能会指导您解决真正的潜在问题。

另外请注意,您确实不需要Batch Apex来执行此操作。您可以使用任何Salesforce数据加载器提取一个对象,然后将数据加载到另一个对象,来轻松完成此任务。

批处理Apex不会固有地报告失败的记录,尤其是当您显式禁止异常时。为此,您需要使用Database.insert()之类的部分成功方法来插入记录,遍历结果并保留有关数据库故障的信息(可能在原始源记录上)。代码会复杂得多,但是同样,我真的不认为您需要这样做。您需要定位并修复在插入时可能发生的问题,和/或切换到使用数据加载器。