PLM.二开案例.变更单生效后归档附件

【应用场景】
本文以归档附件为例,演示如何干预变更单生效操作
【注意事项】
变更单生效基于性能考虑,区别于标准的平台操作插件事件,无法操作事务内或者事务外。只能通过继承重写标准插件的方式,将自定义业务集成进标准业务操作中。
【案例演示】
PLM变更单,生效后归档附件
【实现步骤】
<1>编写服务插件,继承标变更单生效插件,
引用如下:

代码如下:
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.K3.PLM.CFG.Common.BusinessEntity.Manager;
using Kingdee.K3.PLM.CFG.Common.BusinessEntity.Operation;
using Kingdee.K3.PLM.Common.Core.BOSBridge;
using Kingdee.K3.PLM.Common.Core.Common;
using Kingdee.K3.PLM.STD.App.ServicePlugIn.EngineeringChange;
using System;
using System.Collections.Generic;
using System.Linq;
namespace ISV.EcnSetEffective.Common.BusinessEntity
{
public class EcnSetEffectiveService : EffectChangeService
{
protected override Func<PLMContext, ProgressTrace, List<IOperationResult>> operationFunction
{
get
{
return new Func<PLMContext, ProgressTrace, List<IOperationResult>>((ctx, progressTrace) =>
{
var results = base.operationFunction(ctx, progressTrace); //先执行标准生效
if (!results.Exists(m => m.IsSuccess == false))
{
List<long> attObjIds = new List<long>();
foreach (var ecn in this.Models)
{
var attEntity = (DynamicObjectCollection)ecn["EntityAtt"]; //附件单据体
if (attEntity != null)
{
attObjIds.AddRange(attEntity.Select(x => Convert.ToInt64(x["AttachObject_Id"])));
}
}
if (attObjIds.Any())
{
var attObjs = DomainObjectManager.AutoLoad(cPLM.二开案例.变更单生效后归档附件
【应用场景】本文以归档附件为例,演示如何干预变更单生效操作【注意事项】变更单生效基于性能考虑,区别于标准的平台操作插件事件,无法操...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



