Python服务插件调WebApi触发自动提交操作

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

Python服务插件调WebApi触发自动提交操作

@[TOC](目录) ### 1、背景 采购申请单审核按钮上配置了自动下推采购订单的服务,但是自动下推后的采购订单的单据状态默认都是创建状态,需要手动触发提交,目前想自动下推时直接保存并提交,并且需要触发审批流 ### 2、思路 在下游采购订单的保存插件中去调提交操作 由于需要触发审批流,很自然想到在采购订单保存插件中通过python脚本使用WebApi的方式调提交操作 又由于是直接插件触发WebApi,可以直接用`WebApiServiceCall`,这样能跳过权限验证环节直接使用具体的方法 ### 3、python案例 ```python import clr clr.AddReference('System') clr.AddReference('System.Data') clr.AddReference('Kingdee.BOS') clr.AddReference('Kingdee.BOS.Core') clr.AddReference('Kingdee.BOS.WebApi.FormService') clr.AddReference('Kingdee.BOS.ServiceFacade.KDServiceFx') clr.AddReference('Newtonsoft.Json') from Kingdee.BOS import * from Kingdee.BOS.Core.DynamicForm import * from Kingdee.BOS.Core.DynamicService import * from System import * from System.Data import * from System.Collections.Generic import * from Kingdee.BOS.WebApi.FormService import * from Kingdee.BOS.ServiceFacade.KDServiceFx import * from Newtonsoft.Json.Linq import * def EndOperationTransaction(e): for billObj in e.DataEntitys: billNo = str(billObj["BillNo"]) apiResult = SubmitBill(billNo) def SubmitBill(billNo): jsonData = """{"Numbers":["BILLNOS"]}""" json = jsonData.Replace("BILLNOS",billNo) apiResult = WebApiServiceCall.Submit(this.Context, "PUR_PurchaseOrder", json) return apiResult ``` ### 4、补充 ==如果需要区分自动下推和手动做单时不自动提交,需要新增一个标记字段,自动下推时携带标记字段的值,并在该脚本的EndOperationTransaction调用SubmitBill方法之前做出正确的判断== **其他更多文章入口:**[https://wenku.my7c.com/link/s/lbRPP](https://wenku.my7c.com/link/s/lbRPP)

image.webp

老师,您好。麻烦问下,为什么前面的提交和审核都能调用成功,但是下推的PUSH缺没法成功,有什么方法检查问题在哪里么?


global name 'WebApiServiceCall' is not defined



感谢大佬分享!

在EndOperationTransaction触发,是在事务中,能提交成功,但是工作流会处于初始化冻结状态。放到AfterExecuteOperationTransaction才正常了。

请问大佬有遇到这个问题吗?

Python服务插件调WebApi触发自动提交操作

@[TOC](目录)### 1、背景采购申请单审核按钮上配置了自动下推采购订单的服务,但是自动下推后的采购订单的单据状态默认都是创建状态,需要...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息