AXForum  
Zurück   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen Alle Foren als gelesen markieren

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 29.04.2003, 10:14   #1  
Сергей Андросов ist offline
Сергей Андросов
Участник
 
6 / 10 (1) +
Registriert seit: 19.02.2003
Текущая роль пользователя
Здравствуйте все!

Никто не подскажет - можно ли в C/AL коде получить роль текущего пользователя?
Хотя бы ее название...

Хотелось бы разграничить доступ к строкам таблиц по ролям руками - потому что
стандартный механизм фильтрации таблицы прямо в роли тянет за собой некоторые проблемы... Со своими таблицами он еще проходит - а со стандартными не очень...
Кстати - если кто-то решал такую проблему - не поделитесь подходом?

C уважением!
Сергей Андросов.
Alt 29.04.2003, 11:44   #2  
Alex_V ist offline
Alex_V
Участник
 
159 / 10 (1) +
Registriert seit: 19.02.2003
можешь посмотреть темы "Роли в Attain" и "безопасность в attain" - там все это обсуждалось
Alt 29.04.2003, 12:01   #3  
Perec ist offline
Perec
Участник
 
129 / 10 (1) +
Registriert seit: 18.02.2003
Ort: Москва
Добрый день.

Я думаю можно попробовать так:

1.

Определить globals:
user: Code
role: Code
MemberOf: Record (MemberOf)

2.

User := USERID;
MemberOf.SETFILTER("User ID", User);
if MemberOf.FIND('-') then Role := MemberOf."Role ID";
Alt 30.04.2003, 12:28   #4  
Grizzly ist offline
Grizzly
Участник
 
85 / 10 (1) +
Registriert seit: 30.01.2003
Ort: Омск
Re: Текущая роль пользователя
Zitat:
Изначально опубликовано Сергей Андросов
Хотелось бы разграничить доступ к строкам таблиц по ролям руками
Сергей, насколько я помню, это вам нужно для разграничения доступа к операциям по подразделениям (центрам ответсвенности)? Соответсвенно, придется переписывать практически всю систему. И это не самое лучшее решение.

Zitat:
Изначально опубликовано Сергей Андросов
стандартный механизм фильтрации таблицы прямо в роли тянет за собой некоторые проблемы... Со своими таблицами он еще проходит - а со стандартными не очень...
Может быть я чего то не знаю, но проблема есть одна, когда для вычислении FlowField требуется доступ к данным закрытым фильтром безопасности.

Zitat:
Изначально опубликовано Сергей Андросов
Кстати - если кто-то решал такую проблему - не поделитесь подходом?
Практически эту проблему я не решал, но есть идея как это сделать.

Все таблицы в Attain разделим на 3 вида:
1. Таблицы без SumIndexFields и без FlowFields
2. Таблицы с SumIndexFields
3. Таблицы с FlowFields

С первым видом таблиц вообще никаких проблем не возникается (могут накладываться какие угодно фильтры, ошибок не будет), поэтому мы их не рассматриваем.

Установление фильтров на таблицы второго типа, проблем при работе собственно c таблицей тоже не создает. Проблемы возникают только при работе с таблицами, которые содержать FlowFields, вычисляемые по таким таблицам. Как я уже писал, проблема возникает из-за того, что для вычисления значения FlowField система пытается прочитать данные закрытые фильтром безопасности.

Решение данной проблемы содержится в самой технологии SIFT. Для того, чтобы ограничить набор записей, по которым вычисляется FlowField, нужно использовать FlowFilter. FlowFilter должен быть по тому же параметру, по которому устанавливается фильтр безопасности и иметь тоже значение что и фильтр безопасности.

В вашем случае для ограничения доступа к операциям самым разумным будет использовать для фильтрации одно из глобальных измерений (для примера пусть это будет «Отдел»). Его значения – список подразделений (ЦО). Так как все операции в Attain содержат глобальные измерения в SumIndexFields, а все таблицы, содержащие FlowFields по операциям, уже содержат необходимые FlowFilter, то никаких изменений в системе делать не нужно.

Далее создаются роли. По ролям устанавливаются фильтры безопасности по полю «Отдел Код» таблиц операций, а также по полю «Отдел Filter» таблиц, FlowField которых рассчитываются на основе записей таблиц операций. И в первом и во втором случае для одной роли указывается одно и тоже значение.

Естественно, 100% гарантии не даю, но на небольших тестовых примерах (по бюджетам, финансовым операция) данный подход работает.
Alt 30.04.2003, 12:56   #5  
Alex_V ist offline
Alex_V
Участник
 
