14.10.2008, 13:12 | #1 |
Участник
|
Добрый день!
Есть желание разграничить доступ пользователей к двум отчетам - чтобы одни могли пользоваться только одним, а другие, соответственно, другим. При помощи прав доступа сделать этого не удалось. Хотя может я чего не докопал... Попробовал еще вариант - Выбор принтера. Хотел настроить печать отчета, к которому не должно быть доступа, на несуществующий принтер. Но в качестве принтера можно выбрать только существующий. Да и если в итоге все-таки настроить несуществующий, печать пойдет на принтер по умолчанию. Ну и еще - в конечном диалоге печати все равно можно изменить принтер. В связи с вышеописанным - вопрос. Может кто-нибудь решал такую проблему? Заранее спасибо! |
|
14.10.2008, 13:26 | #2 |
Administrator
|
из всех общих ролей удаляем строчку Репорт 0
делаем 3 роли: 1. все отчеты 2. отчет А 3. отчет Б в первой перечисляем все объекты типа Репорт кроме А и Б во второй только А в третьей только Б всем пользователям присваиваем роль 1, кому надо - 2, кому надо - 3. се ту |
|
14.10.2008, 13:29 | #3 |
Участник
|
В зависимости от того, что это за отчеты и какие таблицы они смотрят вижу два варианта:
1) Ограничить доступ на уровне таблиц (подойдет в ограниченном числе случаев, когда группы пользователей при работе используют доступ к разным таблицам) 2) Завести настроечную табличку, связанную по коду пользователя с User Setup в которой указывать разрешенные ID отчетов и написать проверочный код при запуске отчетов. P.S Пока писал сообщение, коллега уже предложил наиболее правильное решение вопроса )) |
|
14.10.2008, 14:55 | #4 |
Участник
|
Цитата:
А как перечислить все объекты типа репорт? Руками заманаешься... Импортом? |
|
14.10.2008, 15:58 | #5 |
Участник
|
Попробовал еще раз - ничего не получается.
У ВСЕХ убрал строку Report 0 и одному добавил разрешение печатать отчет с номером ХХХ. Зашел под ним - он спокойно видит и печатает другие отчеты. Nav4.0 SP3. Про решение с настроечной таблицей согласен, можно. Только хотелось с минимум (а лучше без) доработок |
|
14.10.2008, 16:17 | #6 |
Administrator
|
Цитата:
если разговор про 4-ку, то после любого изменения прав необходимо синхренизировать все логины (процедурка на полчасика) |
|
14.10.2008, 17:44 | #7 |
Участник
|
|
|
15.10.2008, 11:28 | #8 |
Участник
|
Не знаю.. Все проверил. Репорт 0 ни у кого (кроме супера), у нужного пользователя доступ у одному отчету.
Синхронизировали. Не работает все равно. Видит все, запускает чего хочет. |
|
15.10.2008, 12:35 | #9 |
MCTS
|
На чистом кронусе:
1. создал пользователя админ - "SUPER". (это на всякий случай) 2. создал пользователя юзер 3. пользователю юзер дал роль "ВСЕ" 4. в роле "ВСЕ" удалил строку report 0 5. в роле "ВСЕ" добавил право на запуск ObjectDesigner Пользователь может зайти в базу, запустить обжект дизайнер, но не может запустить ни отчет 1, ни отчет 2. 6. в роль "ВСЕ" добавил строку report 1 Теперь пользователь может запустить отчет 1, но не может запустить отчет 2. Про SQL ничего не скажу. PS. Роль ВСЕОТЧЕТЫ, лучше создавать програмно, перебирая отчетом записи в таблице AllObj (2000000038) отфильтровав ее по типу объекта = Report. В триггере onAfterGetRecord написать: Код: //rPermission - record.Repmission (2000000005) rPermision.INIT; rPermision."Role ID":='ВСЕОТЧЕТЫ'; rPermision."Object Type":=rPermision."Object Type"::Report; rPermision."Object ID":=AllObj."Object ID"; rPermision."Execute Permission":=rPermision."Execute Permission"::Yes; IF rPermision.INSERT THEN; |
|
15.10.2008, 13:28 | #10 |
Участник
|
|
|
15.10.2008, 14:11 | #11 |
MCTS
|
Тип Объекта = Система, Объект ID = 5210
|
|
15.10.2008, 14:29 | #12 |
Участник
|
|
|
15.10.2008, 16:53 | #13 |
Administrator
|
все пользователи - хакеры
|
|
15.10.2008, 18:08 | #14 |
Участник
|
В итоге проблему решил настроив ограничение на таблицу Выбор Отчета.
Всем спасибо за помошь! |
|