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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.08.2006, 16:29   #1  
Paolo is offline
Paolo
Участник
Аватар для Paolo
 
76 / 11 (1) +
Регистрация: 27.02.2006
Адрес: Москва
права доступа к отдельным клиентам
Здравствуйте!
Подскажите, как можно спрятать группу организаций (или персон) от определенного пользователя (группы пользователей) ?
Понятно, что это можно сделать с помощью представлений, но как можно это сделать с помощью прав доступа?
Спасибо!
__________________
тел. 8(916) 411-4006
Старый 04.08.2006, 00:13   #2  
AndreyS is offline
AndreyS
Moderator
Сотрудники Microsoft Dynamics
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
283 / 61 (3) ++++
Регистрация: 18.05.2006
Присвоить этим пользователям роль, для которой право чтения организаций/контактов установлено в "читать только свои".
За это сообщение автора поблагодарили: Paolo (1).
Старый 04.08.2006, 11:44   #3  
mystic is offline
mystic
Microsoft CRM Certified Professional
Аватар для mystic
SoftLine
 
160 / 12 (1) ++
Регистрация: 13.07.2004
Адрес: Москва
Или используете Business Units (в одном подразделении все видят всё), а в другом подразделении только записи своего подразделения:
Например 2 подразделения:
-логистика - 2 пользователя
-продажи - 20 пользователей

логисты видят контакты во всей организации (т.е. видят контакты поставщиков и клиентов), а продавци только записи в рамках своего подразделения (т.е. видят только контакты клиентов)

Последний раз редактировалось mystic; 07.08.2006 в 18:07.
Старый 08.08.2006, 10:38   #4  
Paolo is offline
Paolo
Участник
Аватар для Paolo
 
76 / 11 (1) +
Регистрация: 27.02.2006
Адрес: Москва
Цитата:
Сообщение от AndreyS
Присвоить этим пользователям роль, для которой право чтения организаций/контактов установлено в "читать только свои".

спасибо! это же элементарно
как я сам забыл?
__________________
тел. 8(916) 411-4006
Старый 14.08.2006, 11:59   #5  
Paolo is offline
Paolo
Участник
Аватар для Paolo
 
76 / 11 (1) +
Регистрация: 27.02.2006
Адрес: Москва
Следующий вопрос:
допустим, есть 2 группы пользователей, у одной из которых есть "свои клиенты", но при этом, другая группа также работает с частью из этих клиентов, причем, две группы относятся к разным подразделениям и НЕ должны видеть всех клиентов в базе
для первой группы ставим - видеть только своих, что ставить для 2-?
Нужно ли создавать рабочую группу? Или как это правильно можно сделать?
__________________
тел. 8(916) 411-4006
Старый 14.08.2006, 12:32   #6  
sam is offline
sam
Участник
 
160 / 25 (1) +++
Регистрация: 04.08.2003
Адрес: Красноярск
Может быть так?
Нужно две роли - каждой роли доступ только для своих клиентов. Потом создаем рабочую группу - (общие клиенты например). В эту группу включаем пользователей которые должны видеть клиентов.

Дальше из списка организаций выбираем нужные и нажимаем Другие действия\ Предоставить доступ и указываем рабочую группу.
За это сообщение автора поблагодарили: Paolo (1).
Старый 15.08.2006, 09:39   #7  
mystic is offline
mystic
Microsoft CRM Certified Professional
Аватар для mystic
SoftLine
 
160 / 12 (1) ++
Регистрация: 13.07.2004
Адрес: Москва
Можно сделать видимыми для двух подразделений только организации (действия, продажи, контакты видеть только свои), обычно если проанализировать ситуацию это не несёт опасности.
Далее если человек видет. что ему надо работать с этой организации, он обращается к владельцу организации и он (владелец), представляет права по суенарию описанному sam
Старый 23.11.2007, 12:04   #8  
Likefire is offline
Likefire
Заноза в заднице
Аватар для Likefire
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Регистрация: 22.10.2007
Адрес: Москва
Записей в блоге: 1
Пожалуй, подниму тему наверх, поскольку есть проблема...
Значит, у нас есть пользователь, некий Иванов Ваня. Ему присвоена роль, по которой он может смотреть контакты только своего подразделения и в активных контактах у него не числится ни один контакт параллельного департамента (это правильно). Но к одному контакту потребовалось дать доступ. Для этого ответственный за контакт забрался в пункт меню "Предоставить доступ..." соответсвующего контакта и добавил Иванова Ваню в пользователи, пометив одну единственную галку "Чтение". После этого Ваня Иванов увидел в списке активных контактов тот контакт (о чудо!) и кроме того даже смог отредактировать поля этого контакта и успешно сохранить свои изменения (что пипец как неправильно). Собсна я щас пребываю в состоянии культурного шока: как такое может быть, если доступ открыт тока на чтение (я потом спецом открыл и перепроверил)?
Старый 26.01.2009, 16:30   #9  
Bakai Madybaev is offline
Bakai Madybaev
Участник
 
