15、 表单插件,简单的条码扫描示例,CustomEvents原创
18人赞赏了该文章
7,740次浏览
编辑于2020年07月03日 14:31:40
业务场景:输入条码,解析出物料编码等等
续
1、打开VS,新建一个类库,具体可以参考4.1 ,1-7步
2、扩展销售出库单,添加一个文本字段,条码 F_YDIE_TM
3、后面通过代码新增行,目前先设置0行
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(); })); } } } } } }
5、重新生成dll
6、自定义条码示例格式:
002@20190102@190102@TS00001
物料编码@生产日期@批号@序列号
7、最终效果,打开销售出库单,输入条码 002@20190102@190102@TS00001,自动解析出物料
总目录链接
https://vip.kingdee.com/article/64993872014591232
Kingdee.Bos.Test15.zip(57.68KB)
赞 18
18人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!