在业务系统中,经常需要通过用户的所属机构控制用户所能查看到的数据。下面我们演示如何实现数据权限,控制不同机构用户只能查看所属机构及其所有子机构的数据。机构架构如下

 


前提


数据库中存在机构表,包含机构编号字段、机构名称字段和上级机构编号字段。如org表;其中c_id为机构编号,c_name为机构名称,c_parentid字段为上级机构编号。

实现步骤


使用下拉树参数和用户所属默认组名称相结合,控制用户登录之后,下拉树参数的根节点的值为用户所属机构的编号,则用户进行参数切换,只能够选择其所属机构或者下级机构,不能够选择上级机构或者其他机构。通过参数过滤数据实现用户只能查看其所属机构及下级机构的数据。

  1. 在用户管理中建立用户组,如下:包括总部、华北、华南三个用户组



  2. 设置"总部管理员"默认组为"总部","华南业务员"默认组为"华南"、"华北业务员"默认组为"华北"


  3. 进入【定制】-【公共设置】,新建参数,数据格式选择"字符串",控件类型选择下拉树


  4. 备选值、默认值和根节点设置如下。根节点和默认值中,使用系统函数CurrentUserDefaultDepartmentName与c_name字段进行过滤,则当用户选择参数时根节点为对应的机构编号。

  5. 在参数定义中勾选"允许多选"


  6. 参数真实值,实际值设置如下:


  7. 在数据集中使用上述步骤中建立的参数,如:


  8. 建立报表。使用不同用户组用户登录,效果如下: