15.07.2009, 11:55 | #1 |
Moderator
|
Динамическое изменение прав доступа на одну таблицу
Добрый день!
Возможно ли динамически менять права доступа на одну и ту же таблицу в зависимости от точки (от параметра в форме)? Реальная задача - разграничить права доступа на строки складских журналов (таблица InventJournalTrans, форма InventJournalTransfer). Т.е. например в Инвентаризации строки можно редактировать, а вот в Проводках только просмотр. MS Axapta 3.0 SP3 Retail |
|
15.07.2009, 12:01 | #2 |
Участник
|
Цитата:
|
|
|
За это сообщение автора поблагодарили: DreamCreator (2). |
15.07.2009, 12:15 | #3 |
Moderator
|
|
|
15.07.2009, 14:30 | #4 |
Moderator
|
Цитата:
На menuItem складских журналов навешен один ключ InventJournals, т.е. различить их права доступа методом X++: hasSecuritykeyAccess(securityKeyNum(InventJournals),accessType::View); Как можно определить права доступа на конкретный тип журнала (menuItem)? (пойду разбирать настройку прав доступа..) |
|
15.07.2009, 14:45 | #5 |
Участник
|
Цитата:
Если нельзя, то вот тестовый job, который определяет доступ к конкретному пункту меню X++: static void SRF_CheckAccessRightMenuItem(Args _args) { SecurityKeySet securitySet; ; securitySet = SysSecurity::constructSecurityKeySet(); securitySet.loadUserRights(curUserId()); info(strFmt("%1", securitySet.menuItemAccess(menuItemDisplayStr(InventJournalTableMovement), AccessRecordType::MenuItemDisplay))); } |
|
|
За это сообщение автора поблагодарили: DreamCreator (2). |
15.07.2009, 14:56 | #6 |
Участник
|
Цитата:
Как можно определить права доступа на конкретный тип журнала (menuItem)?
PHP код:
Цитата:
Реальная задача - разграничить права доступа на строки складских журналов (таблица InventJournalTrans, форма InventJournalTransfer). Т.е. например в Инвентаризации строки можно редактировать, а вот в Проводках только просмотр.
Управление запасами \ Разное \ Строки (те у которых после запятой стоит InventJournalTrans*) |
|
|
За это сообщение автора поблагодарили: DreamCreator (3). |
15.07.2009, 16:02 | #7 |
Moderator
|
Цитата:
Сообщение от SRF
А нельзя просто привязку сделать к типу журнала(это самый простой вариант)?
Если нельзя, то вот тестовый job, который определяет доступ к конкретному пункту меню X++: static void SRF_CheckAccessRightMenuItem(Args _args) { SecurityKeySet securitySet; ; securitySet = SysSecurity::constructSecurityKeySet(); securitySet.loadUserRights(curUserId()); info(strFmt("%1", securitySet.menuItemAccess(menuItemDisplayStr(InventJournalTableMovement), AccessRecordType::MenuItemDisplay))); } Привязку к типу сделать нельзя, т.к. для разных групп пользователей - права различны. Цитата:
Сообщение от Raven Melancholic
Примерно так:
PHP код:
программирование излишне. Это настраивается в обычных правах групп пользователей в ветке: Управление запасами \ Разное \ Строки (те у которых после запятой стоит InventJournalTrans*) Как вариант - доступность кнопки регулировать программно. Спасибо! P.S. OffTop В Казани ураган за окном |
|
15.07.2009, 16:31 | #8 |
Участник
|
Кнопка "Проверка" требует доступ как минимум на изменение, кнопка "Разноска" требует доступ "Полный". Поэтому вариант такой:
На менюитемы конкретных журналов устанавливаете для группы права с каскадным изменением. На определенные журналы Правка/Чтение/Полный. Теперь так как каскадным доступом устанавливаются такие же права и на таблицы датасорсов, то непосредственно на таблицы устанавливаете Полный доступ. Получается следующее: 1) пользователи группы имеют право на таблицу журналов полный доступ. 2) но на конкретные журналы только тот, что установили через права менюитема (форма открывается с правами менюитема при помощи которого вызвана). Соответственно, если на менюитем переноса установили права "Чтение", то по переносам ни проверить ни разнести не смогут. А в журнале инвентаризации из-за полного доступа к менюитему смогут выполнять и разноску. |
|