按数据规则加载数据(QueryService用法)原创
7人赞赏了该文章
427次浏览
编辑于2023年01月12日 11:10:02
有时,我们需要在插件中获取基础资料数据,这个基础资料设置了数据规则。如果直接使用SQL,无法获取数据规则的过滤条件。本文简单介绍QueryService使用方法,通过构造QueryBuilderParemeter实现按照数据规则加载数据。
在一个表单的插件中,获取物料数据,在物料上,我们设置了物料编码等于CH0007,这样筛选出唯一的数据。权限设置参考下图
在界面中,我们通过插件调用获取了唯一条件数据,并可以看到SQL的过滤条件中拼接了这个数据规则,如下图
以下为参考代码
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人打赏
还没有人打赏,快来当第一个打赏的人吧!