159 / 10 (1) +
Registriert seit: 19.02.2003
этот подход верный только в отношении операций - но здесь тоже есть подвох.
нажав "показать все" - все операции и соответственно суммы становятся доступны.
хотя если задача только в том чтобы пользователь просто не видел ненужной информации - то проблем нет.
Alt 30.04.2003, 13:35   #6  
Grizzly ist offline
Grizzly
Участник
 
85 / 10 (1) +
Registriert seit: 30.01.2003
Ort: Омск
Zitat:
Изначально опубликовано Alex_V
этот подход верный только в отношении операций
Данный подход верен для всех таблиц между которыми существуют определенные отношения. Пример с глобальными измерениями был приведен просто потому, что он наиболее простой (не требует модификации системы) и , главное, решает задачу Сергея.

Даже если в таблице с FlowField нет нужного FlowFilter его намного проще добавить, чем переписывать код системы а затем еще иметь проблемы с обновлениями версий.

Других ограничений у данного подхода я не вижу. Если это не так, то жду пример на базе стандартной функциональности.

Zitat:
Изначально опубликовано Alex_V
но здесь тоже есть подвох. нажав "показать все" - все операции и соответственно суммы становятся доступны.
Фильтр, установленный через права роли, не снимается. Система выдаст ошибку. Что-то вроде "Вы не имеете прав на доступ к таким-то данным"

Zitat:
Изначально опубликовано Alex_V
хотя если задача только в том чтобы пользователь просто не видел ненужной информации - то проблем нет.
А для чего еще могут использовться фильтры?
Alt 30.04.2003, 13:46   #7  
Alex_V ist offline
Alex_V
Участник
 
159 / 10 (1) +
Registriert seit: 19.02.2003
можешь попробовать на примере таблицы 374 - G/L Acc. Budget Buffer - она используется при отображении сумм по бюджетным операциям. Установи фильтр на поле Global Dimension 1 Filter (естественно должны быть бюджетные операции с данным кодом и значением измерения). при просмотре итогов - вываливаются все операции на кнопку "показать все" (это без всяких модификаций кода). И кстати по поводу сообщения - в ряде случаев оно выскакивает уже после того как отображены "недоступные" операции.

Ненужная информация - та которая просто не должна мозолить пользователю глаза.
А есть еще понятие - недоступной информации - которую пользователь не может получить ни в каких случаях.
Alt 30.04.2003, 14:15   #8  
Grizzly ist offline
Grizzly
Участник
 
85 / 10 (1) +
Registriert seit: 30.01.2003
Ort: Омск
Zitat:
Изначально опубликовано Alex_V
можешь попробовать на примере таблицы 374 - G/L Acc. Budget Buffer - она используется при отображении сумм по бюджетным операциям. Установи фильтр на поле Global Dimension 1 Filter (естественно должны быть бюджетные операции с данным кодом и значением измерения). при просмотре итогов - вываливаются все операции на кнопку "показать все" (это без всяких модификаций кода). И кстати по поводу сообщения - в ряде случаев оно выскакивает уже после того как отображены "недоступные" операции.
В приаттаченном файле скриншот окна настройки роли в моем тестовом примере. Пользователю нужно дать роли All и с настройками.

Никаких перечисленных тобой симптомов не обнаружено.

P.S. Поле "Отдел Фильтр" в форме бюджета недоступно для изменения
P.P.S. Версия Attain 3.60.01

Angehängte Dateien
Dateityp: img11972-1 (92,2 KB, 877x aufgerufen)
Dateityp: img11972-2 (108,7 KB, 757x aufgerufen)
Alt 30.04.2003, 14:25   #9  
Grizzly ist offline
Grizzly
Участник
 
85 / 10 (1) +
Registriert seit: 30.01.2003
Ort: Омск
Что-то картинки не сохраняются
Miniaturansicht angehängter Grafiken
Klicken Sie auf die Grafik für eine größere Ansicht

Name:	безымянный1.jpg
Hits:	395
Größe:	92,2 KB
ID:	209  
Alt 30.04.2003, 14:48   #10  
Alex_V ist offline
Alex_V
Участник
 
159 / 10 (1) +
Registriert seit: 19.02.2003
делал все аналогично - но результат - такой как я сказал (видим отфильтрованные по коду измерения но при нажатии показать все(в форме 120-G/L Budget Entries) - показывается все). плюс еще - при таком выставлении фильтров - в бюджетные операции(форма 120-G/L Budget Entries) нельзя добавить новую операцию - ф-ия GET которая используется для получения последнего номера - также ругается на права доступа.
Alt 30.04.2003, 15:43   #11  
Grizzly ist offline
Grizzly
Участник
 
