2013-08-19 4 views
2

У меня есть ситуация, когда я хочу использовать защиту поля, но только когда атрибут в записи является определенным значением. Объект - это контакт, и есть бит атрибута VIP. Когда пользователь открывает эту запись, а значение VIP истинно, и они не входят в VIP-команду, пользователь не может видеть поля, помеченные для безопасности поля.CRM 2011 Полевая безопасность на основе значения атрибута

Можно ли написать плагин, чтобы сделать это, или есть лучшее решение?

+0

Что делать, если пользователь открывает запись, а VIP - false? – Bvrce

+0

Они могут открыть запись и посмотреть все поля. Если это правда, только люди, имеющие доступ, могут видеть отмеченные поля. Я думаю, что у меня, возможно, были подняты роли безопасности и команды. Полевая безопасность работает только с командами? –

+0

Безопасность на местах работает только с настраиваемыми объектами и не ограничивается командами. Будет ли отображаться или скрываться только поле VIP? Из того, что я понимаю, пользователь сможет сделать вывод о том, является ли Контакт VIP или не основан на видимом поле или нет; поэтому я не вижу в этом случае безопасности на уровне поля. JavaScript был бы простым вариантом для показа/скрытия полей, но поля все равно были бы «там» только скрытыми. – Bvrce

ответ

2

Вы можете подключиться к событию onLoad формы и проверить команды пользователя и поле VIP и показать другие поля соответственно.

Не уверен, что, если есть более простой способ, чтобы получить команду,-запрос OData будет вариант: http://msdn.microsoft.com/en-us/library/gg334767.aspx

Команда будет выглядеть следующим образом:

var userid = Xrm.Page.context.getUserId(); 
var cmd = "/TeamMembershipSet?$select=TeamId&$filter=SystemUserId eq guid'" + userid + "'"; 

Чтобы установить видимость поля, имеют a посмотреть на эту ссылку: http://danielbergsten.wordpress.com/2011/02/15/crm-2011-javascript-for-hiding-a-field-based-on-another-fields-value/

+0

Спасибо! Итак, чтобы сделать этот запрос OData, я могу использовать SDK.REST.js, как из SDK CRM 2011, или я использую SDK.JQuery.js? Каким будет код для вызова команды? –

+0

Посмотрите на опубликованную ссылку MSDN, в которой перечислены некоторые примеры, например. http://msdn.microsoft.com/en-us/library/gg985387.aspx – pat

0

Это можно решить с помощью role based forms.

  • Создать новую форму для VIP команды
  • Выберите роль безопасности для новой формы
  • безопасности Уровень поля в сочетании с ролевыми на основе форм является хорошей идеей, если VIP поле должно никогда не быть доступным для пользователей с низкими привилегиями; даже через отчеты и другие методы доступа к данным. Это больше подходит для управления профилями безопасности на уровне поля, поскольку они полностью отделены от ролей безопасности; они назначаются пользователям или командам.

    +0

    Это не решение проблемы. Я хочу отключить доступ для чтения для отдельного поля (назовем его моим любимым цветом), когда значение VIP истинно, и пользователь не входит в состав VIP-команды. Если значение VIP равно false, каждый может увидеть значение моего любимого поля цвета. –

    0

    Мне кажется, что вы, администратор, должны были быть частью роли безопасности на уровне поля.

    Мне также пришлось перезапустить сайт IIS/CRM для его укуса.