订单进度跟踪二开字段原创
23人赞赏了该文章
387次浏览
编辑于2023年11月30日 15:32:12
系统内置了订单进度跟踪(动态表单),怎样使用请看:https://vip.kingdee.com/school/detail/254301001912965632?productLineId=1
以及提供了可配置的添加字段的方法:
https://vip.kingdee.com/article/449625075612991744?productLineId=1&isKnowledge=2
但是此方法只能添加销售订单内有的字段,无法个性化定义,例如:我要在销售页签内查看销售报价、模拟报价、二开单据等等信息,经过查看源码,摸索出了一个业务关联添加字段的方法,正片开始
一、首先我们在BOS内扩展单据,并拖入合适的字段类型
二、插件工程新增一个类,继承AbstractBillPlugIn,并重写BarItemClick(参照了:https://vip.kingdee.com/article/272105314009335808?productLineId=1&isKnowledge=2
,且通过查看源码,该单据内的刷新按钮是通过该方法触发的),刚开始打算与原刷新按钮一同触发(tbRefreash),但是经过实践,无论是调整插件执行顺序,还是直接执行,都无法实现原插件获取到数据后在执行此次插件内容,有知道的大佬可以留言指导我下,这里我添加了一个按钮,并对该按钮做取数处理
using Kingdee.BOS; using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.ServiceHelper; using System; using System.ComponentModel; using System.Linq; namespace DEMO { [Description("订单进度跟踪 - 获取模拟报价信息")] //GetMockQuoteInformationPlugIn public class GetMockQuoteInformationPlugIn : AbstractBillPlugIn { public override void BarItemClick(BarItemClickEventArgs e) { base.BarItemClick(e); if (e.BarItemKey.Equals("tbRefreashs")) { //获取销售订单单据id集合 String FSoEntryId = this.Model.GetValue("FSoEntryId").ToString(); string sql = string.Format(@"/*dialect*/ 取数的SQL ", FSoEntryId.Replace(";", ",")); DynamicObjectCollection RS = DBServiceHelper.ExecuteDynamicObject(this.Context, sql); //获取单据体,行数 for (int i = 0; i < this.Model.GetEntryRowCount("FEntity"); i++) { String FFormId = this.Model.GetValue("FFormId", i).ToString(); String FBillEntryId = this.Model.GetValue("FBillEntryId", i).ToString(); if (FFormId == "SAL_SaleOrder") { //此处是因为我是依照销售订单分录内码来做关联的,考虑到性能,在上面统一获取数据,此处配合前面获取单据体行数的for,来匹配需要输出的数据 for (int ii = 0; ii < RS.Count(); ii++) { //如果当前行销售订单分录内码 = sql结果集里对应的销售订单分录内码 if (FBillEntryId == RS[ii]["FENTRYID"].ToString()) { //注意,此时不要使用this.view.Model.SetValue,此时不处在view层 this.Model.SetValue("字段标识", 值, i); this.Model.SetValue("字段标识", 值, i); this.Model.SetValue("字段标识", 值, i); } } } } //this.View.UpdateView("FEntity"); } } } }
三、看一下实现效果
因为社区内没有相应的教程,该功能是一步步调试了无数次摸索出来的,处理方式不一定规范,如果有更好的处理方式请联系我。
完结,撒花