C#二开——单据新增获取当前用户对应的职员名称原创
金蝶云社区-爱孤独又爱你
爱孤独又爱你
91人赞赏了该文章 682次浏览 未经作者许可,禁止转载编辑于2024年01月29日 16:08:10

       之前用python代码写的获取当前用户对应的职员名称,不知道是因为升级到了8.2后的原因,还是用了半年时间,导致单据新增或者在列表打开单据查看都很慢慢很慢慢的,我就想着改成C#代码看会不会也这样,结果用了C#代码跟没挂插件一样的速度,特地把代码分享一下,劝告一下各位,8.1以后尽量用C#开发,不要直接挂python语句注册;


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using Kingdee.BOS;

using Kingdee.BOS.Core.Bill.PlugIn;

using System.ComponentModel;

//用于写sql

using Kingdee.BOS.App.Data;

using Kingdee.BOS.Core.Metadata;



namespace ZJX.T_PLN_PLANORDER.Business.PlugIn

{

    [Kingdee.BOS.Util.HotUpdate]

    [Description("【表单插件】简单生产领料新增获取用户名")]

    public class GetuserID : AbstractBillPlugIn

    {

        public override void AfterBindData(EventArgs e)

        {

            base.AfterBindData(e);

            //这个方法是判断单据状态。

            //有四种:ADDNEW、EDIT、VIEW、DISASSEMBLY

            //新增、编辑、查看、卸载

            //如果是,新增状态 ADDNEW

            if (this.View.OpenParameter.Status.Equals(OperationStatus.ADDNEW))

            {

                //给领料人,赋值

                var empId = DBUtils.ExecuteScalar<string>(this.Context, @"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 = @UserId;",string.Empty,new Kingdee.BOS.SqlParam("@UserId", Kingdee.BOS.KDDbType.Int64, this.Context.UserId));


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


                //刷新这个字段

                this.View.UpdateView("FPICKERID");


            }

        }

    }

}


赞 91