如何实现申请人默认等于当前用户原创
金蝶云社区-常威丶你还说不会武功
常威丶你还说不会武功
17人赞赏了该文章 3266次浏览 未经作者许可,禁止转载编辑于2021年09月01日 19:57:21

1、使用管理员账号登录系统,用户添加联系对象类型为员工,增加联系对象,使员工与用户相关联

1.png

2、BOS中选择对应单据(以付款申请单为例),添加基础资料字段“申请人”字段(已有的话便不用加),同时添加基础资料类型【员工】

2.png




image.png3、在表单中新增插件

3.pngimage.png4、

以下为脚本插件(最后的"F_PAPB_Base"为员工字段标识):

#参考代码


#引入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')

#导入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 *

#重载cloud插件模型的主菜单按钮点击事件

empId = 0;

def OnInitialize(e):

    userID=str(this.Context.UserId);

    sqlGetEmpId = (""" select E.FID, E_L.FNAME, P.FPERSONID, U.FUSERID, U.FNAME 

    from T_SEC_USER U 

    inner join t_BD_Person P ON (u.FLINKOBJECT = P.FPERSONID) 

    inner join T_HR_EmpInfo E ON (P.FPERSONID = E.FPERSONID) 

    left join T_HR_EmpInfo_L E_L ON (E.FID = E_L.FID AND E_L.FLOCALEID = 2052) 

    where U.FUserId ={0} """).format(userID);

    global empId;

    ds = DBServiceHelper.ExecuteDataSet(this.Context,sqlGetEmpId);

    tab = ds.Tables[0];

    empId=tab.Rows[0]["FID"] if tab.Rows.Count>0 else 0;

def AfterCreateNewData(e):

    global empId,deptId,stuffID;

    this.Model.SetItemValueByID("F_PAPB_Base", empId, 0);#根据实际情况在此修改员工字段标识


赞 17