使用python插件高效完成单据下推时取价

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

使用python插件高效完成单据下推时取价

背景:好多客户会有采购申请下推采购订单时要自动触发获取采购参考价功能。

原技术实现方案:

1.在表头表体都增加一个字段

2.表体字段调用获取采购参考价服务

3.表头字段调用表体字段值更新事件

4.增加表体实体服务规则去调用表头字段值更新事件。

这种方法可以迂回实现下推时取价,并且每一行都获取到价格。

但是这种方案会导致每一行都调用了取价服务,在分录数据量大时会有性能问题,导致下游单据界面打开卡顿。

假设分录有100行,每次取价需要0.25s,那么全部分录完成取价需要100*0.25=25s,性能牺牲比较大。


新方案:

1.在表头增加一个字段,直接调用取价服务。

2编写python插件,当下推完成时调用这个表头字段的值更新事件。

import clr

clr.AddReference('System')

clr.AddReference('Kingdee.BOS')

clr.AddReference('Kingdee.BOS.Core')

from Kingdee.BOS import *

from Kingdee.BOS.Core.Bill.PlugIn import *

from Kingdee.BOS.Core.Metadata import *

from System import *

#复制到bos表单插件后请自行修正缩进


def BeforeBindData(e): 
    if(this.View.OpenParameter.Status==OperationStatus.ADDNEW and this.View.OpenParameter.CreateFrom==CreateFrom.Push ):
        this.View.InvokeFieldUpdateService("替换成表头字段标识",0);


image.webp


这种方案只会触发一次表头值更新事件,进行全部分录的批量取价,能大大节省性能。


这种方案可以延伸到其他单据转换和调用其他类型的服务。





感谢楼主的案例分享。

单据转换过程触发服务或者自动处理一些数据逻辑。还是建议在单据转换插件中实现。

表单插件只能在单据维护界面才能触发,所以列表批量下推、自动下推、接口或者后台下推等情况下,不能完全保证表单插件能触发。

使用python插件高效完成单据下推时取价

背景:好多客户会有采购申请下推采购订单时要自动触发获取采购参考价功能。原技术实现方案:1.在表头表体都增加一个字段2.表体字段调用获取...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息