【权限】用户 xxx 没有 单据xxx 的业务权限!
一、问题描述
双击打开某二开菜单的时候,弹出信息提示框提示:用户 xxx 没有 客户预估单_查看 的业务权限!
二、分析解答
1、菜单和权限项是否绑定?
在客户化菜单编辑页面可以看到,这个二开菜单是绑定了了权限项的。
根据脚本可以查到菜单绑定的权限项id:
SELECT function FROM T_PM_MainMenuItem where FNUMBER ='【这里输入菜单的编码】'
2、用户确实分配了权限吗?
在用户管理界面选择该用户后点【查看权限】,切换到该业务组织下可以看到确实有分配这个权限项。另外,后台通过脚本查,该用户在该组织下确实有这个权限,且没有被禁止(用户组织权限相关查询SQL)。
另外,这个权限项“客户预估单_查看”的主业务组织类型是1,表示财务组织(权限项的主业务组织类型的影响),查询脚本:SELECT FORGRELATION FROM T_pm_permitem where FALIAS_L2 LIKE '%【这里输入权限项的别名】%'。
而授权组织“CN****.***.**.***”确实是财务组织,从数据层面看,不管是权限数据、还是组织数据,以及用户的权限数据都是没有问题的。
3、再回到错误提示本身来分析
Caused by: com.kingdee.eas.base.permission.PermissionException: 用户 zfr 没有 客户预估单_查看 的业务权限! at com.kingdee.eas.base.permission.app.service.FunctionPermissionService.checkPermission(FunctionPermissionService.java:908) at com.kingdee.eas.base.permission.app.PermissionControllerBean.checkBindPerm(PermissionControllerBean.java:575) at com.kingdee.eas.base.permission.app.PermissionControllerBean.checkFunctionPermission(PermissionControllerBean.java:559) at com.kingdee.eas.base.permission.app.PermissionControllerBean._checkFunctionPermission(PermissionControllerBean.java:1666) at com.kingdee.eas.base.permission.app.AbstractPermissionControllerBean.checkFunctionPermission(AbstractPermissionControllerBean.java:292)
信息提示“用户 xxx 没有 客户预估单_查看 的业务权限!”,没有提示哪个组织,正常应该要提示出具体的组织名称。从这里看,推测可能还是跟组织数据有问题。用户登录EAS后,切换到授权组织下打开菜单时,要到上下文中查找该XXXX权限项的主业务组织类型对应的组织。具体到本例,是到上下文中查找“客户预估单_查看”的主业务组织类型“财务组织”对应的组织是哪个。
在查询分析器中输入 ctx,选中后点【运行服务端脚本】后可以获取到上下文信息:
从上下文信息可以看到,没有获取到当前登录组织的财务组织信息。这是怎么回事呢?t_org_company表中也可以查到这个业务组织,说明就是财务组织,为什么上下文中获取不到呢?是不是这个组织的数据有问题,所以在获取主业务组织时没有获取到?
问题就转到检查这个组织数据是否有问题。在组织单元菜单中,搜索到这个组织,编辑打开看看信息,发现编辑时就报中断了:
错误详细堆栈信息:com.kingdee.bos.dao.ormapping.SQLAccessException: select data error.Invalid column name 'FENCRYPTIONKEY'.
通过日志看到,是组织相关的表缺少了字段FENCRYPTIONKEY,可以在查询分析器中执行sql脚本加上该字段:
alter table T_ORG_COMPANY add FENCRYPTIONKEY varchar(80)
alter table T_ORG_OUPARTFI add FENCRYPTIONKEY varchar(80)
这个字段是基础数据领域补丁PT173177(2023-9-8发布)添加的脚本,实现功能:组织单元财务组织属性中增加字段“加密密钥”,这个字段是自从861版本开始才有的字段。表缺少字段,应该是正式库备份的测试数据库没有执行补丁脚本导致的。
加上字段后,重启客户端、重新登录,再去打开菜单,就可以打开了。
【权限】用户 xxx 没有 单据xxx 的业务权限!
本文2024-09-22 20:05:57发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-111442.html