金蝶云星空二开python表单插件之新增单据设置默认值,获取当前用户对应员工案例!!
大家好,我叫大伟,今天开始给大家继续倒腾金蝶二开插件案列分享,大部分都是非常实用而且能够提升工作效率和增强体验感的小功能。
在日常业务中,员工提交单据时,经常需要填写大量重复信息:自己的员工信息、固定的日期、默认的业务类型等等。这些重复性工作不仅效率低下,还容易出错。今天,我们就来分享一个实用的Python插件开发技巧:让系统在单据新增时,自动填充这些默认值!
运用场景非常广泛,比如设置默认的固定日期,固定的销售员采购人员或者动态数据值,在新增单据的是时候自动赋值,如当前日期、满足条件自动带出供应商、客户、单据类型等,都可以通过OnInitialize事件初始化的时候动态获取值,在AfterCreateNewData事件中新增单据将值赋值到对应字段。本次案例介绍核心思路如下:
-
OnInitialize事件:单据初始化时,获取当前登录用户对应的员工ID
-
AfterCreateNewData事件:新增单据时,将获取到的员工ID和预设的默认值自动填入对应字段
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')# 导入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 Listfrom Kingdee.BOS.ServiceHelper import *# 全局变量,存储员工IDempId = 0# 事件1:单据初始化完成时触发def OnInitialize(e):"""单据初始化完毕,在这里可以获取一些控件备用通常用于准备后续需要使用的数据"""# 获取当前登录用户IDuserID = str(this.Context.UserId)# SQL查询:根据用户ID获取对应的员工信息sqlGetEmpId = """SELECT E.FID, E_L.FNAME, P.FPERSONID, U.FUSERID, U.FNAMEFROM T_SEC_USER UINNER 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# 执行SQL查询ds = DBServiceHelper.ExecuteDataSet(this.Context, sqlGetEmpId)tab = ds.Tables[0]# 获取员工ID,如果没有找到则默认为0empId = tab.Rows[0]["FID"] if tab.Rows.Count > 0 else 0# 事件2:单据新增界面打开时触发def AfterCreateNewData(e):"""单据新增界面打开时触发,可以获取到单据初始化之后的数据通常用于对单据新增进行默认值填充"""global empId# 设置员工字段默认值(根据实际情况修改字段标识)if empId != 0:this.Model.SetItemValueByID("F_empid", empId, 0)# 设置日期默认值this.Model.SetValue("FDate", "2025-12-31")# 这里可以补充其他默认值设置# 例如:this.Model.SetValue("FBillTypeID", "001")# 例如:this.Model.SetItemValueByID("FSaleDeptId", "部门ID", 0)
操作步骤如下
1、打开BOS设计器,找到需要批改的单据,如果单据是只读状态,不要慌!只需在单据上右键点击【扩展】,就能以可编辑模式打开

2、注册Python脚本,进入【表单插件】配置,注册下面的Python脚本代码,保存配置

3、保存所有配置,新增单据,自动获取了固定销售订单日期和对应当前用户的员工!如下图:

温馨提示
-
字段标识:
F_empid需要替换为实际的员工字段标识,切记唯一标识一定是自己系统的标识 -
复制脚本注意缩进,严格遵守PYTHON缩进规则,否则保存会报错
如果这篇文章对你有帮助,欢迎点赞、收藏、转发!有任何问题也欢迎在评论区留言交流!
夜雨聆风
