帆软报表权限问题

想让项目经理浏览的时候,只显示自己的项目,请问帆软可以实现么?请大佬提供些思路,感谢!!

image.png

FineReport 用户m2896739 发布于 2022-2-18 17:25
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
CD20160914Lv8专家互助
发布于2022-2-18 17:29(编辑于 2022-2-18 17:34)

使用登陆的用户参数$fine_username  传到表中。。但是你的是汉字。。你的表中得还有一个和帆软登陆一样的用户名,比如拼音+数字的那种 名称

就比如姓名是张三   你帆软的登陆名是zhangshan   那么$fine_username得到的就是zhangshan   ,你的数据表中要有zhangshan这个字段。这样就能匹配得上。。。

image.png

最佳回答
0
luojian0323Lv7资深互助
发布于2022-2-18 17:37(编辑于 2022-2-18 17:38)

在查询 数据集中添加权限过滤语句,先判断 当前登录 的人是项目经理,项目经理可通过登录者的部门中的职位获取

参数为公式:GETUSERJOBTITLES()

image.png

然后通过获取登录者的用户名,一般用户名是字母,要获取用户姓名,还需要通过用户名来反向查询姓名

可设置参数为:realname,参数值为公式:sql("finedb","SELECT realname FROM PUBLIC.FINE_USER where username='"+$fine_username+"'",1,1)

image.png

查询 到姓名后,再在你的数据集中添加权限过滤

where 1=1

${if(manager="项目经理"," and 项目经理字段='"+realname+"'","")}

  • CD20160914 CD20160914 老师这个方法,,如果在我们集团就不行。我们集团叫张勇的人都超过20个。。。完全有可能多个张勇是项目经理。。。
    2022-02-18 17:43 
  • luojian0323 luojian0323 回复 CD20160914 那不更简单吗?你表中存username ,报表中显示成 realname. 就是项目经理那里搞一个实际值和显示值, 数据过滤就用username过滤。会更准确。
    2022-02-18 17:45 
  • CD20160914 CD20160914 回复 luojian0323 我知道。。我只是看你转换成姓名了。。我只是说情况,没有其他意思。。我只是感觉还是使用用户名准确
    2022-02-18 17:46 
  • luojian0323 luojian0323 回复 CD20160914 因为看你的截图中,项目经理是姓名。所以才这样回答的。
    2022-02-18 17:51 
  • CD20160914 CD20160914 回复 luojian0323 我不是提问者。
    2022-02-18 17:52 
  • 3关注人数
  • 320浏览人数
  • 最后回答于:2022-2-18 17:38
    请选择关闭问题的原因
    确定 取消
    返回顶部