Python实现列表对暂存的单据批量保存

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

Python实现列表对暂存的单据批量保存

场景一:在配置了自动下推之后,由于下游单据校验规则不通过,上游单据可能会审核不通过,这个时候可以在设置【自动下推】的时候,勾选【保存失败自动暂存】,如果批量审核或者由于分单可能会生成多暂存的下游单据,那么数据修复之后,就需要一张一张单据点开去保存,非常耗费时间。

场景二:列表批量下推单据时,点击【生成全部】之后,校验不通过的单据也会自动暂存。

类似于以上2个场景,可以通过这个Python脚本实现列表批量保存单据。

实现方法:

  1. 在BOS打开需要批量保存的单据。

  2. 在【操作列表】中,新增一个空操作(操作代码:DoNothing-BatchSave,操作名称:空操作-批量保存),一定要修改操作代码和操作名称,便于后面查询,养成良好的习惯。

  3. 点开【其他控制】-【服务插件】,注册Python脚本。

  4. 在【列表菜单】中增加按钮【批量保存】,然后在按钮的【点击事件】中【调用表单操作】:空操作-批量保存。



#参考代码:
##****************************保存服务插件*******************
#引入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键编辑过,但是他不报错,也不生效image.webp


批量保存如何忽略警告继续保存?或者出现警告了弹窗让我点击继续保存,现在是直接报错了。我尝试了不提示错误,但是没有触发到反写规则


老师号,py插件内如何新增分录行呢


image.webp

老师加上后报这个错


老师牛


image.webp 执行没有反应 能给看看哪里错了么


这个可以触发beforesave,aftersave事件吗


老师你好,我这是想批量保存,加调用字段值更新;目前是一张单据点进去的;然后现在我配置了这个 也再这个按钮操作里面加了调用值更新的服务 貌似不生效呢

Python实现列表对暂存的单据批量保存

场景一:在配置了自动下推之后,由于下游单据校验规则不通过,上游单据可能会审核不通过,这个时候可以在设置【自动下推】的时候,勾选【保...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息