历史版本8 :不规范组织树报表 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 问题描述编辑

在实际应用中,组织树报表除了组织树报表章节中使用到的比较规范的组织结构,即,除了最后一层,所有其他层的结构都是子层,还有很多组织结构并不是这么的规范,有的层级结构下面没有子层,有的层级结构下面则有子层,即层级结构不确定,比如说,一个公司的公司结构,有总部,人力资源部,市场部,人力资源部下面还有人力一部,人力二部,人力一部下面才是具体员工,而市场部下面直接就是具体员工,下面用2个示例来展示这两种组织树的区别:
规范的组织结构
222
不规范的组织结构
222
那么使用不规范的组织结构构建组织树报表,如果还是通过组织树报表这种方式来实现就会出现上图所示的状况,没有子层数据的层级的子层会显示空白,那么如何让没有子层数据的层级数据合并其下面所有层级单元格显示呢,如下图效果:
222

2. 解决思路编辑

在没有子层数据的结构所在层级单元格后面向下(横向扩展向下,纵向扩展向右)合并相应个单元格(合并至最后一层),并将层级数据列拖曳进来,使该单元格扩展出相应层级的所有数据,同时添加过滤条件,如果其有子层,数据就过滤掉,显示为空白。

3. 操作步骤编辑

3.1 数据准备
新建内置数据集ds1,如下图:
222
注:内置数据集中第二层级结构中有一个结构没有子层,其他的结构有子层。
3.2 模板制作
由于上面准备数据是不规范的组织结构,我们按照组织树报表中的方法来实现组织树,即不使用树数据集,模板效果如下图:
222
单元格设置如下表:
单元格过滤条件形态设置
A1parentnode等于空实际值:id 显示值:name  
A2parentnode等于单元格A1实际值:id 显示值:name  
A3parentnode等于单元格A2实际值:id 显示值:name  
注:在添加过滤条件时,需要去掉将父格子作为过滤条件前面的勾选,如下图A2单元格的过滤条件:
222
单元格形态设置详细请参照数据字典
效果查看
此时保存模板,可以看到如下图效果,没有子层的层级结构并没有合并单元格,其子层单元格还在,但是没有数据显示:
222
注:如果使用树数据集,请参照树数据集实现组织树报表
3.3 合并单元格
从效果图上可以看到没有下层的层级结构应该合并单元格显示,即未归集旧数据应该合并单元格至最下层。
由于FineReport不支持自动合并单元格,只能手动合并,未归集旧数据所在层级为第二层,第二层数据所在单元格为第二行,最后一层在第三行,所以合并A2后面的单元格至第三行,即合并B2和B3单元格,A1单元格是第一层数据,故需要将其显示在所有数据上面,需要合并A1和B1单元格。
回到模板设计界面,按照上述描述再操作模板,拖曳id列至B2单元格中,设置扩展为横向扩展,其上父格为A2,使数据扩展时,每个第二层级数据后面都跟了一个合并的单元格 ,且显示对应层级数据,并设置其形态为:实际值为ds1的name字段,结果如下图:
222
此时,点击分页预览,效果如下图:
222
3.4 过滤条件
为刚刚合并的B2单元格添加过滤条件,B2单元格只显示没有子层的第二层结构数据,即只显示A3单元格为空的数据,添加过滤条件len(A3)==0,如下图:
222
此时,再次预览模板,如下图,有子层的层级数据后面都有一个合并的单元格,因为其对应的A3单元格不为空,故没有数据过滤过来,显示为空:
222
3.5 条件属性
上面效果图中,没有子层的层级数据的子层显示为空白,有子层结构的层级数据后面的合并单元格显示为空白,通过条件属性,将空白列隐藏,如下图,同时选中A2、A3和B2单元格,为其添加条件属性:
222
3.6 其他设置
按照效果图中设置单元格样式,并将untils数据列拖曳至第4行单元格中,如下图:
222
如果组织结构有4层,那么其模板样式如下图:
222

4. 效果查看编辑

保存模板,点击分页预览,效果如下图:
222
已完成模板请参照%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\GroupReport\CusGroup_7.cpt
模板效果在线查看请点击CusGroup_7.cpt