Python表单插件获取用户对应的员工和部门原创
金蝶云社区-Login255
Login255
21人赞赏了该文章 2714次浏览 未经作者许可,禁止转载编辑于2021年09月21日 18:25:37

论坛中笔名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); #申请部门,需根据表单字段做相应修改


赞 21