1. 概述编辑
1.1 版本
报表服务器版本 |
---|
10.0 |
1.2 功能简介
用户认证 后会将报表三个固定的默认参数$fine_username、$fine_role、$fine_position保存在 Session 中,同时提供两个函数GETUSERDEPARTMENTS()、GETUSERJOBTITLES()来分别获取部门角色的部门和职位。
同一报表环境下,模板中可以直接以参数的形式获取到对应的值,然后在模板里面进行筛选判断就可显示不同数据。
2. 参数介绍编辑
本文要介绍的内容如下表所示:
注1:$fine_username、$fine_role、$fine_position 为报表默认参数,调用时大小写必须保持一致。
注2:$fine_username、$fine_role、$fine_position 参数在 9.0 里分别对应 $fr_username、$fr_authority、$fr_userposition。
类型 | 具体内容 | 备注 |
---|---|---|
参数 | $fine_username | 获取登录系统的用户名,例如登录用户名为 Anna,则$fine_username="Anna" |
$fine_role | 获取登录系统的角色 若超管用户登录,$fine_role="superusers" 若角色用户登录,例如角色「数据架构师」用户登录,$fine_role="数据架构师"i 若部门角色登录,该参数为空,$fine_role 返回值为数组,使用concatenate($fine_role,"")即可将其转化为字符串 注:若一个用户有多个角色,$fine_role 返回值为所有角色,例如:"数据架构师,普通角色1" | |
$fine_position | 获取部门职位。返回值由部门和职位组成,为 json 格式 例如「人力资源部长」职位登录系统,则$fine_position={"departments":"人力资源","jobTitle":"部长"} | |
函数 | GETUSERDEPARTMENTS() | 获取部门职位里的部门。 例如「人力资源部长」职位登录系统,则GETUSERDEPARTMENTS()="人力资源" 若多个部门,则数组GETUSERDEPARTMENTS(3,2)返回角色该部门的第三层和第二层名字。若多个部门则返回数组,若没有第三层则只显示第二层 |
GETUSERJOBTITLES() | 获取部门职位里的职位 例如「人力资源部长」职位登录系统,则GETUSERJOBTITLES()="部长" |
3. $fine_username 示例编辑
获取登录系统的用户名,例如登录用户名为 Anna,那么$fine_username="Anna"
3.1 示例一:单元格中使用
3.1.1 准备模板
1)在 FineReport 设计器中点击文件>新建普通报表,新建数据库查询 ds1:
SELECT * FROM 销量 where 英文简称='${fine_username}'
2)模板设计如下图所示:
3.1.2 平台挂载模板
管理员将设计好的模板挂载到数据决策系统中。
模板挂载到平台的方法请参见:节点管理
3.1.3 分配模板查看权限
管理员将该模板的查看权限分配给hanwen。
管理员给用户分配权限请参见:根据用户分配权限示例
3.1.4 效果查看
hanwen 登录数据决策系统访问模板时,模板自动筛选 hanwen 的信息。如下图所示:
3.2 示例二:参数面板中使用
3.2.1 准备模板
1)在 FineReport 设计器中点击文件>新建普通报表,新建数据库查询 ds1:
SELECT * FROM 销量 where 英文简称='${fine_username}'
2)模板设计如下图所示:
3.2.2 添加控件
在参数面板中添加下拉框控件和查询控件。
选中下拉框控件,控件名称为fine_username,并设置数据字典。如下图所示:
3.2.3 效果查看
点击分页预览,可通过销售员过滤数据。如下图所示:
4. $fine_role编辑
4.1 示例一:角色用户
希望不同角色访问模板时,查看到的模板列数不同、行列颜色不同。可以给行列添加条件属性设置行高、列宽、背景等,如果登录系统用户为角色用户,可以在公式中通过$fine_role进行过滤,如果是部门职位用户,则不可使用该参数进行过滤。
注:条件属性具体内容可参见: 条件属性
4.1.1 准备模板
1)在 FineReport 设计器中点击文件>新建普通报表,新建数据库查询 ds1:
SELECT * FROM 销量 where 英文简称='${fine_username}'
2)模板设计如下图所示:
4.1.2 添加条件属性
若 hanwen 角色为「数据架构师」,希望 hanwen 登录平台访问模板时,不能查看销量列。则选中E2单元格,添加条件属性列宽,公式为$fine_role='数据架构师',如下图所示:
注1:为用户添加角色或部门的方法请参见:用户管理
注2:若一个用户有多个角色,公式为find('数据架构师',$fine_role)>0
4.1.3 平台挂载模板
管理员将设计好的模板挂载到数据决策系统中。
模板挂载到平台的方法请参见:节点管理
4.1.4 分配模板查看权限
管理员将该模板的查看权限分配给hanwen。
管理员给用户分配权限请参见:根据用户分配权限示例
4.1.5 效果查看
hanwen 登录数据决策系统访问模板时,效果如下图所示:
4.2 示例二:部门角色用户
若 hanwen 为部门职位用户,部门为销售部,职位为 sale,那么本文 4.1.2 节中公式为:GETUSERDEPARTMENTS()='销售部'和GETUSERJOBTITLES()='sale',如下图所示: