亲测PYTHON直接执行MSSQL语句和存储过程!
金蝶云社区-mcgergor
mcgergor
7人赞赏了该文章 3199次浏览 未经作者许可,禁止转载编辑于2018年12月21日 09:46:20
需求与业务场景:
由于特殊业务在启用了暂估回冲模式时,在应付单明细里面添加了自定义字段,单据转换可以从暂估应付携带到财务应付,但是无法将自定义字段内容携带到系统自动生成的暂估回冲应付单,由于本人不会C#做二开,为了处理这个需求在论坛扒拉了好几天,看到各位大佬提供不少建议,结合自身能力最后确定使用PYTHON来执行MSSQL语句或者存储过程进行更新操作,由于只是更新字段不会对金蝶本身业务逻辑产生影响,目前亲测有效特此分享,代码如下(代码注册就不用多说吧?此代码注册时会提示Kingdee.BOS.App的错误,直接忽略即可在客户端(APP)执行):
--------------------------------------------------------代码分割线--------------------------------------------------------
#引入clr运行库
import clr
clr.AddReference("Kingdee.BOS.Core")
clr.AddReference("Kingdee.BOS.App")
clr.AddReference("Kingdee.BOS")
#添加对cloud插件开发的常用组件的引用
from Kingdee.BOS.Core.Bill.PlugIn import *
from Kingdee.BOS.Core.Bill.PlugIn.Args import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import *
from Kingdee.BOS.App.Data import *
def AfterBarItemClick(e):
#判断点击审核按钮(菜单和列表一直)
if (e.BarItemKey=="tbSplitApprove" or e.BarItemKey=="tbApprove"):
#执行MSSQL语句
DBUtils.Execute(this.Context, "/*dialect*/update a set a.AA=b.AA from (select id,AA from TableA)a,(select id,AA from TableB)b where a.id=b.id");
#执行MSSQL存储过程
DBUtils.Execute(this.Context, "/*dialect*/exec 存储过程名字");
#this.View.ShowMessage("项目更新成功!");
各位大佬新手入门第一次发帖,先干(四声)为敬!