201 / 16 (1) ++
Регистрация: 22.04.2008
Господа, вопрос:
Хочу определить доступ к записи по определенному атрибуту сущности.

Думаю сделать так:
Создать Определенную роль "Роль1".
Написать Плагин на Pre Retrieve message, в котором буду по значению атрибута и наличию у пользователя "Роли1" возвращать/не возвращать данные.

Кто-нибудь делал подобное? Дайте ссылки или исходники.
В частности нужна помощь в определении наличия права у Пользователя.

Последний раз редактировалось Bakai Madybaev; 26.01.2009 в 16:34.
Старый 26.01.2009, 18:41   #10  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Есть готовое решение, но оно денег стоит: http://mscrm4ever.blogspot.com/2008/...ty-wizard.html.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 26.01.2009, 21:21   #11  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
Есть готовое решение, но оно денег стоит: http://mscrm4ever.blogspot.com/2008/...ty-wizard.html.
Скорее всего сделано при помощи тех же технологий, что описывал я ) в топике про плагины на Execute и Retreive =)
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 27.01.2009, 08:44   #12  
Bakai Madybaev is offline
Bakai Madybaev
Участник
 
201 / 16 (1) ++
Регистрация: 22.04.2008
Цитата:
Сообщение от a33ik Посмотреть сообщение
Скорее всего сделано при помощи тех же технологий, что описывал я ) в топике про плагины на Execute и Retreive =)
Дайте ссылку - буду благодарен
Старый 27.01.2009, 08:52   #13  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Цитата:
Сообщение от a33ik Посмотреть сообщение
Скорее всего сделано при помощи тех же технологий, что описывал я ) в топике про плагины на Execute и Retreive =)
Другого пути сделать это я не вижу. Надо отдать должное этим ребятам. Судя по демонстрациям, они сделали кучу классных продуктов, притом большинство из них полностью поддерживаемые.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 27.01.2009, 11:30   #14  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Lightbulb
Цитата:
Сообщение от Bakai Madybaev Посмотреть сообщение
Дайте ссылку - буду благодарен
Тут
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 28.01.2009, 10:22   #15  
Bakai Madybaev is offline
Bakai Madybaev
Участник
 
201 / 16 (1) ++
Регистрация: 22.04.2008
Подскажите, как НЕ вернуть данные из Plugin на Retrieve message?
Старый 28.01.2009, 10:26   #16  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Lightbulb
Цитата:
Сообщение от Bakai Madybaev Посмотреть сообщение
Подскажите, как НЕ вернуть данные из Plugin на Retrieve message?
В методе Execute плагина вызовите исключение. Например InvalidPluginException.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit

Последний раз редактировалось a33ik; 28.01.2009 в 10:31.
Старый 29.01.2009, 08:20   #17  
Bakai Madybaev is offline
Bakai Madybaev
Участник
 
201 / 16 (1) ++
Регистрация: 22.04.2008
Цитата:
Сообщение от a33ik Посмотреть сообщение
В методе Execute плагина вызовите исключение. Например InvalidPluginException.
Но ведь тогда юзеру откроется страшное окно с информацией об исключении, разве нет?
Старый 29.01.2009, 09:03   #18  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Все верно, исключений быть не должно. Думаю, надо изменять OutputParameters с тем, чтобы они не содержали лишних данных.
Обращаю ваше внимание на тот факт, что пользователи должны иметь возможность сохранять изменения в дозволенных на чтение/изменения полях. А это значит, что если вы просто удалите данные из запроса, то можете получить проблему очистки скрываемых значений при сохранении из формы. Будьте внимательны! С другой стороны, если эти поля скрыты, то они не должны стать isDirty и передаваться на сохранение. Словом одними плагинами и без скриптов вам, видимо, не обойтись!
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
За это сообщение автора поблагодарили: Bakai Madybaev (1).
Старый 29.01.2009, 11:34   #19  
Bakai Madybaev is offline
Bakai Madybaev
Участник
 
201 / 16 (1) ++
Регистрация: 22.04.2008
Артем, спасибо за информацию.

Пока что сделал так на попытку открытия формы клиента.

