#实践案例# 简易账表行转列改造案例:多账簿日报表改多账簿日报表(横向)

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

#实践案例# 简易账表行转列改造案例:多账簿日报表改多账簿日报表(横向)

# 一、业务场景 星空标准报表,很多是竖向展示的,如多账簿现金流量表的数据展示是按不同的账簿竖向展示,如下图 ![image.webp](/download/01004515310277a24dafa7c7e860a4147c0f.webp) 现客户需要对比不同账簿的现金流项目金额,需要将表按账簿做成横向展示的,如下图 ![image.webp](/download/0100e5ca1f2d04c64b9bbf2d7b9d14cd540a.webp) # 二、解决方法 将原来的多账簿现金流量表改造成透视表,透视表可以对行、列以及数据展示字段进行设置。 解决思路主要来源于以下文章,在此感谢原作者。 [57.2、报表插件,透视表](https://wenku.my7c.com/article/71378182103646976?productLineId=1) # 三、实现步骤 说明:前面展示的多现金流量表的横向展示,是之前开发好的,为了能更好展示开发的细节,在这我重新改造一张标准报表,将多账簿日报表 改为 按账簿横向展示。 概括:新建一张透视表,取数逻辑和过滤界面还是使用原多账簿日报表的,简单改造部分代码便可实现。 ### 1.创建透视表 BOS平台搜索“多账簿日报表” ![image.webp](download/010089eeeafad63841eba28e8b679fbf8897.webp) 引入业务对象后,可以在简单账表分类看到多账簿日报表,在透视表节点右键新增,选择空白对象。 ![image.webp](/download/0100f107efbe46ab4895853eecfc03e5c22d.webp) 如下图,编号PKSQ_MultiDailyReport_H是自定义的,开发商标识加多账簿日报表标识加_H。 ![image.webp](/download/0100d36dbfb86b674b7c869cce61ffa74f4f.webp) 确定后保存,透视表这里就出现了新增的。 ![image.webp](/download/010088080f05a80b4810a241e0a026bf0f21.webp) 具体可参考官方贴:[透视表简单示例教程](https://wenku.my7c.com/article/10134?productLineId=1&isKnowledge=2) ### 2.使用多账簿现金流量表的过滤框 找到过滤条件框,右键新增 ![image.webp](/download/01004fe443096fa242ae8b931b0dc4acbfb7.webp) 这里选择复制,找到原报表的过滤框,输入自定义名称和编号,确定,保存。这里编号是:PKSQ_MultiDailyReport_H_Filter ![image.webp](/download/01003e6e16f5ffcc43f7a40a7a947389cb5a.webp) 创建好后,将过滤框唯一标识,也就是创建时输入的编号:PKSQ_MultiDailyReport_H_Filter复制到多账簿日报(横向)的过滤窗口业务对象(报表),保存。 ![image.webp](/download/01000db7f52c7a4d40db84023b13678691f9.webp) 此时,过滤框和报表就绑定好了,接下来可以发布到主控制台验证一下,最好是和原来的报表发布在同一个位置。具体可参考以下帖子 [57.1、报表插件,透视表,界面](https://wenku.my7c.com/article/71357429627448320?productLineId=1) 效果如下,但是这里没有配置取数逻辑,关闭的时候会报错,所以接下来需要编写报表服务插件。 ![image.webp](/download/010065929124b17144d68f48e43faafc975a.webp) ### 3.使用多账簿日报表的取数逻辑 1)找到多账簿日报表的服务器插件的dll组件 ![image.webp](/download/01000b071b4cb09148ff8e4aeb81d0c01bf0.webp) 插件:Kingdee.K3.FIN.GL.App.Report.MultiDailyReportService, Kingdee.K3.FIN.GL.App.Report 这里包含插件的信息,首先复制后面部分(Kingdee.K3.FIN.GL.App.Report),到安装目录C:\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin搜索,如下图 ![image.webp](/download/01003020c24bfd23434d9d6003d5c87d012d.webp) ![image.webp](/download/0100f6242abd171c48ea847b23d6d8968e32.webp) 2)反编译dll 反编译dll需要使用到这个![image.webp](/download/0100134306a28ea04d2d88ba1dfccc328603.webp) 这个工具就是附件ILSpy_binaries_4.0.1.4530.zip,压缩包解压后 ![image.webp](/download/0100c60aef0e5ca4470eba0996eb5ae1e95f.webp) 双击运行ILSpy.exe ![image.webp](/download/010008a55cd6dedd476080b5b7984178c38c.webp) 将Kingdee.K3.FIN.GL.App.Report.dll拖动到反编译工具 ![image.webp](/download/01009d1cfc090cbf4f7a8d56027413920317.webp) 找到多账簿日报表取数插件 ![image.webp](/download/0100f8ca7fcea98b42e3aadceccb0d85d29a.webp) 3)项目中新增类 Ctrl+A复制所有代码,在项目中添加新类,更改描述和类名,原类名后面加_H。 ![image.webp](/download/0100bc0a2309de0448cba62d5e00a84db2e6.webp) 引用报错添加对应的dll组件 ![image.webp](/download/0100736fc2743e314d58a2921a5bfad22e78.webp) 添加完需要的dll组件后,引用不报错了 ![image.webp](/download/010022e5ba95a14c4370b5e5fe1792a514c5.webp) ### 4.改造部分代码 1)初始化,找到初始化方法Initialize,新增如下代码 ![image.webp](/download/0100953a84bac3424b908dbedf95f9e8f9c4.webp) ``` //初始化 public override void Initialize() { base.ReportProperty.ReportName = new LocaleValue("多账簿日报表(横向)"); base.ReportProperty.DetailReportId = "GL_RPT_SubLedger"; base.ReportProperty.DetailReportType = ReportType.REPORTTYPE_MOVE; base.ReportProperty.BillKeyFieldName = "FACCOUNTID"; } ``` 2)设置行字段、列字段和数据展示字段 这里借用上面的图说明: ![image.webp](/download/010091ff9083e9c440c38397a0c06fbcf4aa.webp) 找到方法BuilderReportSqlAndTempTable,加上以下代码 ![image.webp](/download/010088cc13bcab3c4646b7d09d298715979f.webp) ``` //修改临时表 base.SettingInfo = new PivotReportSettingInfo(); //不合计 base.SettingInfo.IsShowGrandTotal = false; //添加标题字段 #region //设置行 SettingField FACCOUNTNUMBER = PivotReportSettingInfo.CreateColumnSettingField(new TextField() { Key = "FACCOUNTNUMBER", FieldName = "FACCOUNTNUMBER", Name = new LocaleValue("科目编码") }, 0); FACCOUNTNUMBER.IsAllowDrag = false; FACCOUNTNUMBER.IsShowTotal = false; base.SettingInfo.RowTitleFields.Add(FACCOUNTNUMBER); base.SettingInfo.SelectedFields.Add(FACCOUNTNUMBER); SettingField FACCOUNTNAME = PivotReportSettingInfo.CreateColumnSettingField(new TextField() { Key = "FACCOUNTNAME", FieldName = "FACCOUNTNAME", Name = new LocaleValue("科目名称") }, 0); FACCOUNTNAME.IsAllowDrag = false; FACCOUNTNAME.IsShowTotal = false; base.SettingInfo.RowTitleFields.Add(FACCOUNTNAME); base.SettingInfo.SelectedFields.Add(FACCOUNTNAME); //设置列 SettingField FACCOUNTBOOKNAME = PivotReportSettingInfo.CreateColumnSettingField(new TextField() { Key = "FACCOUNTBOOKNAME", FieldName = "FACCOUNTBOOKNAME", Name = new LocaleValue("账簿") }, 0); base.SettingInfo.ColTitleFields.Add(FACCOUNTBOOKNAME); base.SettingInfo.SelectedFields.Add(FACCOUNTBOOKNAME); //数据展示 SettingField FYDAYDEBITAMOUNT = PivotReportSettingInfo.CreateColumnSettingField(new DecimalField() { Key = "FYDAYDEBITAMOUNT", FieldName = "FYDAYDEBITAMOUNT", Name = new LocaleValue("上日余额(借)") }, 0); FYDAYDEBITAMOUNT.SumType = 1; base.SettingInfo.AggregateFields.Add(FYDAYDEBITAMOUNT); base.SettingInfo.SelectedFields.Add(FYDAYDEBITAMOUNT); SettingField FYDAYCREDITAMOUNT = PivotReportSettingInfo.CreateColumnSettingField(new DecimalField() { Key = "FYDAYCREDITAMOUNT", FieldName = "FYDAYCREDITAMOUNT", Name = new LocaleValue("上日余额(贷)") }, 0); FYDAYCREDITAMOUNT.SumType = 1; base.SettingInfo.AggregateFields.Add(FYDAYCREDITAMOUNT); base.SettingInfo.SelectedFields.Add(FYDAYCREDITAMOUNT); SettingField FBALDEBITAMOUNT = PivotReportSettingInfo.CreateColumnSettingField(new DecimalField() { Key = "FBALDEBITAMOUNT", FieldName = "FBALDEBITAMOUNT", Name = new LocaleValue("本日余额(借)") }, 0); FBALDEBITAMOUNT.SumType = 1; base.SettingInfo.AggregateFields.Add(FBALDEBITAMOUNT); base.SettingInfo.SelectedFields.Add(FBALDEBITAMOUNT); #endregion ``` 相关说明如下: ![image.webp](/download/0100a9e656d1942e4006b13ae8ea9fb76fd1.webp) 关于字段类型,一般要么是文本类型,就是new TextField。另一种是金额或者数字类型就用new DecimalField。 ![image.webp](/download/01009387c668e85b4b3baa18fbd8d8dee3cd.webp) 关于字段标识,标准方法里一般都有写明,如下,找到GetShowText方法。 ![image.webp](/download/0100f9cd6746e1f048e08f9bfe80a1eec44d.webp) 3)编译代码注册插件到多账簿日报表(横向) ![image.webp](/download/010099b5afb9f1af432cb8dad8f19c71a353.webp) 4)最终效果 客户端展示效果,相同过滤条件 多账簿日报表(横向) ![image.webp](/download/010009299c93a2854c9e9e2641bc6331e2bb.webp) 多账簿日报表 ![image.webp](/download/01001fccccc5d21c4b778611d7dad9997ef4.webp) 说明: 改报表行转列是通过透视表实现的,其展示的行数据排序是根据行字段决定的,如果行数据与原报表展示不一致,可通过调整行字段的先后顺序或增减字段来解决。 ![image.webp](/download/010010088a570304449ca51708efa31688e9.webp) ## 四 总结 此种方法适用于星空简易账表行转列的改造,二开的难度低,且查询效率与标准报表一样高。 唯一的不足就是当系统标准的报表随着版本更新而改变了,二开的横向报表也要进行维护。

ILSpy_binaries_4.0.1.4530.zip

代码.rar


好厉害 !!!


#实践案例# 简易账表行转列改造案例:多账簿日报表改多账簿日报表(横向)

# 一、业务场景星空标准报表,很多是竖向展示的,如多账簿现金流量表的数据展示是按不同的账簿竖向展示,如下图![image.webp](/download/0...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息