如何获取PXProcessing<>.SetError()方法设置的错误消息
获取Acumatica中PXProcessing设置的错误消息方案
你可以通过Acumatica框架内置的PXProcessing相关API直接获取设置的错误消息,具体操作如下:
核心实现方式
PXProcessing类调用SetError()标记的错误会统一存储在当前请求上下文的处理结果集合中,你可以调用GetProcessedRecords()方法直接读取:
// 获取所有SOShipment的处理结果 List<PXProcessingResult> processedRecords = PXProcessing<PX.Objects.SO.SOShipment>.GetProcessedRecords(); // 遍历提取错误信息 foreach (var record in processedRecords) { if (!record.IsSuccess) { // 错误消息 string errorMessage = record.Error; // 错误对应行的索引 int errorRowIndex = record.Index; // 错误对应的SOShipment记录对象 SOShipment errorShipment = record.Item as SOShipment; // 此处编写自定义处理逻辑 } }
补充注意事项
- 调用
GetProcessedRecords()必须和执行SetError()的逻辑处于同一个请求生命周期内,跨请求时处理结果缓存会被框架自动清空,无法读取到历史错误。 - 若第三方插件的处理方法本身返回
IEnumerable<PXProcessingResult>类型,你可以直接读取返回值提取错误,无需额外调用GetProcessedRecords()。 - 确保你获取错误的逻辑在第三方插件执行完成之后调用,避免过早读取未写入完成的错误集合。
内容的提问来源于stack exchange,提问作者Jerry Kurtz
相关产品推荐
相关产品推荐

