在脚本插件中使用PLM组件来实现异步进度处理的示例原创
金蝶云社区-Tick
Tick
12人赞赏了该文章 1160次浏览 未经作者许可,禁止转载编辑于2021年10月22日 14:11:08
封面

如果后台需要进行大的任务处理,需要时间较长,可以通过异步进度的方式来实现进度提示,这样也不会出现网络超时中断。


在单据的表单插件中,创建Python脚本插件:


image.png


脚本示例


import clr;

clr.AddReference("System")

clr.AddReference("Kingdee.K3.PLM.Common.Core") #需要用到PLM封装的组件

clr.AddReference("Kingdee.K3.PLM.Common.BusinessEntity") #需要用到PLM封装的组件


from System import Action

from System import String

from System.Threading import Thread

from Kingdee.K3.PLM.Common.Core.BOSBridge import PLMView

from Kingdee.K3.PLM.Common.BusinessEntity.View import PageManager



def BarItemClick(e):

    if e.BarItemKey=="EPX_BtTreating":

        act=Action[Action[int,String]](treating)

        PageManager.Instance.RunAsyncTaskWithProgress(PLMView.Get(this.View), act, "Big Job To Do");


def treating(counter):

    for i in range(0,100):

        Thread.Sleep(100) #这里可以处理大任务

        counter(i,"treaing("+i.ToString()+")...")  #如果要显示当前的进度与当前的子任务可以调用counter计数





-----END----

赞 12