通过代码从商机创建销售订单时触发23 R2数据损坏错误
问题描述
- 原环境:Acumatica 22 R2,自定义插件通过带自定义字段的传输类型从商机创建销售订单,运行正常
- 升级后:Acumatica 23 R2,编译无报错,但保存时触发以下错误:
A data corruption state has been detected. You cannot save the changes. Copy the data you have entered and reload the page. Date and Time: 2023-11-03T12:44:11; IncidentID: 62bc4a55-2309-4a27-a519-9c99da35f9bb; Name: Aggregate Validation: PX.Objects.SO.SOOrder+openSiteCntr. You can view detailed information about the issue on the System Events tab of the System Monitor (SM201530) form.
- 调试发现:
OpenLineCntr和OpenSiteCntr字段无法设置值,手动赋值也无效
解决方案
确认字段属性变更
在23 R2版本中,SOOrder的OpenLineCntr和OpenSiteCntr已改为聚合计算字段,由系统自动维护,不再允许手动赋值。这些字段用于统计未完成的订单行和站点数量,直接赋值会触发数据一致性校验错误。修改自定义创建逻辑
- 移除代码中对
OpenLineCntr和OpenSiteCntr的手动赋值操作 - 确保销售订单行数据正常创建,系统会自动根据订单行状态计算并更新这两个字段的值
- 移除代码中对
检查传输类型映射
如果自定义传输类型中包含这两个字段的映射配置,需删除对应映射规则,避免在数据传输时尝试赋值验证数据一致性
创建销售订单后,通过SM201530(系统监控)的系统事件标签页查看详细错误日志,确认是否还有其他字段的赋值冲突,确保所有自定义逻辑符合23 R2的数据校验规则
内容的提问来源于stack exchange,提问作者Muralidharan Ramakrishnan
相关产品推荐
相关产品推荐

