PLM二开.设计变更.变更对象字段解读.不同阶段获取变更对象信息

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

PLM二开.设计变更.变更对象字段解读.不同阶段获取变更对象信息

# 引言 设计变更中,由于变更对象列表中包含不同类型的对象信息,包括业务类型对象、ERP评估对象、BOM变更对象和批量替换信息等,所以单据体中没有统一的基础资料字段方便BOSIDE二次开发。对象标识根据不同阶段变更的需要,放置于不同的标识字段中,它们一般为文本字段或者整型字段。本文主要介绍关键的对象标识字段,以便插件二开中根据需要获取相对应的对象。 本文基于版本8.0.0.202206编写。 # 字段解析 ![image.webp](/download/010034ff1b94e3e74c0ab2ea5e4cd6f285cb.webp) |字段标识|字段名|解释| |-|-|-| |FItemType |变更项类型|枚举类型,用于标识变更形式,主要包括‘设计变更’、‘结构变更’与‘批量替换’,本文涉及的内容主要针对‘设计变更’与‘结构变更’,由于批量替换包含多个对象内容,以下的对象标识暂时不具参考意义。| |FObjectType|变更对象类型|枚举类型,用来标识变更对象的类型。此枚举值小于10表明为PLM领域业务对象,才适用PLM领域的二次开发规范| |FBaseObject|变更对象标识|整数类型,对象内码。对于设计变更对象,变更单非审核时为实际对象内码,审核时为变更中新版对象的内码。结构变更对象始终为BOM对象内码。| |FRefVersionId|原版本标识|整数类型,版本对象内码。记录发起变更时对象的版本对象内码,‘设计变更’与‘结构变更’对象一旦加入变更对象列表后不再改变。| |FNewVersionId|新版本标识|整数类型,新版对象内码。生效后的对象版本内码,生效后不再改变。| |FOPERATION|修改报告|XML类型, 用于存放BOM结构变更信息。 '结构变更'与'批量替换'类型在维护好信息后保存于此字段。'设计变更'类型的BOM对象,生效后生成修改报告保存于此字段(与结构变更报告格式一致)。更多修改报告字段解读可参考[PLM二开.变更单.结构变更修改报告数据解析](https://vip.kingdee.com/article/382487033048242176)| # 获取不同阶段对象信息 ### 对象获取 当前对象或者变更中的新版临时对象都可以通过对象内码在T_PLM_PDM_BASE表中找到,PLM领域组件也提供了相关的对象获取方法,此部分可参考[PLM二开常用获取对象方法及异常分析](https://vip.kingdee.com/article/318040616238148352?productLineId=1) ### 历史版本对象获取 PLM业务对象版本变更后都会为对象存一份历史版本内容,以便历史追溯。变更单记录了相关的版本信息,以便将来查看变更的历史信息。历史版本内容可以通过历史版本VersionId在T_PLM_PDM_BASEVERSION表中找到,PLM领域组件也提供了历史版本对象的获取方法。 组件中Kingdee.K3.PLM.CFG.Common.BusinessEntity.dll,命名空间Kingdee.K3.PLM.CFG.Common.BusinessEntity.Manager.Version 中的类GlobalVersionManager包含了一系列历史对象获取方法。 # 二开示例 本处演示在变更对象中新增一个字段,用于显示物料对象的规格内容。 ```csharp using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Util; using Kingdee.K3.PLM.CFG.Business.PlugIn.Common; using Kingdee.K3.PLM.CFG.Common.BusinessEntity.Base; using Kingdee.K3.PLM.CFG.Common.BusinessEntity.Manager.Version; using Kingdee.K3.PLM.Common.Core.ServiceHelper; using System; using System.ComponentModel; using System.Linq; namespace Kingdee.K3.PLM.STD.Business.PlugIn.EngineeringChange { [Description("变更单二开示例")] public class EcnDevDemo : AbstractPLMSTDBillPlugIn { /// <summary> /// 单据的控制标准类型 /// </summary> protected override StandardCategoryType categoryType { get { return StandardCategoryType.EngineeringChange; } } public override void AfterBindData(EventArgs e) { base.AfterBindData(e); if (!this.View.BusinessInfo.ContainsKey("FMatSpec")) return; var changeEntity = (DynamicObjectCollection)this.Model.DataObject["ChangeObjectEntity"]; var index = 0; foreach (var item in changeEntity) // 简单遍历以演示,实际使用请考虑性能 { if(Convert.ToInt32(item["ObjectType"]) <= 10 && Convert.ToInt32(item["ItemType"]) == 1) //过滤变更对象类型 { var oldVerId = Convert.ToInt64(item["RefVersionId"]); //对象版本ID if (oldVerId != 0) { var oldVerObj = GlobalVersionManager.InstanceByObjectId(this.PLMContext, oldVerId).Get(PLMContext, oldVerId); if(oldVerObj!= null && CategoryContract.Instance.IsMaterialCategory(Convert.ToInt64(oldVerObj["CategoryId_Id"])) && // 只获取物料对象 oldVerObj.Contains("Specification")) { this.View.Model.SetValue("FMatSpec", oldVerObj["Specification"], index); //自定义字段赋值 } } } index++; } } } } ``` ![image.webp](/download/010048ca24753ca4432fab1eb6b98beedf21.webp)

PLM二开.设计变更.变更对象字段解读.不同阶段获取变更对象信息

# 引言设计变更中,由于变更对象列表中包含不同类型的对象信息,包括业务类型对象、ERP评估对象、BOM变更对象和批量替换信息等,所以单据...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息