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变更对象和批量替换信息等,所以单据...
点击下载文档
本文2024-09-23 03:05:19发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-156635.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章