运行在Web层的插件,如何加载单据,BusinessDataServiceHelper.Load()
金蝶云社区-Running
Running
5人赞赏了该文章 430次浏览 未经作者许可,禁止转载编辑于2023年10月23日 19:15:14

Ø  运行在Web层的插件

    包括动态表单插件、单据编辑插件、基础资料编辑插件、列表插件等,控制着交互界面;

Ø  实现思路

    调用Kingdee.BOS.ServiceHelper.dll的BusinessDataServiceHelper类提供的Load方法

Ø  插件准备

    插件工程引用Kingdee.BOS.ServiceHelper.dll组件

    类文件引用BusinessDataServiceHelper类所在的命名空间Kingdee.BOS.ServiceHelper


Ø  BusinessDataServiceHelper.Load方法介绍

    public static DynamicObject[] Load(Context ctx, BusinessInfo businessInfo, List<SelectorItemInfo> selector, OQLFilter ofilter).

构建过滤条件OQLFilter,检索某些字段片段信息(List<SelectorItemInfo>)的目标数据集合


    public static DynamicObject[] Load(Context ctx, DynamicObjectType type, QueryBuilderParemeter queryParemeter)

构建过滤条件QueryBuilderParemeter,检索满足条件的目标数据集合


    public static DynamicObject[] Load(Context ctx, Object[] pkArray, DynamicObjectType type)

指定目标数据id集合,根据数据id集合,动态对象类型,检索满足条件的目标数据集合


    public static DynamicObject[] Load(Context ctx, string formid, List<SelectorItemInfo> selector, OQLFilter ofilter)

指定单据模型唯一标示,感兴趣的字段片段信息(也就是说,只取部分字段出来,不会把这个模型的所有字段数据都取出来),构建过滤条件OQLFilter


Ø  方法参数介绍

名称

类型

说明

ctx

Context

系统上下文信息

businessInfo

BusinessInfo

待检索数据的模型元数据信息

selector

List<SelectorItemInfo>

字段片段信息

ofilter

OQLFilter

快速过滤条件对象

type

DynamicObjectType

动态实体类型

queryParemeter

QueryBuilderParemeter

查询过滤对象

pkArray

Object[]

目标实体数据id集合

formid

string

待查询模型唯一标示


Ø  示例代码

C#


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   Kingdee.BOS.ServiceHelper;

using   System;

using   System.Collections.Generic;

using   System.Linq;

using   System.Text;

using   System.Threading.Tasks;

 

namespace MyDynamicFormPlugIn

{

    public class Class7 : AbstractDynamicFormPlugIn

    {

        public override void ButtonClick(ButtonClickEventArgs e)

        {

            //加载id10001的物料数据

            //获取物料元数据

            FormMetadata materialMetada =

                MetaDataServiceHelper.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 = BusinessDataServiceHelper.Load(

                this.Context,

                  materialMetada.BusinessInfo.GetDynamicObjectType(),

                queryParameter);

            //方法2

            objs = BusinessDataServiceHelper.Load(

                this.Context,

                new object[] { 10001 },

                  materialMetada.BusinessInfo.GetDynamicObjectType());

            //方法3:根据过滤条件获取满足条件的目标数据的部分字段信息

            objs = BusinessDataServiceHelper.Load(

                this.Context,

                  materialMetada.BusinessInfo,

                  lstSelectorItemInfos,

                filter);

            //方法4:根据过滤条件获取满足条件的目标数据的部分字段信息

            objs = BusinessDataServiceHelper.Load(

                this.Context,

                "BD_Material",

                  lstSelectorItemInfos,

                filter);

        }

    }

}


本文转载自:《K/3 Cloud BOS 插件开发百问百答》

作者:张晋博、丁振华

原文链接:https://open.kingdee.com/K3Cloud/Wenku/DocumentView.aspx?docId=117527

赞 5