论坛中笔名CQ周玉立的前辈写过一个帖子,讲解了如何通过Python查表,获得当前用户对应的员工信息并自动代入到表单中员工字段中。本文照猫画虎,通过查询任岗信息,获取员工和部门信息,分别代入到表单相关字段。
Python代码注册为表单插件,因为论坛缩进显示问题,直接拷贝粘贴代码可能运行不正常,故将代码又以附件上传。
############## 代码:获取员工和部门 ###############
#通过员工任岗等数据表获取当前用户所关联的员工和部门,填写到申请人和申请部门字段中
from Kingdee.BOS.ServiceHelper import *
empId = 0;
deptId = 0;
def OnInitialize(e):
userID=str(this.Context.UserId);
sqlGetEmpId = ("""SELECT E.FID,DPL.FDEPTID AS DEPTID FROM T_SEC_USER U
INNER JOIN T_HR_EMPINFO E ON (U.FLINKOBJECT = E.FPERSONID)
INNER JOIN T_HR_EMPINFO_L EL ON (EL.FID = E.FID AND EL.FLOCALEID = 2052)
INNER JOIN T_BD_STAFF ST ON ST.FEMPINFOID = EL.FID
INNER JOIN T_BD_DEPARTMENT_L DPL ON DPL.FDEPTID = ST.FDEPTID
WHERE U.FUserId={0} """).format(userID);
global empId, deptId;
DataSet = DBServiceHelper.ExecuteDataSet(this.Context,sqlGetEmpId).Tables[0];
empId=DataSet.Rows[0]["FID"] if DataSet.Rows.Count>0 else 0;
deptId=DataSet.Rows[0]["DEPTID"] if DataSet.Rows.Count>0 else 0;
def AfterCreateNewData(e):
global empId,deptId;
this.Model.SetItemValueByID("F_ora_Base", empId, 0); #申请人,需根据表单字段做相应修改
this.Model.SetItemValueByID("F_ora_Base1", deptId, 0); #申请部门,需根据表单字段做相应修改
Python获取员工和部门.rar(0.74KB)