Python实现列表对暂存的单据批量保存
场景一:在配置了自动下推之后,由于下游单据校验规则不通过,上游单据可能会审核不通过,这个时候可以在设置【自动下推】的时候,勾选【保存失败自动暂存】,如果批量审核或者由于分单可能会生成多暂存的下游单据,那么数据修复之后,就需要一张一张单据点开去保存,非常耗费时间。
场景二:列表批量下推单据时,点击【生成全部】之后,校验不通过的单据也会自动暂存。
类似于以上2个场景,可以通过这个Python脚本实现列表批量保存单据。
实现方法:
在BOS打开需要批量保存的单据。
在【操作列表】中,新增一个空操作(操作代码:DoNothing-BatchSave,操作名称:空操作-批量保存),一定要修改操作代码和操作名称,便于后面查询,养成良好的习惯。
点开【其他控制】-【服务插件】,注册Python脚本。
在【列表菜单】中增加按钮【批量保存】,然后在按钮的【点击事件】中【调用表单操作】:空操作-批量保存。
#参考代码: ##****************************保存服务插件******************* #引入clr运行库 import clr #添加对cloud插件开发的常用组件的引用 clr.AddReference('System') clr.AddReference('System.Data') clr.AddReference('Kingdee.BOS') clr.AddReference('Kingdee.BOS.Core') clr.AddReference('Kingdee.BOS.App') clr.AddReference('Kingdee.BOS.DataEntity') clr.AddReference('Kingdee.BOS.Contracts') clr.AddReference('Kingdee.BOS.ServiceHelper') #导入cloud基础库中的常用实体对象(分命名空间导入,不会递归导入) from Kingdee.BOS import * from Kingdee.BOS.Core import * from Kingdee.BOS.Contracts import * from Kingdee.BOS.Orm.DataEntity import * from Kingdee.BOS.DataEntity import * from Kingdee.BOS.Core.Bill import * from Kingdee.BOS.Core.DynamicForm.PlugIn import * from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import * from System import * from System.Data import * from Kingdee.BOS.App.Data import * from System.Collections.Generic import List from Kingdee.BOS.ServiceHelper import * def EndOperationTransaction(e): pkIds = List[object](); for billObj in e.DataEntitys: billId=billObj["Id"]; pkIds.Add(billId); formID=this.BusinessInfo.GetForm().Id; meta = MetaDataServiceHelper.Load(this.Context, formID); billObjects=BusinessDataServiceHelper.Load(this.Context, pkIds.ToArray(), meta.BusinessInfo.GetDynamicObjectType()); saveRslt=BusinessDataServiceHelper.Save(this.Context, meta.BusinessInfo,billObjects , None, "Save"); if (saveRslt.IsSuccess == False): ss=saveRslt.ValidationErrors[0].Message; raise Exception(("保存出错:{0}").format(ss));
非常感谢,已经成功。
请教下:现在成功后,单据状态是创建,能直接成已审核吗?
厉害,周老师!
老师,我按照您说的重新用tab键编辑过,但是他不报错,也不生效
批量保存如何忽略警告继续保存?或者出现警告了弹窗让我点击继续保存,现在是直接报错了。我尝试了不提示错误,但是没有触发到反写规则
老师号,py插件内如何新增分录行呢
老师加上后报这个错
老师牛
执行没有反应 能给看看哪里错了么
这个可以触发beforesave,aftersave事件吗
老师你好,我这是想批量保存,加调用字段值更新;目前是一张单据点进去的;然后现在我配置了这个 也再这个按钮操作里面加了调用值更新的服务 貌似不生效呢
Python实现列表对暂存的单据批量保存
场景一:在配置了自动下推之后,由于下游单据校验规则不通过,上游单据可能会审核不通过,这个时候可以在设置【自动下推】的时候,勾选【保...
点击下载文档
本文2024-09-16 18:40:07发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-23635.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章