列表插件,单据批量保存原创
金蝶云社区-Zenos
Zenos
4人赞赏了该文章 494次浏览 未经作者许可,禁止转载编辑于2023年10月17日 14:26:59

列表插件,执行批量保存

通过单据引入,自动下推,批量生成,同步更新等等场景,都会有遇到单据点击保存更新单据需求,由于数据量较大,列表是没有保存按钮的,则需要每张单点进单据里面保存,浪费人力。

1;如下插件需要在列表菜单上加上一个按钮"tbButtSave"

2将如下插件复制,粘贴在列表插件上保存,即可验证插件。

#引入clr运行库

import clr
#添加对cloud插件开发的常用组件的引用
clr.AddReference('System')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference("Kingdee.BOS.ServiceHelper")
clr.AddReference('Kingdee.BOS.App')
from System import *
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.ServiceHelper import *
from Kingdee.BOS.App.Data import *
def BarItemClick(e):
	if e.BarItemKey=="tbButtSave":#列表字段标识
		listcoll = this.ListView.SelectedRowsInfo #获取被选中的明细行
		inf = listcoll.GetPrimaryKeyValues()
		dycoll = this.ListModel.GetData(listcoll)#通过已选中的行生成数据包
		info1 =""
		#for i in range(len(inf)):
		for key in inf:
			info1 = info1+","+key
		dataObjects = BusinessDataServiceHelper.Load(this.Context, inf, this.View.BillBusinessInfo.GetDynamicObjectType())
		result = BusinessDataServiceHelper.Save(this.Context, this.View.BillBusinessInfo, dataObjects)

		this.View.ShowOperateResult(result.OperateResult);

		if (result.ValidationErrors == None or result.ValidationErrors.Count == 0):
            
			return;
            
		collection = result.OperateResult
		#保存失败提示框
		for errorInfo in result.ValidationErrors:			
			operate1 = OperateResult(Name = errorInfo.Title, SuccessStatus = False,Message = errorInfo.Message)
			collection.Add(operate1) 
			


赞 4