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)
老师,您好。麻烦问下,为什么前面的提交和审核都能调用成功,但是下推的PUSH缺没法成功,有什么方法检查问题在哪里么?
global name 'WebApiServiceCall' is not defined
感谢大佬分享!
在EndOperationTransaction触发,是在事务中,能提交成功,但是工作流会处于初始化冻结状态。放到AfterExecuteOperationTransaction才正常了。
请问大佬有遇到这个问题吗?
Python服务插件调WebApi触发自动提交操作
@[TOC](目录)### 1、背景采购申请单审核按钮上配置了自动下推采购订单的服务,但是自动下推后的采购订单的单据状态默认都是创建状态,需要...
点击下载文档
本文2024-09-16 19:03:49发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-26151.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章