85 / 10 (1) +
Registriert seit: 30.01.2003
Ort: Омск
Zitat:
Изначально опубликовано Alex_V
делал все аналогично - но результат - такой как я сказал (видим отфильтрованные по коду измерения но при нажатии показать все(в форме 120-G/L Budget Entries) - показывается все).
Объясни мне как в этой форме могут появиться все записи, если ты специально для этой таблицы установил фильтр безопасности? Сдается мне, что для таблицы 96 ты никакого фильтра не установил.
Alt 30.04.2003, 15:49   #12  
Alex_V ist offline
Alex_V
Участник
 
159 / 10 (1) +
Registriert seit: 19.02.2003
да верно-моя ошибка - не уточнил. смысл в том что я его не ставил как раз по причине-нельзя добавить новые записи в этом случае. Установка фильтров на таблицы операций во всех случаях в конечном итоге приведет к ошибке нарушения прав доступа.
Alt 30.04.2003, 15:55   #13  
Grizzly ist offline
Grizzly
Участник
 
85 / 10 (1) +
Registriert seit: 30.01.2003
Ort: Омск
Zitat:
Изначально опубликовано Alex_V
да верно-моя ошибка - не уточнил. смысл в том что я его не ставил как раз по причине-нельзя добавить новые записи в этом случае. Установка фильтров на таблицы операций во всех случаях в конечном итоге приведет к ошибке нарушения прав доступа.
А ты не думай. Просто сделай как это описано в скиншоте. А записи новые очень хорошо добавляются с нужным значением глобального измерения.

P.S. Хотя может ты уже переписал весь Attain (см. безопасностьв Attain)? И мы говорим о различных системах?
Alt 05.05.2003, 08:07   #14  
Grizzly ist offline
Grizzly
Участник
 
85 / 10 (1) +
Registriert seit: 30.01.2003
Ort: Омск
Забираю свои слова относительно того, что можно реализовать систему безопасности на уровне записи без модификации системы. Alex_V оказался прав. Т.е. технологически это возможно (на этом основывалось мое утверждение), но практика программирования, принятая в Attain, когда программисты пишут код в предположении, что они имеют доступ ко всей таблице, этому препятствует. Например, в нашем примере с операциями бюджета формировние ИД новой записи производится следующим образом (Table 96 G/L Budget Entry):

LOCAL PROCEDURE GetNextEntryNo@4() : Integer;
VAR
GLBudgetEntry@1000 : Record 96;
BEGIN
GLBudgetEntry.SETCURRENTKEY("Entry No.");
IF GLBudgetEntry.FIND('+') THEN
EXIT(GLBudgetEntry."Entry No." + 1)
ELSE
EXIT(1);
END;

Естественно, если этот код выполняется от имени пользователя, который не видит всех данных, то он будет работать некорректно. Аналогичным образом производится формирование ИД практически для всех операций :-(.
Alt 05.05.2003, 11:31   #15  
Alex_V ist offline
Alex_V
Участник
 
159 / 10 (1) +
Registriert seit: 19.02.2003
именно это я и имел ввиду - просто переделывал сам подобные вещи - хорошо что задача оказалась небольшой по размеру
Alt 11.11.2004, 09:21   #16  
Albert ist offline
Albert
Участник
 
2 / 10 (1) +
Registriert seit: 11.11.2004
Средство безопасности на уровне записей
Нам удалось разработать средство, которое позволяет обеспечить доступ на уровне записей. Мы смогли разделить доступ к таблице "Фин. Книга Операций" по разным счетам. Т.е. в нашем случае пользователи получили доступ только к разрешенным счетам из плана счетов. Учетные процедуры работают без проблем.

Если кого-то интересует наше опыт, шлите письма по адресу albert@infosco.com
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Настройки отдельного пользователя Greggy NAV: Программирование 12 27.10.2004 08:17
Настройки пользователя Dmitry_Y NAV: Администрирование 9 27.04.2004 12:08
Задание Кода пользователя для БД из командной строки Mary NAV: Администрирование 7 05.03.2004 11:48
Attain. Конфликт фильтра по таблице и фильтра в правах пользователя Evgeniy NAV: Программирование 2 15.07.2003 13:57
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 20:37 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.