16.09.2013, 12:52 | #1 |
Участник
|
Настройка прав в журналах
Добрый день.
Подскажите, есть ли возможность стандартными средствами настроить права доступа таким образом, чтобы один и тот же пользователь, например, в складском журнале с типом "Проводка" мог править поле Qty, а в журнале с типом "Прибыли / Убытки" имел доступ только на чтение к этому полю? Или только программировать? (AX 2009) Из доработок вижу следующие варианты: 1. Вешать дополнительные ключи на элементах формы. Куча минусов - настраивать права сложно (надо помнить где в дереве искать тот ключ), продвинутый пользователь добавит себе через настройку это же поле из ds и обойдет запрет на контроле, сразу нельзя понять есть права на поле или нет, т.к. нужно смотреть в несколько мест, про это нужно всегда помнить. 2. Создавать ключи доступа, в коде проверять наличие прав на эти ключи и в зависимости от результата проверки устанавливать доступ на поля в ds. Минусы все те же, что и в предыдущем пункте, кроме "продвинутого пользователя". 3. Писать какой-то свой движок настройки прав доступа, в котором можно будет выдавать права на поля в зависимости от каких-то условий (например, тип журнала). Тут тоже вижу больше минусов, чем плюсов в поддержке этого решения. Если кто-то решал подобную проблему, то поделитесь, пожалуйста, опытом. |
|
16.09.2013, 13:29 | #2 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: _scorp_ (2). |
16.09.2013, 13:39 | #3 |
NavAx
|
На форме на поле формы можно установить SecurityKey, им можно будет рулить, ключ лучше делать отдельный "специальный". Можно так же сделать отдельный "специальный" SecurityKey и в init() формы или датасорса прописать
X++: inventJournalTrans_ds.object(fieldNum(InventJournalTrans, Qty)).allowEdit(hasSecuritykeyAccess(securityKeyNum(MySpecKey), AccessType::Edit)); |
|
|
За это сообщение автора поблагодарили: _scorp_ (2). |
16.09.2013, 16:05 | #4 |
Участник
|
В стандарте думаю никак, но стандарт можно допилить, точнее механизмы, которые ограничивают доступ к контролам в форме уже есть, но они работают не для всех контролов - права доступа на поля формы. Ну скорее всего придется допиливать настройку прав при добавлении контролов на форму, для защиты от продвинутого юзера.
Как то делал доработку по настройке прав доступа к полям фин. аналитик(еще для 4.0, но разница я думаю небольшая) - реализация была примерно следующая - табличка с id таблицы, id поля фин. аналитики, доступ, группа. При запуске AX в кеш помещались данные по доступу, дальше при запуске формы пробегались контролы и находились те фин. аналитики на которые ограничен доступ и через метод userSecurityLevel устанавливался доступ (через allowEdit нельзя, т.к. в дальнейшем могли просто написать другие условия по доступности поля и как следствие настройка прав бы игнорировалась). В вашем случае можно создать табличку еще в разделении формы, но лучше как мне кажется допилить чуток стандарт.
__________________
Sergey Nefedov |
|
|
За это сообщение автора поблагодарили: _scorp_ (2). |
17.09.2013, 11:16 | #5 |
Участник
|
Похоже от программирования не уйти... Спасибо.
|
|
17.09.2013, 12:41 | #6 |
Участник
|
Можно попробовать рассмотреть другие решения этой проблемы:
Например, закрыть этому пользователю доступ к журналу "Прибыли / Убытки" совсем (или частично для журналов "Прибыли / Убытки", привязанных к какой-либо группе пользователей, в которую он не входит), а количество пусть смотрит в другом месте, например в складских проводках, отчетах и т.п. Последний раз редактировалось Shmel_83; 17.09.2013 в 12:43. |
|