背景:PLM设计变更管理变更单里面,默认只有显示变更对象的编码和名称,而EBOM的编码一般是会设置规则,或者系统自带的BOM编码规则,不会显示父物料编码的信息。
如下图:
有很多客户反馈在审核或者做单的时候看不到父项物料编码和名称,无法直观看出是哪个BOM。特别是如果名称一样的话,就无法进行区分了。
可以通过二开插件方式来显示变更单相关对象的其他信息。
实现方法如下:
参考代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.K3.PLM.Business.PlugIn;
using Kingdee.K3.PLM.CFG.Common.BusinessEntity.Manager.Version;
namespace ISV.EcnEntity.Common.BusinessEntity
{
//插件名字
[Description("显示BOM父物料编码等相关信息插件")]
public class EcnBillDemoPlugin : AbstractPLMBillPlugIn
{
public override void DataChanged(DataChangedEventArgs e)
{
if (e.Field.Key.ToUpperInvariant().Equals("FREFVERSIONID"))
{
if (Convert.ToInt64(e.NewValue) > 0)
{
var versionId = Convert.ToInt64(e.NewValue);
var objCategory = Convert.ToInt64((this.View.Model.GetValue("FObjectCategory", e.Row) as DynamicObject)["Id"]);
var versionObj = GlobalVersionManager.Instance(PLMContext, objCategory).Get(PLMContext, versionId);
if (versionObj != null)
{
var mainRelation = versionObj["MainRelation"] as DynamicObject;
if (mainRelation != null)
{
this.Model.SetValue("FBOMParentInfo", string.Format("{0}({1})", mainRelation["Code"], mainRelation["Name"]), e.Row);
}
}
}
}
base.DataChanged(e);
}
}
}
生成插件组件后拷贝到变更单表单插件里面。
需要在BOS扩展添加自定义文本字段,标识为FBOMParentInfo
然后注册表单插件
最后更新业务类型模型,更新ECN模板
实现效果如下:其他变更对象属性信息也可以参照类似方法实现。