Перечислите всех пользователей, которые имеют разрешение для данной таблицы в Dynamics Axe 2009
У меня есть несколько пользовательских таблиц, которые были внедрены в нашей среде несколько лет назад.
Мне нужно перечислить пользователей и их разрешения для этой таблицы. Я нашел таблицу ACCESSRIGHTSLIST, в которой есть все, что я хочу, например, группы и, следовательно, связанные пользователи.
Проблема в том, что этот список неполон, пользователи могут изменять / просматривать эту таблицу за пределами групп, которые я нашел в ACCESSRIGHTSLIST.
Я знаю, что dicttable.rights() подойдет, но я не могу указать здесь пользователя, он проверяется только для пользователя, выполняющего код.
Что мне в основном нужно, так это dicttable.rights(someUserID), но, поскольку я не вижу, какой механизм диктуется, я застрял.
Я работаю в AX 2009.
2 ответа
У меня сейчас нет доступа к AX 2009, но, насколько я помню, вы должны использовать системный класс SecurityKeySet
, Проверьте, работает ли следующее:
SecurityKeySet securityKeySet;
AccessType accessType;
UserId userId = curUserId();
TableId tableId = tableNum(CustTable);
;
securityKeySet = new SecurityKeySet();
securityKeySet.loadUserRights(userId);
accessType = securityKeySet.tableAccess(tableId);
info(strFmt('%1', accessType));
Вместо этого создайте static server
метод и использовать runas
Команда, чтобы вызвать его, где вы runas
разные пользователи, которых вы хотите.
Увидеть:
- https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/dev-ref/xpp-session-run-time-functions
- https://community.dynamics.com/ax/f/33/t/66819
Или найдите в системе пример кода.