WebAPI对接分步式调入单BOM版本问题处理案例

一、【业务问题】
第三方系统通过星空系统WebAPI对接分步式调出单、分步式调入单,保存分步式调出单,物料启用了BOM且系统配置有该物料清单,默认会携带一个最新的bom版本赋值到分步式调出单的BOM版本字段。通过接口保存生成的分步式调入单如何自动调用最新的bom版本号,当前写入分步式调入单保存提示"调出物料启用BOM管理,BOM不允许为空"

二、【分析解决】
系统的设计中分步式调入单不允许手工新增,均是由分步式调出单下推生成,由于上游分步式调出单针对调入调出的数据都已填写完整,下推分步式调出,通过单据转换的字段映射携带,BOM相关赋值没有问题。客户直接对接写入分步式调入单,按理说数据包中调出调入BOM都有值,调用保存依然提示"调出BOM为空"。
分步式调出单插件赋值逻辑:物料 --值更新触发--> 加载,赋值调出BOM, 物料 --值更新触发--> 同步赋值调入物料 --值更新触发--> 加载,赋值调入BOM
参考分步式调出单的赋值逻辑,分析定位问题,查看分步式调入单的表单插件,要满足BOM的赋值,几个地方需要做修改
反编译组件Kingdee.K3.SCM.Stock.Business.PlugIn.dll,定位分步式调入单表单插件

调试分析定位问题,查看分步式调入单的表单插件,要满足BOM的赋值,几个地方需要做修改。
1、物料赋值时,默认会触发对BOM版本的赋值,在BOM版本添加值更新,触发调出BOM的赋值

调用报错,未解决问题。定位调入物料配置有值更新,导致调出BOM被清空,将值更新服务修改为"引入和WEB API禁用"

调用报错,未解决问题。发现DataChanged事件中,this.View.Model.SetValue("FBOMID")操作没有触发"BOM版本"字段的值更新,二开表单插件,通过this.View.InvokeFieldUpdateService("FBOMID", e.Row)强制触发字段更新服务

import clr
clr.AddReference("System")
clr.AddReference("System.Core")
clr.AddReference("Kingdee.BOS")
clr.AddReference("Kingdee.BOS.Core")
clr.AddReference("Kingdee.K3.SCM.Business")
from System import *
from System import StringComparison
from Kingdee.BWebAPI对接分步式调入单BOM版本问题处理案例
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



