WebApi业务关闭销售订单报'未将对象引用设置到对象的实例'的解决方案

在星空版本 PT-148001 [8.1.0.20230420] (不含此补丁)之前,如果通过WebApi去业务关闭销售订单(通常的WebApi业务关闭销售订单的JSON格式为:
{ "CreateOrgId": 0, "Numbers": [], "Ids": "121252", "PkEntryIds": [{"Id": "121252", "EntryIds": "122231,122232"}], "NetworkCtrl": "", "IgnoreInterationFlag": "" }
其中尤其要注意PKEntryIds字段的格式,如果此字段格式不对,则会有其它错误的返回),则可能会报'未将对象引用设置到对象的实例'的错。如果查询服务器日志文件会发现有更详细堆栈信息,WebApi业务关闭操作的返回在星空高版本可能不会有详细堆栈报错,低版本才可能会有详细调用堆栈报错(可以在星空Web Api菜单操作下业务关闭,低版本会直接返回堆栈信息),如下图1-1所示:

图1-1
从上图1-1可以看到是SORowCloseValidator校验器抛出来的错误,目前这个校验器仅用于处理一些预计可发量的校验逻辑。此bug在补丁 PT-148001 [8.1.0.20230420] (包含此补丁) 后已经修复了,这个地方主要是用WebApi去业务关闭销售订单比较少。如果客户的星空版本比较低且不想升级,则可以在'业务关闭'操作上挂一个Python插件去移除此校验器,配置如下图1-2所示:

图1-2
Python脚本如下(不要直接复制以下文本,建议使用右侧附件中的代码):
# -*- coding: utf-8 -*-
#WebApi业务关闭销售订单报错
import clr
clr.AddReference("System")
clr.AddReference("System.Core")
clr.AddReferWebApi业务关闭销售订单报'未将对象引用设置到对象的实例'的解决方案
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



