16.12.2020, 12:28 | #1 |
Участник
|
AX09 не могу найти в AccessRightsList права на доступ к кнопке на форме
Привет.
Имеется вот такое дерево у группы прав, см. ниже. В нем выбрал интересующий меня элемент - кнопку на форме. Никак не могу в группе AccessRightsList обнаружить запись соответствующую данной кнопке. Подскажите, может такой уровень доступа хранится в другой таблице? Система же хранит эти изменения где то. Искал SQL запросом - не нашел. Цитата:
SELECT * FROM
AccessRightsList WHERE elementName = 'WinButton В данной таблице нахожу только записи соответствующие уровню Серия CRM\Ежедневно\<......> Последний раз редактировалось oleggy; 16.12.2020 в 12:33. |
|
16.12.2020, 12:58 | #2 |
NavAx
|
Скорее всего надо искать menuitem
|
|
16.12.2020, 13:45 | #3 |
Участник
|
Если это MenuItem, то нужно действовать как рекомендует Raz.
А вот если это просто Button или какой-то элемент формы, то скажите спасибо тем, кто так реализовал (хотя думаю что консультант или кто у Вас настраивает доступ уже это сделал) и начинайте изучать как работать с таблицами SysSecurityFormTable и SysSecurityFormControlTable. |
|
17.12.2020, 10:36 | #4 |
Участник
|
На обычном button еще в свойствах может стоять выключенный securitykey, как и на любом контроле и даже на кнопке с менюитемом. Если так то надо проверить его выключенность.
|
|
18.12.2020, 07:06 | #5 |
Участник
|
Подскажите еще, а как отследить связь записей в таблице AccessRightsList с построением дерева прав?
(кстати в этой связи таблицы SysSecurityFormTable и SysSecurityFormControlTable понятнее, там есть поле с названием формы) Т.е. я вот в рамках определенной группы прав сделал выборку, но получившийся список записей сложно систематизировать в рамках какой ветки/таблицы/формы каждая запись? Пытаюсь расшифровать данные. select groupid -- название группы прав , domainid -- имя компании , recordtype -- тут значения либо 0, 1, 6-9, это что? , parentid -- тут значения либо 0 либо 40084, 40084 что это? , id -- что за идентификатор? по нему можно отследить? , elementname , accesstype -- тут сам доступ 0..4 , accesstypefkeyuse -- тут только 0 записан , recid from ACCESSRIGHTSLIST where groupId = @userGroupId Не подскажете как систематизировать для какого модуля, какой ветки (в дереве прав) соотносится каждая запись? Последний раз редактировалось oleggy; 18.12.2020 в 07:12. |
|
18.12.2020, 12:19 | #6 |
Участник
|
Цитата:
SecurityKey - 6, MenuItemDisplay - 7, MenuItemOutput - 8, MenuItemAction - 9 и т.д. parentid - id родителя узла. Например для Поля таблицы там будет стоять id Таблицы этого поля. В основном только для полей таблиц и предназначен. Если 0 значит нет никакого родителя. 40084 - это id какой-то Вашей таблицы. id - непосредственно сам идентификатор объекта на которого наложено ограничение по доступу. Если таблица - id Таблицы, если поле - id Поля, если SecurityKey - id SecurityKey - ставится только для тех объектов у кого есть id. (Для остальных, как MenuItem-ы и т.д. прописывается название MenuItem-а в поле elementName)
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. |
|
|
За это сообщение автора поблагодарили: oleggy (2). |
04.10.2022, 14:31 | #7 |
Участник
|
Подскажите а в AX ведется какая либо таблица где хранятся тестовые имена соответствующие id - ACCESSRIGHTSLIST.id ?
т.е. конкретно интересует id SecurityKey |
|
04.10.2022, 15:48 | #8 |
Administrator
|
Для AX 2009 - нет (точнее изнутри AX можно в System Documentation найти табличку UtilElements / UtilIdElements, но на SQL Server она не хранится). Можно только выцепить ID таблиц, полей и вьюх (табличка SQLDICTIONARY). А также конфигурационных ключей и лицензий (табличка SYSCONFIG).
И еще учтите - что в AccessRightsList хранятся только "родительские" записи. Т.е. если в дереве прав Вы видите включенный доступ на Security Key и под этим ключом - также включенный доступ на таблицу / форму / пункт меню - то в AccessRightsList не будет записи об этой таблице / форме / пункте меню, т.к. она подчинена включенному Security Key. Более правильно стоит сказать - что запись может быть, а может и не быть. Если включить ключик и нажать кнопку Каскад - то записи в AccessRightsList, относящиеся к подчиненным ключику объектам (кроме контролов - они в отдельной таблице - как уже сказал Raven Melancholic) - будут удалены и это будет означать для системы, что доступ включен. При этом ничто не мешает вручню выключить / включить доступ на эти объекты без нажатия на кнопку Каскад и тогда записи могут остаться.
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 04.10.2022 в 16:09. |
|
05.10.2022, 08:22 | #9 |
Участник
|
Не подскажете где запускается обновление данной таблицы?
Посмотрел по перекрестным ссылкам, вижу что Средства разработки\Объекты приложения\.. Но там нет пакетной операции.. |
|
05.10.2022, 08:35 | #10 |
Administrator
|
Обновление чего? таблицы AccessRightsList? Формирование записей в ней производится ядром (код закрыт, это не Х++). И уж тем более даже в функционале нет пакетного обновления прав доступа (это в AX 2012 можно в пакете роль назначить; а в AX2009 штатно такого нет)
__________________
Возможно сделать все. Вопрос времени |
|