Но теперь мне надо сделать так, чтобы Запись совсем не отображалась в Представлении и отчете Пользователю без необходимой роли.
Насколько я понимаю, для этого мне нужно плагин подключить к RetrieveMultiple message?
Старый 29.01.2009, 11:38   #20  
Bakai Madybaev is offline
Bakai Madybaev
Участник
 
201 / 16 (1) ++
Регистрация: 22.04.2008
X++:
        public void Execute(IPluginExecutionContext context)
        {
            if (context.Depth > 1)
                return;

            Microsoft.Crm.Sdk.Moniker entity = null;

            if (context.InputParameters.Properties.Contains("Target") &&
               context.InputParameters.Properties["Target"] is Microsoft.Crm.Sdk.Moniker)
            {
                entity = (Microsoft.Crm.Sdk.Moniker)context.InputParameters.Properties["Target"];
                if (entity.Name != Microsoft.Crm.SdkTypeProxy.EntityName.account.ToString()) { return; }
            }
            else
            {
                return;
            }
            ICrmService serv = context.CreateCrmService(true);
            TargetRetrieveDynamic targetRetrieve = new TargetRetrieveDynamic();

            // Set the properties of the target.
            targetRetrieve.EntityName = entity.Name;
            targetRetrieve.EntityId = entity.Id;

            // Create the request object.
            RetrieveRequest retrieve = new RetrieveRequest();

            // Set the properties of the request object.
            ColumnSet cols = new ColumnSet();
            cols.Attributes.Add("customertypecode");
            cols.Attributes.Add("name");

            retrieve.Target = targetRetrieve;
            retrieve.ColumnSet = cols;

            // Indicate that the BusinessEntity should be retrieved as a DynamicEntity.
            retrieve.ReturnDynamicEntities = true;

            // Execute the request
            RetrieveResponse retrieved = (RetrieveResponse)serv.Execute(retrieve);

            DynamicEntity retrievedentity = (DynamicEntity)retrieved.BusinessEntity;

            if (retrievedentity.Properties["customertypecode"] != null)
            {
                if (((Picklist)retrievedentity.Properties["customertypecode"]).name == "Клиент")
                {
                    // Create a QueryExpression.
                    QueryExpression qe = new QueryExpression();
                    qe.EntityName = "role";
                    qe.ColumnSet = new AllColumns();

                    // Set up the join between the role entity
                    // and the intersect table systemuserroles.
                    LinkEntity le = new LinkEntity();
                    le.LinkFromEntityName = "role";
                    le.LinkFromAttributeName = "roleid";
                    le.LinkToEntityName = "systemuserroles";
                    le.LinkToAttributeName = "roleid";

                    // Set up the join between the intersect table
                    // systemuserroles and the systemuser entity.
                    LinkEntity le2 = new LinkEntity();
                    le2.LinkFromEntityName = "systemuserroles";
                    le2.LinkFromAttributeName = "systemuserid";
                    le2.LinkToEntityName = "systemuser";
                    le2.LinkToAttributeName = "systemuserid";

                    // The condition is to find the user ID.
                    //Microsoft.Crm.Sdk.Query.c
                    ConditionExpression ce = new ConditionExpression();
                    ce.AttributeName = "systemuserid";
                    ce.Operator = ConditionOperator.Equal;
                    ce.Values = new object[] { context.UserId };

                    FilterExpression fe = new FilterExpression();
                    fe.AddCondition(ce); 
                    le2.LinkCriteria = fe;
                    le.LinkEntities.Add(le2);
                    qe.LinkEntities.Add(le); 

                    // Execute the query.
                    BusinessEntityCollection bec = serv.RetrieveMultiple(qe);

                    string rolename = "Системный администратор";
                    bool roleFound = false;
                    if (bec.BusinessEntities.Count > 0)
                    {
                        for (int i = 0; i < bec.BusinessEntities.Count; i++)
                        {
                            if (rolename == ((role)bec.BusinessEntities[i]).name)
                                roleFound = true;
                        }
                    }

                    if (!roleFound)
                    {
                        throw new InvalidPluginExecutionException("У вас нет достаточных прав на просмотр данных о клиенте.");
                    }
                }
            }
        }
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
CRM 3.0 и AD - права пользователя на домен!?! Lemming Dynamics CRM: Администрирование 6 27.07.2012 06:54
Уровни доступа в MS CRM 4.0. xany Dynamics CRM: Администрирование 3 11.03.2009 11:00
Права доступа к новой сущности Олег Михайлов Dynamics CRM: Разработка 1 11.07.2008 11:30
Про сиквельные права в CRM tatra Dynamics CRM: Разработка 8 30.01.2008 11:43
Проблемы с назначением прав доступа. uaslava Dynamics CRM: Администрирование 0 20.03.2007 16:25

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:37.