Перечислите всех пользователей, которые имеют разрешение для данной таблицы в 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 разные пользователи, которых вы хотите.

Увидеть:

Или найдите в системе пример кода.

Другие вопросы по тегам