
自从看到周老的python文章,就有了灵感,可以不断实现新的想法。本次代码是根据周老的[Python服务插件借助WebAPI实现基础资料审核后自动分配 (kingdee.com)](Python服务插件借助WebAPI实现基础资料审核后自动分配 (kingdee.com))改写的。
以下代码可以实现:在客户、供应商、银行自动分配到指定的组织。
方法:
# 1.在BOS里添加基础资料字段F_PAEZ_BASEorg1、F_PAEZ_BASEorg2(关联组织架构)

# 2. 在BOS->批量编辑字段->表单插件 ->注册python

# 3.appId、appSecret信息。需要用administrator 在第三方授权登录 添加
# 4.obj="{'PkIds':'IDSTR','TOrgIds':'ORGID_STR','IsAutoSubmitAndAudit':'true'}"
如果不确定值IDSTR、TOrgIds的值,通过web在线测试
PkIds:sql的表的数据FMASTERID,TOrgIds 需要分配组织ID
{
'PkIds': '127314',
'TOrgIds': '100005',
'IsAutoSubmitAndAudit': 'true'
}
# 5.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.ServiceHelper')
clr.AddReference('Kingdee.BOS.ServiceHelper')
clr.AddReference('Kingdee.BOS.WebApi.Client')
clr.AddReference('Newtonsoft.Json')
#导入cloud基础库中的常用实体对象(分命名空间导入,不会递归导入)
from Kingdee.BOS import *
from Kingdee.BOS.Core 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 *
from Kingdee.BOS.WebApi.Client import *
from Newtonsoft.Json.Linq import *
# 全局变量需要修改的参数
appId="text"; #需要修改
appSecret="a7f4558baad542a6b3fa5bb77b7adf33";#需要修改
url='http://127.0.0.1/k3cloud/';#需要修改成域名
user="demo";#需要修改
DBId=this.Context.DBId;
client=K3CloudApiClient(url);
#公共参数必备
billObj=this.View.Model.DataObject;#单据头的数据包,即单据的数据包,DynamicObject类型,可进一步解析
#this.View.ShowMessage(iResult)
#raise Exception(allocateR)
# 初始加载的函数
def init():
if login()==1 and org()==0:#判定有是否可以登录,并且org有数据
org1 = billObj["F_PAEZ_BASEorg1"] #需要分配的组织1
if org1!=None:
allfenpei(org1)
org2 = billObj["F_PAEZ_BASEorg2"] #需要分配的组织2
if org2!=None:
allfenpei(org2)
#附件到进程函数,正式使用的时候,注释掉
def BarItemClick(e):
init()
# API登录
def login():
loginFlag=0;
if(lo