PLM.二开案例,自定义调整BOM变更字段(PT-151002及以往版本适用)
【应用场景】
设计变更单BOM变更界面字段需自定义调整
* 补丁版本PT-151005 [8.2.0.20231109]中已新增支持BOM变更界面用户列配置,可以不再需要此开发方案
【实现说明】
BOM变更界面字段为动态加载,字段按默认顺序加载,暂时无法通过配置调整或适用用户布局方案。如果需要自定义调整字段布局,需要通过插件二开实现。
实现原理:
标准插件在页面渲染前动态加载了配置列,需要再调整需要通过继承标准插件重写OnSetLayoutInfo方法,在已动态渲染的列信息上再次调整并刷新页面显示。
【实现步骤】
<1>编写表单插件,继承标准的BOM变更插件StructureChangeForm。
你可能需要引用以下组件:
示例代码:
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel; using Kingdee.BOS.Core.Metadata.ControlElement; using Kingdee.BOS.Core.Metadata.EntityElement; using Kingdee.K3.PLM.STD.Business.PlugIn.EngineeringChange; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ISV.EChangeForm.Common.BusinessEntity { public class EChangeForm: StructureChangeForm { private Dictionary<string, int> CustomIndex = new Dictionary<string, int>() { {"FIsSelect",0}, {"FItemType",1}, {"FBomObject",2}, {"FBomName",3}, {"FSyncErpMode",4}, {"FSyncErpTime",5}, {"FSlaveEntrySeq",6}, {"FSlaveMat",7}, {"FSlave_FName",8}, {"FSlave_FSpecification",9}, {"FSlave_FModel",10}, {"FSlave_FBASEUNITID",11}, {"FBOMNUMBER",12}, {"FSubBom",13}, {"FRadix",14}, {"FWaste",15}, {"FSUBEFFECTIVEDATE",16}, {"FSUBEXPIRYDATE",17}, {"FISSKIP",18}, {"FMATERIALTYPE",19}, {"FIsKeyItem",20}, {"FReplacePolicy",21}, {"FReplacePriority",22}, {"FReplaceType",23}, {"FMRPPriority",24}, {"FNetDemandrate",25}, {"FSubstituteCode",26}, {"FSubstituteName",27}, {"FAsssemblyPosition",28}, {"FAddPOS_FAsssemblyPosition",29}, {"FDelPOS_FAsssemblyPosition",30}, {"FTempPOS_FAsssemblyPosition",31}, {"FMainMat",32}, {"FMain_FName",33}, {"FMain_FBASEUNITID",34} }; public override void OnSetLayoutInfo(SetLayoutInfoArgs e) { base.OnSetLayoutInfo(e); //调用Base 获取标准动态加载的动态列Layout LayoutInfo _layoutInfo = e.LayoutInfo; //* 原理:通过调整LayoutInfo自定义字段展示 //* 注意:标准插件中未对TabInde进行规整,默认按照动态列集合赋予顺序。 // 如果需要二开调整,请完整考虑所有可见字段的顺序,而非单独调整某个字段 // 本示例中简单的硬编码了测试系统中所有字段编码与索引,请根据各自系统的业务与字段配置自行调整。 EntityAppearance listAppearance = _layoutInfo.GetEntityAppearance(strentity); foreach (var listApp in listAppearance.Entity.Fields) { var app = _layoutInfo.GetFieldAppearance(listApp.Key); if (CustomIndex.ContainsKey(listApp.Key)) { app.Tabindex = CustomIndex[listApp.Key]; } } listAppearance.Layoutinfo.Sort(); //根据索引排序 //动态更新显示 EntryGrid grid = this.View.GetControl<EntryGrid>(strentity); grid.SetAllowLayoutSetting(false); grid.CreateDyanmicList(listAppearance, new Dictionary<object, object>() { { "primaryKey", "FROWID" } }); this.View.SendDynamicFormAction(this.View); } } }
<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。
<3>BOSIDE扩展应BOM变更单,注册二开插件并取消标准插件,保存元数据,开发完毕。
【功能验证】
<1>登录业务站点,验证结果
【参考资料】
【汇总】星空PLM二开指南(持续更新...) (kingdee.com)
PLM.二开案例,自定义调整BOM变更字段(PT-151002及以往版本适用)
【应用场景】设计变更单BOM变更界面字段需自定义调整* 补丁版本PT-151005 [8.2.0.20231109]中已新增支持BOM变更界面用户列配置,可以不再...
点击下载文档
本文2024-09-23 03:05:13发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-156625.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章