如何为单据设置员工、部门、操作员默认值
来源:互联网 发布:国外网络用语 编辑:程序博客网 时间:2024/06/05 10:49
需求背景:
单据新增时,需要把登录用户对应的员工、员工任岗、部门、业务员等信息,填写到单据头字段中作为默认值。
困难点:
1. K/3 Cloud BOS平台,并没有封装取登录用户对应员工等信息的函数,无从配置默认值
2. 用户与员工、部门、业务员之间的对应关系比较复杂
解决方案:
需要开发插件实现此需求,在界面初始化时,加载用户对应的员工等信息,然后在创建新单时,填写到字段上,作为默认值。
案例说明:
本案例,在单据头上,分别增加了如下几个基础资料字段
1. 员工 F_JD_EmpId
2. 员工任岗 F_JD_StaffId
3. 部门 F_JD_DeptId
4. 采购员 F_JD_BuyerId
5. 仓管员 F_JD_StockerId
6. 销售员 F_JD_SalerId
在插件中,需要把当前登录用户对应的信息,填写到各字段上做为默认值
单据新增时,需要把登录用户对应的员工、员工任岗、部门、业务员等信息,填写到单据头字段中作为默认值。
困难点:
1. K/3 Cloud BOS平台,并没有封装取登录用户对应员工等信息的函数,无从配置默认值
2. 用户与员工、部门、业务员之间的对应关系比较复杂
解决方案:
需要开发插件实现此需求,在界面初始化时,加载用户对应的员工等信息,然后在创建新单时,填写到字段上,作为默认值。
案例说明:
本案例,在单据头上,分别增加了如下几个基础资料字段
1. 员工 F_JD_EmpId
2. 员工任岗 F_JD_StaffId
3. 部门 F_JD_DeptId
4. 采购员 F_JD_BuyerId
5. 仓管员 F_JD_StockerId
6. 销售员 F_JD_SalerId
在插件中,需要把当前登录用户对应的信息,填写到各字段上做为默认值
完整插件代码:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.ComponentModel;// 引用 Kingdee.BOS.dllusing Kingdee.BOS;using Kingdee.BOS.Util;// 引用 Kingdee.BOS.Core.dllusing Kingdee.BOS.Core;using Kingdee.BOS.Core.DynamicForm;using Kingdee.BOS.Core.DynamicForm.PlugIn;using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;using Kingdee.BOS.Core.Bill;using Kingdee.BOS.Core.Bill.PlugIn;using Kingdee.BOS.Core.Bill.PlugIn.Args;using Kingdee.BOS.Core.Metadata;using Kingdee.BOS.Core.Metadata.FieldElement;// 引用 Kingdee.BOS.ServiceHelper.dllusing Kingdee.BOS.ServiceHelper;// 引用 Kingdee.BOS.DataEntity.dllusing Kingdee.BOS.Orm.DataEntity;namespace JDSample.FormPlugIn.Bill{ /// <summary> /// 演示如何设置字段默认值 /// </summary> [Description("设置字段默认值")] public class S160127SetDefaultValueEdit : AbstractBillPlugIn { /// <summary> /// 登录用户对应的员工内码 /// </summary> private long _empId = 0; /// <summary> /// 登录用户对应的员工任岗内码 /// </summary> private long _staffId = 0; /// <summary> /// 登录用户对应的部门内码 /// </summary> private long _deptId = 0; /// <summary> /// 登录用户对应的采购员内码 /// </summary> private long _buyerId = 0; /// <summary> /// 登录用户对应的仓管员内码 /// </summary> private long _stockerId = 0; /// <summary> /// 登录用户对应的销售员内码 /// </summary> private long _salerId = 0; /// <summary> /// 界面初始化时触发此事件:提前读取登录用户信息 /// </summary> /// <param name="e"></param> public override void OnInitialize(InitializeEventArgs e) { SqlParam userIdParam = new SqlParam("@FUserId", KDDbType.Int64, this.Context.UserId); List<SqlParam> paramList = new List<SqlParam>() { userIdParam }; // 读取登录用户对应的员工(BD_Empinfo) // 用户 -> 人员 -> 员工 string sqlGetEmpId = @"select E.FID, E_L.FNAME, P.FPERSONID, U.FUSERID, U.FNAME from 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 = @FUserId"; using(IDataReader reader = DBServiceHelper.ExecuteReader(this.Context, sqlGetEmpId, paramList)) { while(reader.Read()) { this._empId = Convert.ToInt64(reader[0]); break; } } // 根据用户,找员工任岗 BD_NEWSTAFF // 用户 -> 人员 -> 员工任岗 string sqlGetStaffId = @"select S.FSTAFFID, S_L.FNAME, P.FPERSONID, U.FUSERID, U.FNAME from T_SEC_USER Uinner join t_BD_Person P ON (u.FLINKOBJECT = P.FPERSONID)inner join T_BD_STAFF S ON (P.FPERSONID = S.FPERSONID) left join T_BD_STAFF_L S_L ON (S.FSTAFFID = S_L.FSTAFFID AND S_L.FLOCALEID = 2052)where U.FUserId = @FUserId"; using (IDataReader reader = DBServiceHelper.ExecuteReader(this.Context, sqlGetStaffId, paramList)) { while (reader.Read()) { this._staffId = Convert.ToInt64(reader[0]); break; } } // 读取登录用户对应的部门 BD_Department // 用户 -> 人员 -> 员工任岗 - 部门 string sqlGetDeptId = @"select D.FDEPTID, D_L.FNAME , S.FSTAFFID, P.FPERSONID, U.FUSERID, U.FNAME from T_SEC_USER Uinner join t_BD_Person P ON (u.FLINKOBJECT = P.FPERSONID)inner join T_BD_STAFF S ON (P.FPERSONID = S.FPERSONID)inner join T_BD_DEPARTMENT D ON (S.FDEPTID = D.FDEPTID) left join T_BD_DEPARTMENT_L D_L ON (D.FDEPTID= D_L.FDEPTID AND D_L.FLOCALEID = 2052) where U.FUserId = @FUserId"; using (IDataReader reader = DBServiceHelper.ExecuteReader(this.Context, sqlGetDeptId, paramList)) { while (reader.Read()) { this._deptId = Convert.ToInt64(reader[0]); break; } } // 读取登录用户对应的采购员 BD_BUYER // 用户 -> 人员 -> 员工任岗 -> 操作员 string sqlGetBuyerId = @"select O.FENTRYID, S.FSTAFFID, S_L.FNAME, P.FPERSONID, U.FUSERID, U.FNAME from T_SEC_USER Uinner join t_BD_Person P ON (u.FLINKOBJECT = P.FPERSONID)inner join T_BD_STAFF S ON (P.FPERSONID = S.FPERSONID) left join T_BD_STAFF_L S_L ON (S.FSTAFFID = S_L.FSTAFFID AND S_L.FLOCALEID = 2052)inner join T_BD_OPERATORENTRY O ON (O.FSTAFFID = S.FSTAFFID AND O.FOPERATORTYPE = 'CGY')where U.FUserId = @FUserId"; using (IDataReader reader = DBServiceHelper.ExecuteReader(this.Context, sqlGetBuyerId, paramList)) { while (reader.Read()) { this._buyerId = Convert.ToInt64(reader[0]); break; } } // 读取登录用户对应的仓管员 BD_WAREHOUSEWORKERS // 用户 -> 人员 -> 员工任岗 - 操作员 string sqlGetStockerId = @"select O.FENTRYID, S.FSTAFFID, S_L.FNAME, P.FPERSONID, U.FUSERID, U.FNAME from T_SEC_USER Uinner join t_BD_Person P ON (u.FLINKOBJECT = P.FPERSONID)inner join T_BD_STAFF S ON (P.FPERSONID = S.FPERSONID) left join T_BD_STAFF_L S_L ON (S.FSTAFFID = S_L.FSTAFFID AND S_L.FLOCALEID = 2052)inner join T_BD_OPERATORENTRY O ON (O.FSTAFFID = S.FSTAFFID AND O.FOPERATORTYPE = 'WHY')where U.FUserId = @FUserId"; using (IDataReader reader = DBServiceHelper.ExecuteReader(this.Context, sqlGetStockerId, paramList)) { while (reader.Read()) { this._stockerId = Convert.ToInt64(reader[0]); break; } } // 读取登录用户对应的销售员 BD_Saler // 用户 -> 人员 -> 员工任岗 - 操作员 string sqlGetSalerId = @"select O.FENTRYID, S.FSTAFFID, S_L.FNAME, P.FPERSONID, U.FUSERID, U.FNAME from T_SEC_USER Uinner join t_BD_Person P ON (u.FLINKOBJECT = P.FPERSONID)inner join T_BD_STAFF S ON (P.FPERSONID = S.FPERSONID) left join T_BD_STAFF_L S_L ON (S.FSTAFFID = S_L.FSTAFFID AND S_L.FLOCALEID = 2052)inner join T_BD_OPERATORENTRY O ON (O.FSTAFFID = S.FSTAFFID AND O.FOPERATORTYPE = 'XSY')where U.FUserId = @FUserId"; using (IDataReader reader = DBServiceHelper.ExecuteReader(this.Context, sqlGetSalerId, paramList)) { while (reader.Read()) { this._salerId = Convert.ToInt64(reader[0]); break; } } } /// <summary> /// 新增单据时触发此事件:在此事件中,设置各字段默认值 /// </summary> /// <param name="e"></param> public override void AfterCreateNewData(EventArgs e) { this.Model.SetItemValueByID("F_JD_UserId", this.Context.UserId, 0); this.Model.SetItemValueByID("F_JD_EmpId", this._empId, 0); this.Model.SetItemValueByID("F_JD_StaffId", this._staffId, 0); this.Model.SetItemValueByID("F_JD_DeptId", this._deptId, 0); this.Model.SetItemValueByID("F_JD_BuyerId", this._buyerId, 0); this.Model.SetItemValueByID("F_JD_StockerId", this._stockerId, 0); this.Model.SetItemValueByID("F_JD_SalerId", this._salerId, 0); } }}
0 0
- 如何为单据设置员工、部门、操作员默认值
- 如何为控件设置默认值
- 基础资料、业务单据,新增时默认值设置,初始值设定
- Mysql中如何设置日期字段默认值为当前日期
- android 如何设置屏幕亮度默认值为自动调节
- Mysql中如何设置日期字段默认值为当前日期
- android 如何设置屏幕亮度默认值为自动调节
- Mysql中如何设置日期字段默认值为当前日期
- input如何设置默认值
- dropdownlist ,如何设置默认值
- mysql 为列设置默认值
- JPA为字段设置默认值
- mysql为数据库设置默认值
- 为10号部门的员工涨工资
- 如何设置流程表单单据打印?
- rails form 如何设置默认值
- TestComplete如何设置参数默认值
- K3操作-1 关于在K3中如何更改当前操作员的设置
- 基本路径测试
- Zend Studio 13安装配置及解决方案
- maven 私服讲解----学习笔记
- 基于wifi的智能家居遥控器iOS端
- 个性推送
- 如何为单据设置员工、部门、操作员默认值
- Maven 3.0.5 安装和配置:
- 5555555555555555555555
- 易语言学习第三十三课----易语言模块的导入和编写
- window.XMLHttpRequest
- Maven中央仓库地址整理
- WAMP本地环境升级php版本操作步骤(详细)
- qt qobject_cast用法
- 如何分批分层的加载树节点