? 插件准备
? 插件工程引用Kingdee.BOS.App.dll、Kingdee.BOS.Contracts.dll、
Kingdee.BOS.DataEntity.dll ? 类文件引用相关命名空间,详见示例代码
? 接口介绍
? 同Web层插件介绍 ? 示例代码 C#
using Kingdee.BOS.Contracts;
using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using System;
using System.Collections.Generic; using System.Linq; using System.Text;
using System.Threading.Tasks;
namespace MyOperaionServicePlugIn {
publicclassClass4 : AbstractOperationServicePlugIn {
publicoverridevoid BeforeExecuteOperationTransaction(
BeforeExecuteOperationTransaction e)
{ //获取数据服务
IBusinessDataService businessDataService =
Kingdee.BOS.App.ServiceHelper.GetService
\,
newobject[] { 10001, 10002 }); } } }
2.1.6. 如何删除(Delete)单据
2.1.6.1. Web层插件,如何删除(Delete)单据
? 实现思路
? 调用Kingdee.BOS.ServiceHelper.dll组件的BusinessDataServiceHelper类提供的Delete
方法
? 插件准备
? 插件工程引用Kingdee.BOS.ServiceHelper.dll组件
? 插件类文件引用BusinessDataServiceHelper所在的命名空间
? 方法介绍
BusinessDataServiceHelper提供两个Delete方法,其区别在于
? 参数不带元数据描述信息的,直接执行数据库删除操作,把数据删除
? publicstaticvoid Delete(Context ctx, object[] Ids, DynamicObjectType
dynamicObjectType)
? 参数带元数据描述信息的,执行删除操作的服务端完整服务,如执行删除操作的校
验器、删除操作的服务端服务、删除操作的服务端插件
? publicstaticIOperationResult Delete(Context ctx, BusinessInfo
businessInfo, object[] Ids, OperateOption option = null, string operationNumber = \)
? 参数介绍 名称 ctx Ids dynamicObjectType businessInfo option 类型 Context object[] DynamicObjectType BusinessInfo OperateOption 说明 系统上下文全局信息 待删除数据的id集合 待删除数据的动态实体类型 待删除数据的元数据描述信息 业务控制额外选项,删除的服务端服务和插件都能持有此对象 删除操作的操作码 operationNumber string ? 示例代码 C#
using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.ServiceHelper;
using System;
using System.Collections.Generic; using System.Linq; using System.Text;
using System.Threading.Tasks;
namespace MyDynamicFormPlugIn {
publicclassClass6 : AbstractDynamicFormPlugIn {
publicoverridevoid ButtonClick(ButtonClickEventArgs e) {
//删除id为10001和10002的物料 //获取物料元数据
FormMetadata materialMetadata =
MetaDataServiceHelper.Load(this.Context,\) asFormMetadata; //模拟删除服务端操作完整过程
BusinessDataServiceHelper.Delete( this.Context,
materialMetadata.BusinessInfo, newobject[] { 10001, 10002 }); } } }
2.1.6.2. App层插件,如何删除单据
? 实现思路
? 调用Kingdee.BOS.App.dll组件的ServiceHelper类提供的GetService泛型方法获取删
除服务
? 插件准备
? 插件工程引用Kingdee.BOS.App.dll、Kingdee.BOS.Contracts.dll、
Kingdee.BOS.DataEntity.dll ? 类文件引用相关命名空间,详见示例代码
? 接口介绍
? 同Web层插件介绍
? 示例代码 C# using Kingdee.BOS.Contracts; using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.Metadata; using System;
using System.Collections.Generic; using System.Linq; using System.Text;
using System.Threading.Tasks;
namespace MyOperaionServicePlugIn {
publicclassClass5 : AbstractOperationServicePlugIn {
publicoverridevoid BeforeExecuteOperationTransaction(
BeforeExecuteOperationTransaction e)
{ //获取删除服务
IDeleteService deleteService =
Kingdee.BOS.App.ServiceHelper.GetService
IMetaDataService metaDataService =
Kingdee.BOS.App.ServiceHelper.GetService
FormMetadata materialMetadata =
metaDataService.Load(this.Context,\) asFormMetadata; //执行删除服务的完整过程(推荐方式) deleteService.Delete( this.Context,
materialMetadata.BusinessInfo, newobject[] { 10001, 10002 });
//直接执行数据删除 (风险极高,仅适用于未定义单据,只是利用ORM模型存取数据的情况)
// 调用此服务会跳过删除校验,仅删除ORM模型内含表格的数据,其他相关数据不会处理,如果有
上下游单据及反写,不会撤销关联及回滚反写,从而造成数据错误! deleteService.Delete( this.Context,
newobject[] { 10001, 10002 },
materialMetadata.BusinessInfo.GetDynamicObjectType()); } } }
2.2. 调用单据操作后,如何判断结果,并处理交互提示
? 操作返回结果接口定义: C# publicinterfaceIOperationResult : IInteractionResult ? IInteractionResult接口定义: C#
publicinterfaceIInteractionResult {
// 交互表单显示标题
string FormTitle { get; set; } // 交互上下文信息
InteractionContext InteractionContext { get; set; } // 本次交互的发起人 string Sponsor { get; set; } }
? 交互上下文信息定义: C#
publicclassInteractionContext {
public InteractionContext(); // 当前表单模型信息
publicBusinessInfo BusinessInfo { get; } // 数据上下文
publicContext Context { get; set; } // 交互服务操作的实体集合
publicExtendedDataEntity[] DataEntities { get; set; }
// 自定义交互表单的初始化参数:InteractionFormId属性有值时,本属性才生效 publicDynamicFormShowParameter FormShowParameter { get; set; } // 交互表单标识:默认为BOS_K3Displayer publicstring InteractionFormId { get; set; }
// 是否交互(发现有领域把此当成单纯的自定义信息提示用,所以加此标识来加以区分)默认是交互类型异常,如作它用,请在此标识
publicbool IsInteractive { get; set; } // K3显示器模型
publicK3DisplayerModel K3DisplayerModel { get; set; } // 其它控制选项
publicOperateOption Option { get; set; }
// 简单交互信息(批量自定义消息时,此属性建议赋值,以便平台在批量操作时作简单提示) publicstring SimpleMessage { get; set; }