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.AddReference("Kingdee.BOS") clr.AddReference("Kingdee.BOS.Core") from System import * from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import * def OnAddValidators(e): if Convert.ToString(this.Context.ClientType) == "WebApi": for validator in e.Validators: if (validator.GetType().ToString().Contains("SORowCloseValidator")): e.Validators.Remove(validator); break;
写在最后:
由于目前此校验器逻辑仅有预计可发量的一些校验,因此在WebApi操作下删除这个校验器是没有问题的(上面的Python代码是判断了客户端类型为WebApi时才移除校验器),但这里还是建议后续升级到 PT-148001 [8.1.0.20230420] 版本后,把这个Python插件删除,因为可能后续版本会在这个校验器里添加其它逻辑,如果升级后不及时删除此Python插件就可能存在一些校验逻辑与通版存在异常的可能。
WebApi业务关闭销售订单报'未将对象引用设置到对象的实例'的解决方案
本文2024-09-23 02:47:24发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-154718.html
- 2024-2025年人大线新年度初始化实施指导手册.docx
- 2024-2025年人大线新年度初始化实施方案解析.mp4
- 2024-2025年人大线新年度初始化方案解析 .pptx
- A++财务(高校)年结资料-2024-2025年财务年结工作指导手册(教育财智云870).docx
- A++财务(高校)年结资料-2024-2025年财务年结工作指导手册(高校831&832).docx
- 大社保年结资料-2024-2025大社保年结培训解析.mp4
- 大社保年结资料-医保基金年结操作说明(2024-2025).docx
- 大社保年结资料-人社社保年结操作说明(2024-2025).docx
- 大社保年结资料-财政社保年结操作说明(2024-2025).docx
- 大社保年结资料-2024-2025大社保产品线年结方案解析.pptx