在金蝶雲星空中,權限是按角色配置的,一個用戶可以歸屬於多個角色,如果這些不同角色對於同一個業務的權限有沖突時,我們通常的理解是禁止權限高於一切,但實際上並不是。
舉個例子:某用戶既屬於“采購員”角色,又屬於“銷售主管”角色,兩個角色的權限設置如下:
角色 | 業務對象 | 查看權限 | 數據范圍 |
采購員 | 客戶 | 禁止 | 未設置數據范圍 |
銷售主管 | 客戶 | 允許 | 僅一小部分客戶 |
按照通常的理解,這個用戶不僅無法打開客戶列表,而且在單據中瀏覽選擇客戶時,只能按照“銷售主管”角色給予的權限,選擇到一小部分客戶。但實際測試發現,該用戶在錄入其他應收單時、在增加供應商選擇對應客戶時,點擊瀏覽按鈕后,能查看到全部客戶,而不僅僅是一小部分客戶。
經過與總部的溝通,金蝶雲星空在設計權限的時候,查看權限和數據范圍權限這兩個是獨立的:
- 如果多個角色都有查看權限,則禁止權限高於一切,這個也是我們通常理解的,因此該用戶確實無法打開客戶列表這個功能。
- 如果多個角色都有數據權限,則權限是並集,也就是這個客戶在采購員角色中,因為未設置數據范圍所以可以看到所有客戶。
解決辦法:當對某角色設置禁止權限的時候,還要同時設置一條無法成立的數據規則,才能保證數據規則正常生效,也就是:
角色 | 業務對象 | 查看權限 | 數據范圍 |
采購員 | 客戶 | 禁止 | 設置一條無法成立的規則 |
銷售主管 | 客戶 | 允許 | 僅一小部分客戶 |
如下圖所示,由於客戶編碼不可能包含“無法查看”這四個字,所以這條數據規則是無法成立的: