|  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) но на конкретные журналы только тот, что установили через права менюитема (форма открывается с правами менюитема при помощи которого вызвана). Соответственно, если на менюитем переноса установили права "Чтение", то по переносам ни проверить ни разнести не смогут. А в журнале инвентаризации из-за полного доступа к менюитему смогут выполнять и разноску. | 
|  |