运行在App层的插件原创
金蝶云社区-独眼兽
独眼兽
13人赞赏了该文章 217次浏览 未经作者许可,禁止转载编辑于2024年05月13日 17:08:59

运行在App层的插件 包括操作插件、单据转换插件、反写插件、账表取数插件等,此类插件掌控着某种特定服务的执行过程,与交互界面无关;

 实现思路

    通过Kingdee.BOS.App.dll的ServiceHelper类获取ViewService服务,调用此服务提供的Load方法

插件准备

    插件工程引用Kingdee.BOS.App.dll、Kingdee.BOS.Contracts.dll、Kingdee.BOS.DataEntity.dll

    类文件引用相关命名空间,详见示例代码

using   Kingdee.BOS.Contracts;
using   Kingdee.BOS.Core.DynamicForm.PlugIn;
using   Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using   Kingdee.BOS.Core.Metadata;
using   Kingdee.BOS.Core.SqlBuilder;
using   Kingdee.BOS.Orm.DataEntity;
using   System;
using   System.Collections.Generic;
using   System.Linq;
using   System.Text;
using   System.Threading.Tasks;
 
namespace MyOperaionServicePlugIn
{
    public class Class6 : AbstractOperationServicePlugIn
    {
        public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e)
        {
            //加载id为10001的物料数据
            //获取ViewService
            IViewService viewService = 
                Kingdee.BOS.App.ServiceHelper.GetService<IViewService>();
            //获取元数据服务
            IMetaDataService metadataService =   
                Kingdee.BOS.App.ServiceHelper.GetService<IMetaDataService>();
 
            //获取物料元数据
            FormMetadata materialMetada =
                  metadataService.Load(this.Context, "BD_Material") as FormMetadata;
 
            //构建过滤条件
            QueryBuilderParemeter queryParameter = new QueryBuilderParemeter();
              queryParameter.BusinessInfo = materialMetada.BusinessInfo;
              queryParameter.FilterClauseWihtKey = "FMaterailId = 10001";
 
            //构建快捷过滤条件
            OQLFilter filter = new OQLFilter();
            filter.Add(new OQLFilterHeadEntityItem() { FilterString   = "FMaterialId   = 10001" });
 
            //构建关心的字段片段信息
            List<SelectorItemInfo>   lstSelectorItemInfos = new List<SelectorItemInfo>();
            //物料属性
              lstSelectorItemInfos.Add(new SelectorItemInfo("FErpClsId"));
            //使用组织
              lstSelectorItemInfos.Add(new SelectorItemInfo("FUseOrgId"));
 
            //方法1:
            DynamicObject[] objs =   viewService.Load(this.Context,materialMetada.BusinessInfo.GetDynamicObjectType(),queryParameter);
 
            //方法2:
            objs =   viewService.Load(this.Context,new object[] { 10001 },materialMetada.BusinessInfo.GetDynamicObjectType());
 
            //方法3:
            objs =   viewService.Load( this.Context,materialMetada.BusinessInfo,lstSelectorItemInfos,filter);
 
            //方法4:
            objs =   viewService.Load( this.Context,"BD_Material",lstSelectorItemInfos,filter);
        }
    }
}


图标赞 13
13人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0