单据上如何增加类似检验单上查看技术文档的功能原创
3人赞赏了该文章
969次浏览
编辑于2020年12月24日 20:10:03
问题描述:单据上需要增加类似检验单表体菜单技术文档一样的功能,实现单据上选择分录行,查询物料对应的技术文档的功能。
本例以不良品处理单为例:
1、扩展不良品处理单,在单据的操作列表中增加一个空操作类型的操作,修改一下操作代码(注意这里的操作代码在后续代码中会使用)
2、在不良品处理单单据体菜单中增加按钮,绑定上一步新增加的空操作:
3、二开表单插件继承AbstractBillPlugIn,挂在标准产品表单插件之后:
示例代码如下:
using System.Linq; using System.Text; using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.K3.Core.MFG.EnumConst; using Kingdee.BOS.Util; using Kingdee.BOS.Core.List; using Kingdee.BOS.Core.Permission; using Kingdee.BOS.Core.DynamicForm; using Kingdee.K3.Core.MFG.EntityHelper; using Kingdee.K3.MFG.BusinessCommon; using Kingdee.BOS.Orm.DataEntity; using Kingdee.K3.Core.MFG.Utils; namespace TEST.Kingdee.K3.MFG.QM.Business.PlugIn { public class DefectBillEdit : AbstractBillPlugIn { public override void AfterDoOperation(AfterDoOperationEventArgs e) { base.AfterDoOperation(e); switch (e.Operation.Operation.ToUpperInvariant()) { case "GETTECHDOC"://新增加的空操作类型操作对应的操作码大写格式(步骤1中注意部分) GetTechDoc(); break; } } /// <summary> /// 获取表体选中行的物料ID,并打开技术文档界面 /// </summary> private void GetTechDoc() { List<DynamicObject> selDatas = this.View.GetSelectedRowDatas(CONST_QM_DefectProcessBill.CONST_FEntity.ENTITY_FEntity).ToList();//单据体标识 if (selDatas.IsEmpty()) return; long orgId = this.View.Model.GetValue<long>(CONST_QM_DefectProcessBill.CONST_FBillHead.KEY_FSourceOrgId);//单据上组织字段标识,即后续查看技术文档的使用组织 List<string> numbers = new List<string>(); List<long> materialIds = new List<long>(); foreach (DynamicObject obj in selDatas) { DynamicObject mtrl = obj.GetDynamicValue<DynamicObject>(CONST_QM_DefectProcessBill.CONST_FEntity.ORM_MateridlId);//选中行物料的ORM标识(BOS设计器可以查看) if (mtrl.IsNullOrEmpty()) continue; numbers.Add(mtrl.GetDynamicValue<string>("Number")); } Dictionary<string, List<long>> materialInfos = BusinessUtils.GetMulBaseIds(this.Context, "BD_MATERIAL", numbers, "FMATERIALID", string.Format("FUSEORGID = {0}", orgId)); foreach (var key in materialInfos) { materialIds.AddRange(key.Value); } if (materialIds.IsEmpty()) return; var param = new ListSelBillShowParameter(); param.FormId = "ENG_TechDoc"; param.PermissionItemId = PermissionConst.View; param.PageId = SequentialGuid.NewGuid().ToString(); param.OpenStyle.ShowType = ShowType.Floating; param.UseOrgId = this.View.Model.GetValue<long>("FSourceOrgId"); param.IsIsolationOrg = false; param.CustomComplexParams.Add("MaterialId", materialIds.Distinct().ToList()); this.View.ShowForm(param); } } }
赞 3
3人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读