最新历史版本 :权限细粒度参数控制 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

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=SUPERROLE

若角色用户登录,例如角色「数据架构师」用户登录,$fine_role=数据架构师

若部门角色登录,该参数为空,$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)模板设计如下图所示:

1589853535492150.png

3.1.2 平台挂载模板

管理员将设计好的模板挂载到数据决策系统中。

模板挂载到平台的方法请参见:节点管理

3.1.3 分配模板查看权限

管理员将该模板的查看权限分配给hanwen

管理员给用户分配权限请参见:根据用户分配权限示例

3.1.4 效果查看

hanwen 登录数据决策系统访问模板时,模板自动筛选 hanwen 的信息。如下图所示:

1589853747672856.png

3.2 示例二:参数面板中使用

3.2.1 准备模板

1)在 FineReport 设计器中点击文件>新建普通报表,新建数据库查询 ds1:

SELECT * FROM 销量 where 英文简称='${fine_username}'

2)模板设计如下图所示:

1589853535492150.png

3.2.2 添加控件

在参数面板中添加下拉框控件查询控件

选中下拉框控件,控件名称为fine_username,并设置数据字典。如下图所示:

4.png

3.2.3 效果查看

点击分页预览,可通过销售员过滤数据。如下图所示:

1589855506300193.png

4. $fine_role编辑

4.1 示例一:角色用户

希望不同角色访问模板时,查看到的模板列数不同、行列颜色不同。可以给行列添加条件属性设置行高、列宽、背景等,如果登录系统用户为角色用户,可以在公式中通过$fine_role进行过滤,如果是部门职位用户,则不可使用该参数进行过滤。

注:条件属性具体内容可参见: 条件属性 

4.1.1 准备模板

1)在 FineReport 设计器中点击文件>新建普通报表,新建数据库查询 ds1:

SELECT * FROM 销量 where 英文简称='${fine_username}'

2)模板设计如下图所示:

1589853535492150.png

4.1.2 添加条件属性

若 hanwen 角色为「数据架构师」,希望 hanwen 登录平台访问模板时,不能查看销量列。则选中E2单元格,添加条件属性列宽,公式为$fine_role='数据架构师',如下图所示:

注1:为用户添加角色或部门的方法请参见:用户管理

注2:若一个用户有多个角色,公式为find('数据架构师',$fine_role)>0

6.png

4.1.3 平台挂载模板

管理员将设计好的模板挂载到数据决策系统中。

模板挂载到平台的方法请参见:节点管理

4.1.4 分配模板查看权限

管理员将该模板的查看权限分配给hanwen

管理员给用户分配权限请参见:根据用户分配权限示例

4.1.5 效果查看

hanwen 登录数据决策系统访问模板时,效果如下图所示:

1589857480499388.png

4.2 示例二:部门角色用户 

若 hanwen 为部门职位用户,部门为销售部,职位为 sale,那么本文 4.1.2 节中公式为:GETUSERDEPARTMENTS()='销售部'GETUSERJOBTITLES()='sale',如下图所示:
1589857812911990.png