PLM.二开案例.对象平台二开方案(物料平台/文档平台)
【应用场景】
PLM的物料、文档等平台框架添加自定义页签,并展示自定义内容。
【实现说明】
目前PLM物料、文档等对象打开时,在对象基础信息基础外套用了一个PLM平台框架,里面包含了其他相关信息的页签(相关对象、相关过程等);
在PLM平台框架下,通过表单参数传递了相关的业务信息,如需二开需要通过表单参数获取必要的对象信息,以便开发;
本案例主要说明相关参数的内容以及使用;
附元数据标识:
物料平台 PLM_CFG_MATERIALPLATFORM
文档平台 PLM_CFG_DOCPLATFORM
【案例演示】
物料平台添加一个页签,用于展示物料对应的替代方案信息。
【实现步骤】
本文主要提供PLM平台框架的二次开发方案说明以及代码示例,关于BOS扩展等其他操作请参考文末资料;
方案一:自定义解析表单参数
主表单参数说明:
参数标识 | 类型(C#) | 说明 |
plm_param_Platform_TempObjectId | long | 页签组id。如果对象没有BOM(获文档组),id为对象本身,否则为BOM的id;如果是BOM Id需要再自行获取父项Id |
plm_param_IsHistory | bool | 是否为历史;在查看历史信息时为true |
plm_param_HistoryVersionInfo | Kingdee.BOS.Orm.DataEntity.DynamicObject | 历史版本履历信息;如果是查看历史,此处会有相关的历史版本信 |
plm_param_IsFlow | bool | 是否流程操作;用于表明是否从PLM审核流程中查看对象 |
plm_param_IsChangeObject | bool | 是否为新版对象;用于表明是否为从变更单中查看的新版对象 |
参考组件:
代码示例:
using Kingdee.BOS.Core.DynamicForm; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.List; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Util; using Kingdee.K3.PLM.Business.PlugIn; using Kingdee.K3.PLM.CFG.Common.BusinessEntity.Base; using Kingdee.K3.PLM.CFG.Common.BusinessEntity.Manager; using System; using System.ComponentModel; namespace ISV.PlatformDemo.Common.BusinessEntity { [Description("物料平台开发演示"), HotUpdate] public class MaterialPlatformEx : AbstractPLMDynamicFormPlugIn { long objectId = 0; public override void PreOpenForm(PreOpenFormEventArgs e) { objectId = long.Parse(e.OpenParameter.GetCustomParameter("plm_param_Platform_TempObjectId").ToString()); base.PreOpenForm(e); } public override void OnLoad(EventArgs e) { var currentObj = DomainObjectManager.InstanceByObjectId(PLMContext, objectId).Get(PLMContext, objectId); long matId; if (CategoryContract.Instance.IsRelationCategory(PLMContext, Convert.ToInt64(currentObj["CategoryId_Id"]))) //是否为关系类型 { DynamicObject dyn = BaseObjectManager.Instance(PLMContext).GetMainRelation(PLMContext, objectId); matId = long.Parse(dyn["FMAINRELATION"].ToString()); } else { matId = objectId; } ShowSubList(matId); base.OnLoad(e); } private void ShowSubList(long objId) { var listShowParameter = new ListShowParameter(); listShowParameter.FormId = "PLM_STD_BOM_SUB"; listShowParameter.PageId = Guid.NewGuid().ToString(); listShowParameter.ParentPageId = this.View.PageId; listShowParameter.OpenStyle.ShowType = ShowType.InContainer; listShowParameter.OpenStyle.TagetKey = "FPanel_SubList"; //自定义的面板标识 listShowParameter.HideListMenu = true; listShowParameter.IsShowQuickFilter = false; listShowParameter.MultiSelect = false; listShowParameter.CustomParams.Add("IsSelectPLM", "1"); //PLM替代方案列表需要此参数 listShowParameter.IsShowUsed = false; listShowParameter.IsShowApproved = false; // 给列表设置固定过滤条件 listShowParameter.ListFilterParameter.Filter = string.Format("FMATERIALID='{0}'", objId); this.View.ShowForm(listShowParameter); } } }
方案二:继承PLM抽象插件AbstractPlatformBill
针对此类平台框架,PLM有抽象了一个平台表单插件,里面预处理了常用的业务数据,可以直接调用相关的属性。
参考组件:
参考代码:
using Kingdee.BOS.Core.DynamicForm; using Kingdee.BOS.Core.List; using Kingdee.BOS.Util; using Kingdee.K3.PLM.CFG.Business.PlugIn.Common; using System; using System.ComponentModel; namespace ISV.PlatformDemo.Common.BusinessEntity { [Description("物料平台开发演示"), HotUpdate] public class MaterialPlatformEx : AbstractPlatformBill { /* * 主要插件属性说明 * MatOrDocObjectId: 物料或文档Id * BomId: Bom或者文档组Id * IsHistory: 是否为历史信息 * HistoryVersionInfo:历史版本信息 * IsFlowOperation: 是否流程操作 * IsChangeObject: 是否为变更新版对象 */ public override void AfterBindData(EventArgs e) { ShowSubList(MatOrDocObjectId); base.AfterBindData(e); } private void ShowSubList(long objId) { var listShowParameter = new ListShowParameter(); listShowParameter.FormId = "PLM_STD_BOM_SUB"; listShowParameter.PageId = Guid.NewGuid().ToString(); listShowParameter.ParentPageId = this.View.PageId; listShowParameter.OpenStyle.ShowType = ShowType.InContainer; listShowParameter.OpenStyle.TagetKey = "FPanel_SubList"; //自定义的面板标识 listShowParameter.HideListMenu = true; listShowParameter.IsShowQuickFilter = false; listShowParameter.MultiSelect = false; listShowParameter.CustomParams.Add("IsSelectPLM", "1"); //PLM替代方案列表需要此参数 listShowParameter.IsShowUsed = false; listShowParameter.IsShowApproved = false; // 给列表设置固定过滤条件 listShowParameter.ListFilterParameter.Filter = string.Format("FMATERIALID='{0}'", objId); this.View.ShowForm(listShowParameter); } public override void SetDifferenceForm(long id, long category, long bomid, long bomcategoryid) { //插件预置的页签处理,也可以在这里面写 //ShowSubList(id); } public override void SetTabVisible() { //缺省 } } }
【功能验证】
【参考资料】
二开案例.表单插件.面板中嵌入窗体 (kingdee.com)
PLM星空相关数据表结构--二开 (kingdee.com)
【汇总】星空PLM二开指南(持续更新) (kingdee.com)
金蝶云星空BOS二次开发案例演示 (kingdee.com)
PLM.二开案例.对象平台二开方案(物料平台/文档平台)
【应用场景】PLM的物料、文档等平台框架添加自定义页签,并展示自定义内容。【实现说明】目前PLM物料、文档等对象打开时,在对象基础信息基...
点击下载文档
本文2024-09-23 03:01:35发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-156152.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章