使用python插件高效完成单据下推时取价原创
金蝶云社区-执理
执理
17人赞赏了该文章 500次浏览 未经作者许可,禁止转载编辑于2024年05月14日 08:51:25

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

原技术实现方案:

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.png


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


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




赞 17