按数据规则加载数据(QueryService用法)原创
金蝶云社区-Howhy
Howhy
7人赞赏了该文章 427次浏览 未经作者许可,禁止转载编辑于2023年01月12日 11:10:02

    有时,我们需要在插件中获取基础资料数据,这个基础资料设置了数据规则。如果直接使用SQL,无法获取数据规则的过滤条件。本文简单介绍QueryService使用方法,通过构造QueryBuilderParemeter实现按照数据规则加载数据。


在一个表单的插件中,获取物料数据,在物料上,我们设置了物料编码等于CH0007,这样筛选出唯一的数据。权限设置参考下图

image.png

在界面中,我们通过插件调用获取了唯一条件数据,并可以看到SQL的过滤条件中拼接了这个数据规则,如下图

image.png



以下为参考代码

using Kingdee.BOS;
using Kingdee.BOS.App.Core.Query;
using Kingdee.BOS.App.Core;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Enums;
using Kingdee.BOS.Core.SqlBuilder;
using Kingdee.BOS.Log;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using Kingdee.BOS.Core.Metadata;
namespace Witt.Cloud.PlugIn.Bill
{
    [HotUpdate]
    [Description("KingdeeAPICall")]
    public class ComonApiPlugin : AbstractBillPlugIn
    {
        public override void ButtonClick(ButtonClickEventArgs e)
        {
            if (e.Key.EqualsIgnoreCase("FTest"))
            {
                LoadDataByDataRule();
            }
        }
        private void LoadDataByDataRule()
        {
            //设置要查询出来的字段,对应SQL的SELECT 字句
            List<SelectorItemInfo> selectedItems = new List<SelectorItemInfo>
            {
                new SelectorItemInfo("FNumber"),
                new SelectorItemInfo("FNAME"),
                new SelectorItemInfo("FSpecification") //规格型号
            };

            QueryService queryService = new QueryService();
            QueryBuilderParemeter queryBuilderParemeter = new QueryBuilderParemeter()
            {
                
                FormId = "BD_MATERIAL",                         //查询的基础资料标识
                SelectItems = selectedItems,                    //查询字段
                FilterClauseWihtKey = " fnumber like 'CH%' ",   //过滤条件
                OrderByClauseWihtKey = "FNumber",               //排序字段
                StartRow = 0,                                   //查询开始行
                Limit = 200,                                    //查询数量
                RequiresDataPermission = true,                  //是否使用数据权限,数据规则等
                ParentFormId = "PAEZ_CommonApiCall"
            };
            QueryObject queryObject = queryService.GetQueryObject(this.Context, queryBuilderParemeter);
            string strSql = queryObject.ToSplitPageSqlQueryString();        //转化成具体查询的SQL
            var beforeData = DBUtils.ExecuteDataSet(this.Context, strSql);
            string result = string.Format("count:{0}{1}{2}", beforeData.Tables[0].Rows.Count,Environment.NewLine,strSql);
            this.Model.SetValue("FRes", result);
            this.View.UpdateView("FRes");
        }
    }
}


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