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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.06.2012, 06:15   #1  
ZoyaKom is offline
ZoyaKom
Участник
 
99 / 10 (1) +
Регистрация: 05.04.2012
Здравствуйте!

Подскажите, как программно определить под какой ролью зашел пользователь. Хочу попробывать на основании роли, выводить на форму только те поля которые указаны.
Старый 07.06.2012, 16:02   #2  
Constantine_imported is offline
Constantine_imported
Участник
 
126 / 10 (1) +
Регистрация: 28.04.2011
Цитата:
Сообщение от zoya210489 Посмотреть сообщение
Здравствуйте!

Подскажите, как программно определить под какой ролью зашел пользователь. Хочу попробывать на основании роли, выводить на форму только те поля которые указаны.
Попробуйте поиграться с виртуальными таблицами. Вам могут помочь таблицы 2000000053 или 2000000003, по крайней мере в предыдущих версиях Нава это работает.
Тут есть очень хорошая шпаргалка, там и про программирование и про виртуальные таблицы есть.
Старый 08.06.2012, 07:09   #3  
ZoyaKom is offline
ZoyaKom
Участник
 
99 / 10 (1) +
Регистрация: 05.04.2012
Цитата:
Сообщение от Constantine Посмотреть сообщение

Попробуйте поиграться с виртуальными таблицами. Вам могут помочь таблицы 2000000053 или 2000000003, по крайней мере в предыдущих версиях Нава это работает.
Тут есть очень хорошая шпаргалка, там и про программирование и про виртуальные таблицы есть.
Спасибо за ответ. На данный момент пытаюсь разобраться с правами доступа к базе данных в зависимости от роли пользователя. В документации пишут, что при помощи настройки ролей можно ограничить просмотр таблиц для каждого пользователя. В принципе понятно, пробовала, получалось. Хотелось бы узнать, это единственный способ разграничить права доступа к информации в БД??? Также планируется для каждого пользователя на Page выводить только те поля, которые определены для него и соответственно редактировать только те поля которые ему разрещены.
На данный момент у меня это получилось с помощью довавление гловальной переменной variant (boolean). И проставление ее в свойтва необходимых полей. А права я разграничила с помощью UserID.



OnOpenPage()

user:=USERID;

If user = 'admin' THEN
variable:=false;

Подскажите, правильный ли я выбрала способ разграничения прав? Таким образом, мне придется для каждой Page писать код, и при том еще накладывать условия на USERID, т.е. блоков If user... будет столько сколько пользователей.
Старый 08.06.2012, 10:27   #4  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Не знаком с 2009, но для классического у нас заведены спец таблички: справочник действий (например, отображение поля) и справочник пользователей с наделенными действиями. Дальше на опен форм для каждого контрола смотрится есть ли во второй табличке у него права на отображения, если есть показываем, нет скрываем. Это позволяет играться только настройками, у вас же придется лазить в код при добавлении нового юзверя.
Старый 08.06.2012, 10:35   #5  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Цитата:
Сообщение от zoya210489 Посмотреть сообщение
OnOpenPage()
user:=USERID;
If user = 'admin' THEN
variable:=false;
кстати, вашу конструкцию можно написать короче

Код:
 
variable := not (USERID = 'admin')
Старый 08.06.2012, 11:29   #6  
Constantine_imported is offline
Constantine_imported
Участник
 
126 / 10 (1) +
Регистрация: 28.04.2011
Цитата:
Сообщение от InTacto Посмотреть сообщение
Не знаком с 2009, но для классического у нас заведены спец таблички: справочник действий (например, отображение поля) и справочник пользователей с наделенными действиями. Дальше на опен форм для каждого контрола смотрится есть ли во второй табличке у него права на отображения, если есть показываем, нет скрываем. Это позволяет играться только настройками, у вас же придется лазить в код при добавлении нового юзверя.
Тут где-то на форуме была мысль допилить табличку User Setup и использовать для этих целей. Вы отдельные таблицы создавали? Кстати, много пришлось писать кода на формах, вернее много ли форм Вы таким образом меняли?
Старый 08.06.2012, 11:48   #7  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
думаю User Setup не пойдет, потому как для одного пользователя можно задать несколько действий (отношение один ко многим).
Ушло 4 таблички: действия, группы действий(объединение действий, например по отделам), действия для пользовтеля, группы действий для пользователя + 4 формы + кодеюнит с ф-циями поиска (передаем юзерайди и действие, назад тру или фэлсе). Используется повсеместно: разрешение на валидацию полей, пункты меню, мигание контролов, доступ к меню (было сделано еще для 3.6 кажется). По коду всего лишь нужно прописать переменную кодеюнита и вызвать ф-цию с параметрами, а дальше использовать полученный результат, главное заранее все продумать, чтобы в код лазить не пришлось.
 


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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:34.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.