
# 引言
设计变更中,由于变更对象列表中包含不同类型的对象信息,包括业务类型对象、ERP评估对象、BOM变更对象和批量替换信息等,所以单据体中没有统一的基础资料字段方便BOSIDE二次开发。对象标识根据不同阶段变更的需要,放置于不同的标识字段中,它们一般为文本字段或者整型字段。本文主要介绍关键的对象标识字段,以便插件二开中根据需要获取相对应的对象。
本文基于版本8.0.0.202206编写。
# 字段解析

|字段标识|字段名|解释|
|-|-|-|
|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 StandardCate