AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.07.2009, 11:55   #1  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Динамическое изменение прав доступа на одну таблицу
Добрый день!

Возможно ли динамически менять права доступа на одну и ту же таблицу в зависимости от точки (от параметра в форме)?

Реальная задача - разграничить права доступа на строки складских журналов (таблица InventJournalTrans, форма InventJournalTransfer). Т.е. например в Инвентаризации строки можно редактировать, а вот в Проводках только просмотр.

MS Axapta 3.0 SP3 Retail
Старый 15.07.2009, 12:01   #2  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Цитата:
Сообщение от DreamCreator Посмотреть сообщение
Добрый день!

...
Реальная задача - разграничить права доступа на строки складских журналов (таблица InventJournalTrans, форма InventJournalTransfer). Т.е. например в Инвентаризации строки можно редактировать, а вот в Проводках только просмотр.

MS Axapta 3.0 SP3 Retail
А чем в данном случае не устраивает свойства allowEdit(...), allowCreate(...), allowDelete(...) для датасорса?
За это сообщение автора поблагодарили: DreamCreator (2).
Старый 15.07.2009, 12:15   #3  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от SRF Посмотреть сообщение
А чем в данном случае не устраивает свойства allowEdit(...), allowCreate(...), allowDelete(...) для датасорса?
Спасибо!
А значения для этих свойств возьму из ключей форм.
Старый 15.07.2009, 14:30   #4  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от SRF Посмотреть сообщение
А чем в данном случае не устраивает свойства allowEdit(...), allowCreate(...), allowDelete(...) для датасорса?
Столкнулся с еще одной трудностью:
На menuItem складских журналов навешен один ключ InventJournals, т.е.
различить их права доступа методом
X++:
hasSecuritykeyAccess(securityKeyNum(InventJournals),accessType::View);
не удастся.

Как можно определить права доступа на конкретный тип журнала (menuItem)?
(пойду разбирать настройку прав доступа..)
Старый 15.07.2009, 14:45   #5  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Цитата:
Сообщение от DreamCreator Посмотреть сообщение
...

Как можно определить права доступа на конкретный тип журнала (menuItem)?
(пойду разбирать настройку прав доступа..)
А нельзя просто привязку сделать к типу журнала(это самый простой вариант)?

Если нельзя, то вот тестовый 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  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Как можно определить права доступа на конкретный тип журнала (menuItem)?
Примерно так:
PHP код:
    if (SysDictMenu::newMenuItem(menuItemDisplayStr(InventJournalTableBOM), MenuItemType::Display).rights() == AccessType::Delete)
    {
        
info('Ok');
    } 
Только в рамках задачи:
Цитата:
Реальная задача - разграничить права доступа на строки складских журналов (таблица InventJournalTrans, форма InventJournalTransfer). Т.е. например в Инвентаризации строки можно редактировать, а вот в Проводках только просмотр.
программирование излишне. Это настраивается в обычных правах групп пользователей в ветке:
Управление запасами \ Разное \ Строки (те у которых после запятой стоит InventJournalTrans*)
За это сообщение автора поблагодарили: DreamCreator (3).
Старый 15.07.2009, 16:02   #7  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от 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 код:
    if (SysDictMenu::newMenuItem(menuItemDisplayStr(InventJournalTableBOM), MenuItemType::Display).rights() == AccessType::Delete)
    {
        
info('Ok');
    } 
Только в рамках задачи:

программирование излишне. Это настраивается в обычных правах групп пользователей в ветке:
Управление запасами \ Разное \ Строки (те у которых после запятой стоит InventJournalTrans*)
Круто! Проверили - строки журнала настроили правами! Теперь смотрю как по аналогии закрывать/открывать кнопки проверки и разноски!
Как вариант - доступность кнопки регулировать программно.

Спасибо!

P.S. OffTop В Казани ураган за окном
Старый 15.07.2009, 16:31   #8  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Кнопка "Проверка" требует доступ как минимум на изменение, кнопка "Разноска" требует доступ "Полный". Поэтому вариант такой:
На менюитемы конкретных журналов устанавливаете для группы права с каскадным изменением. На определенные журналы Правка/Чтение/Полный. Теперь так как каскадным доступом устанавливаются такие же права и на таблицы датасорсов, то непосредственно на таблицы устанавливаете Полный доступ.
Получается следующее:
1) пользователи группы имеют право на таблицу журналов полный доступ.
2) но на конкретные журналы только тот, что установили через права менюитема (форма открывается с правами менюитема при помощи которого вызвана).
Соответственно, если на менюитем переноса установили права "Чтение", то по переносам ни проверить ни разнести не смогут. А в журнале инвентаризации из-за полного доступа к менюитему смогут выполнять и разноску.
Теги
права доступа

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Расширение возможностей стандартных прав доступа Stainless DAX: Программирование 2 19.06.2008 10:36
Настройка прав доступа на уровне записей Pan DAX: Администрирование 19 12.11.2006 11:10
Экспорт/Импорт прав доступа Anais DAX: Администрирование 28 11.11.2006 21:44
при построении перекрёстных ссылок выдаётся сообщение об ошибках mmmax DAX: Программирование 10 21.01.2005 12:42
Проблемы настройки прав доступа пользователям axot DAX: Администрирование 25 16.05.2002 10:47

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:40.