15、 表单插件,简单的条码扫描示例,CustomEvents原创
金蝶云社区-林荫大道cc
林荫大道cc
14人赞赏了该文章 6083次浏览 未经作者许可,禁止转载编辑于2020年07月03日 14:31:40
封面


业务场景:输入条码,解析出物料编码等等




4.1




1、打开VS,新建一个类库,具体可以参考4.1 ,1-7步




2、扩展销售出库单,添加一个文本字段,条码 F_YDIE_TM


image.png




3、后面通过代码新增行,目前先设置0行


image.png



3、添加引用


using Kingdee.BOS.Core.DynamicForm;




4、

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS;
using Kingdee.BOS.Core.Bill.PlugIn;
using System.ComponentModel;

//弹窗
using Kingdee.BOS.Core.DynamicForm;


namespace Kingdee.Bos.Project.BillCustomEvents
{
    [Description("简单条码扫描")]
    [Kingdee.BOS.Util.HotUpdate]
    
    public class ClassName:AbstractBillPlugIn
    {
        //
        public override void CustomEvents(BOS.Core.DynamicForm.PlugIn.Args.CustomEventsArgs e)
        {
            base.CustomEvents(e);
            
            //第一个判断,如果是条码
            if(e.Key.Equals("F_YDIE_TM"))
            {
                //捕获,回车
                if(e.EventName == "EnterKeyPressed")
                {
                    //把输入的条码,获取过来,拆分成数组
                    //@ 分割符号
                    string[] strArray = this.View.Model.GetValue("F_YDIE_TM").ToString().Trim().Split('@');  
                    
                    //如果分割成4块,说明是正确的,否则提示报错
                    if(strArray.Length ==4)
                    {
                        //创建新行
                        this.View.Model.CreateNewEntryRow("FEntity");
                        
                        //输入条码,给物料编码,赋值;第一个数组,第一个行
                        //获取单据体行数 this.Model.GetEntryRowCount("FEntity");
this.View.Model.SetItemValueByNumber("FMaterialID", strArray[0], this.Model.GetEntryRowCount("FEntity")-1);
                        
                        //调用值更新,刷新,带出物料的计量单位等等
this.View.InvokeFieldUpdateService("FMaterialID", this.Model.GetEntryRowCount("FEntity") - 1);
                        
                        //方便连续扫描,清空当前字段
                        this.View.Model.SetValue("F_YDIE_TM","");
                       
                        //设置焦点,一直在条码上
                        this.View.GetControl("F_YDIE_TM").SetFocus();
                    }
                    else
                    {
                        //弹出错误提示,清空数据,指向焦点。
                        this.View.ShowMessage("条码位数出错,请检查。。。", MessageBoxOptions.OK,
                        new Action<MessageBoxResult>((result) =>
                        {
                            this.Model.SetValue("F_YDIE_TM", "");
                            
                            //设置焦点
                            this.View.GetControl("F_YDIE_TM").SetFocus();
                        }));
                    }
                }
            }
        }
    }
}



image.png



image.png



5、重新生成dll



6、自定义条码示例格式:


002@20190102@190102@TS00001

物料编码@生产日期@批号@序列号



7、最终效果,打开销售出库单,输入条码 002@20190102@190102@TS00001,自动解析出物料


image.png



总目录链接

https://vip.kingdee.com/article/64993872014591232





赞 14