博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何在服务层获取简单账表数据结果
阅读量:6527 次
发布时间:2019-06-24

本文共 2345 字,大约阅读时间需要 7 分钟。

在项目实施中,总会碰到这样的需求:需要将系统中某些报表的数据传递给第三方系统。假如实施的系统是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_FILTERSCHEMEvar 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);

转载于:https://www.cnblogs.com/fyq891014/p/8698037.html

你可能感兴趣的文章
不知道自己不知道(Unknown Unknowns)的知识决定了你的发展
查看>>
Apple Watch的非“智能手表”卖点
查看>>
fedora17升级到fedora18
查看>>
单例模式(Singleton)
查看>>
函数指针和指针函数
查看>>
认识配置设置文件(INI与XML)
查看>>
DZ!NT论坛 3.6.711删除用户各种错解决方案
查看>>
Python的函数参数传递:传值?引用?
查看>>
[转]分享2011年8个最新的jQuery Mobile在线教程
查看>>
android call require api level
查看>>
Mac下android环境搭建
查看>>
创建Visual Studio项目模版向导的几篇参考文章
查看>>
深入浅出SQL Server Replication第一篇:走近Replication(上)
查看>>
[TopCoder][SRM] SRM 562 DIV 2
查看>>
SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第一篇)
查看>>
简明 Vim 练级攻略 | 酷壳 - CoolShell.cn
查看>>
LocalAlloc,VirtualAlloc,malloc,new的异同
查看>>
回调函数
查看>>
win7 x64 jdk1.7.0_51
查看>>
45 Useful Oracle Queries--ref
查看>>