联系我们

佛山市星展软件科技有限公司

公司地址:佛山市禅城区河宕村委河南工业大道北侧C座二层E3号   电子地图

咨询热线:+86-0757-82306366

(24小时咨询热线)

业务部:+86-0757-83268988

服务部:+86-0757-82299987   

公司传真:+86-0757-82299987

服务QQ:1138202116

公司网址:www.kingdeestar.com

金蝶产品

当前您的位置:首页 > 技术支持 > 常见问题 > 金蝶产品

小技巧 - 如何在服务层获取简单账表数据结果

作者:   日期:2018-07-17  来源:  关注:1903

在项目实施中,总会碰到这样的需求:需要将系统中某些报表的数据传递给第三方系统。假如实施的系统是K/3 WISE,那么恭喜你,你需要自己跟踪SQL语句,把报表逻辑重新实现一遍。不过在K/3 Cloud,你不需要这么做,依托强大的BOS平台(这点必须好好吹),通过调用接口的方式即可轻松获取简单账表数据。

 

当然,本技巧有前提条件:简单账表的过滤条件必须事先有保存方案。毕竟通过纯编码的方式构建过滤条件是一件很麻烦的事情。

废话不多说,我们以【财务会计】—【应收款管理】—【报表分析】-【应收款账龄分析表】为例,来教大家如何调用。

直接上代码!

 

 

using Kingdee.BOS.Contracts;

using Kingdee.BOS.Core;

using Kingdee.BOS.Core.DynamicForm;

using Kingdee.BOS.Core.DynamicForm.PlugIn;

using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;

using Kingdee.BOS.Core.Report;

using Kingdee.BOS.Core.ReportFilter;

using Kingdee.BOS.Model.CommonFilter;

using Kingdee.BOS.Model.ReportFilter;

using Kingdee.BOS.ServiceHelper;

 

 

 

ISysReportService sysReporSservice = ServiceFactory.GetSysReportService(this.Context);

IPermissionService permissionService = ServiceFactory.GetPermissionService(this.Context);

 

var filterMetadata = FormMetaDataCache.GetCachedFilterMetaData(this.Context);//加载字段比较条件元数据。

var reportMetadata = FormMetaDataCache.GetCachedFormMetaData(this.Context, "AR_AgingAnalysis");//加载应收款账龄分析表元数据。

var reportFilterMetadata = FormMetaDataCache.GetCachedFormMetaData(this.Context, "AR_AgingAnalysisFilter");//加载应收款账龄分析表过滤条件元数据。

var reportFilterServiceProvider = reportFilterMetadata.BusinessInfo.GetForm().GetFormServiceProvider();

 

var model = new SysReportFilterModel();

model.SetContext(this.Context, reportFilterMetadata.BusinessInfo, reportFilterServiceProvider);

model.FormId = reportFilterMetadata.BusinessInfo.GetForm().Id;

model.FilterObject.FilterMetaData = filterMetadata;

model.InitFieldList(reportMetadata, reportFilterMetadata);

model.GetSchemeList();

 

var entity = model.Load("57fc5b64cc45d7");//过滤方案的主键值,可通过该SQL语句查询得到:SELECT * FROM T_BAS_FILTERSCHEME

var filter = model.GetFilterParameter();

 

IRptParams p = new RptParams();

p.FormId = reportFilterMetadata.BusinessInfo.GetForm().Id;

p.StartRow = 1;

p.EndRow = int.MaxValue;//StartRow和EndRow是报表数据分页的起始行数和截至行数,一般取所有数据,所以EndRow取int最大值。

p.FilterParameter = filter;

p.FilterFieldInfo = model.FilterFieldInfo;

p.BaseDataTempTable.AddRange(permissionService.GetBaseDataTempTable(this.Context, reportMetadata.BusinessInfo.GetForm().Id));

using (DataTable dt = sysReporSservice.GetData(this.Context, reportMetadata.BusinessInfo, p))

{

        //dt就是报表数据,接下来就是你发挥的时间。

}

 

ServiceFactory.CloseService(sysReporSservice);

ServiceFactory.CloseService(permissionService);

Copyright © 2013-2018 All Rights Reserved 版权所有:佛山市星展软件科技有限公司  地址:佛山市禅城区河宕村委河南工业大道北侧C座二层E3号  粤ICP备16126932号

电话咨询
400-075-7062
新版调查