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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.02.2009, 07:05   #21  
Bakai Madybaev is offline
Bakai Madybaev
Участник
 
201 / 16 (1) ++
Регистрация: 22.04.2008
Господа, вопрос еще актуален - помогите плз - RetrieveMultiple не срабатывает на попытку вернуть список записей. Какой Message срабатывает при отображении View, Отчетов и т.д.?
Старый 02.02.2009, 09:41   #22  
Артем 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
Ну, отчеты - это вообще отдельная тема. При их запуске отрабатывает только SQL Server. Так что если хотите, чтобы в них работала Ваша система безопасности, то придется править запросы всех необходимых отчетов! Ну, или создавать свои фильтрованные вьюхи...
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 02.02.2009, 10:37   #23  
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 Посмотреть сообщение
Господа, вопрос еще актуален - помогите плз - RetrieveMultiple не срабатывает на попытку вернуть список записей. Какой Message срабатывает при отображении View, Отчетов и т.д.?
Execute
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: Bakai Madybaev (1).
Старый 02.02.2009, 12:11   #24  
Bakai Madybaev is offline
Bakai Madybaev
Участник
 
201 / 16 (1) ++
Регистрация: 22.04.2008
Цитата:
Ну, отчеты - это вообще отдельная тема. При их запуске отрабатывает только SQL Server. Так что если хотите, чтобы в них работала Ваша система безопасности, то придется править запросы всех необходимых отчетов!
жесть, работы много предстоит
Цитата:
Ну, или создавать свои фильтрованные вьюхи...
в смысле в базе данных создавать свои View аналогично FilteredAccount?
Старый 02.02.2009, 13:01   #25  
Артем 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
Меня не покидает ощущение, что вы искусственно создали себе работу. Про представления я необдуманно написал, если честно... Дело в том, что теперь есть конструктор отчетов доступный пользователям! И работает он именно с системными представлениями, так что подобные ухищрения уже не помогут. Напомните для чего вы занялись подобными ухищрениями?
p.s. Насколько я понимаю табличные представления заполняются Fetch запросом в методе Execute. Думаю a33ik меня поправит, если я не прав.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 02.02.2009, 13:26   #26  
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
Thumbs up
Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
p.s. Насколько я понимаю табличные представления заполняются Fetch запросом в методе Execute. Думаю a33ik меня поправит, если я не прав.
Править нечего. Всё так и есть.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 02.02.2009, 13:48   #27  
Bakai Madybaev is offline
Bakai Madybaev
Участник
 
201 / 16 (1) ++
Регистрация: 22.04.2008
Цитата:
Напомните для чего вы занялись подобными ухищрениями?
Цитата:
Хочу определить доступ к записи по определенному атрибуту сущности.
Думаю сделать так:
Создать Определенную роль "Роль1".
Написать Плагин на Pre Retrieve message, в котором буду по значению атрибута и наличию у пользователя "Роли1" возвращать/не возвращать данные.
В нашем случае Бизнес-партнер используется разными подразделениями.
Поле "тип отношения" определяет, является ли Бизнес-партнер Действующим клиентом или Потенциальным клиентом.
Действующие клиенты должны быть доступны для чтения ТОЛЬКО ограниченному списку подразделений.
Старый 02.02.2009, 16:31   #28  
Артем 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://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 02.02.2009, 16:46   #29  
Bakai Madybaev is offline
Bakai Madybaev
Участник
 
201 / 16 (1) ++
Регистрация: 22.04.2008
Цитата:
А чем вас Интересы не устраивают? Другой объект, другие права доступа... Так и надо было делать... По мере работы интересы преобразуются в Бизнес-партнеров с сохранением истории и пр. По мне так все просто...
У интересов нет функционала - Возможные сделки, Предложения, Обращения и т.д.

С потенциальным клиентом ведется работа по возможным сделкам, предложениям и т.д. Значит нам нужен Бизнес-партнер (Контакт пока отпадает)
- но Бизнес-партнер хранит записи о действующих клиентах, к которым доступ на чтение очень строгий.
- а к потенциальным клиентам, с которыми уже начали работу по продажам, нужен более широкий доступ.
Старый 02.02.2009, 18:18   #30  
Артем 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
Я думаю, что вам с заказчиком надо пересмотреть процессы. CRM как концепция - это в том числе единая клиентская база. Исходя из этого утверждения, доступ к этой информации должны иметь все сотрудники допущенные в систему, иначе не избежать дублирования! Потенциальные возможности бывают, в том числе, и с уже существующими клиентами. Суть CRM в том и заключается, чтобы менеджер который выходит на заказчика был в курсе тех операций, которые с ним выполнялись в прошлом. Мне совершенно не ясно, как вы добьетесь этого, не позволяя сотрудникам просматривать список Организаций, Контактов и Интересов.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
За это сообщение автора поблагодарили: Bakai Madybaev (1).
Старый 02.02.2009, 18:33   #31  
Артем 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
Типовая ситуация: Подразделение А продало клиенту 1 отличные гайки. Прошло время и подразделение Б выходит на того же клиента и снова начинает продавать ему гайки, так как не знает, что клиент их уже приобрел. Эту ситуацию разрулили: отдел Б связался с А, договорился больше так не делать, после чего сообщил C, что клиент нуждается в болтах. Теперь появился отдел C и зная про А и ссылаясь на Б впарил клиенту болты неподходящего диаметра. Клиент слой как собака, звонит в Б, ругается, а те и сделать ничего не могут - просто не знают кто что продавал! Проходит еще время и ничего об этом не знающий менеджер из А звонит клиенту и говорит: "Я помню, что вам очень понравили наши гайки, не хотите ли еще тонну?" Вопрос: как далеко пойдет менеджер из А, если клиент уже кторый месяц рассверливает гайки, чтобы они подходили к болтам?
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 04.02.2009, 12:34   #32  
Bakai Madybaev is offline
Bakai Madybaev
Участник
 
201 / 16 (1) ++
Регистрация: 22.04.2008
Артем, спасибо за совет.

А реализовал след. образом:

X++:
XmlDocument configDoc;
        public AccountRetrieveMultipleHandler(string unsecureConfig, string secureConfig)
        { 
               configDoc = new XmlDocument();
               configDoc.LoadXml(unsecureConfig);
        }

        #region IPlugin Members
        public void Execute(IPluginExecutionContext context)
        {
            if (context.Depth > 1)
                return;

            XmlDocument inDoc = new XmlDocument();
            inDoc.LoadXml((string)context.InputParameters.Properties["FetchXml"]);

            string enityName = inDoc.SelectSingleNode("fetch/entity/@name").InnerText;
            if (enityName == "account")
            {
                ICrmService serv = context.CreateCrmService(true);
                
                // 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 = configDoc.SelectSingleNode("PluginConfig/Entity/Filter/condition/@securityrole").InnerText;//"Системный администратор";
                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)
                {
                    XmlElement conditionElem;
                    XmlAttribute conditionAttr;
                    conditionElem = inDoc.CreateElement("condition");

                    conditionAttr =  inDoc.CreateAttribute("attribute");
                    conditionAttr.InnerText = configDoc.SelectSingleNode("PluginConfig/Entity/Filter/condition/@attribute").InnerText;//"customertypecode";
                    conditionElem.Attributes.Append(conditionAttr);

                    conditionAttr = inDoc.CreateAttribute("operator");
                    conditionAttr.InnerText = configDoc.SelectSingleNode("PluginConfig/Entity/Filter/condition/@operator").InnerText;//"ne";
                    conditionElem.Attributes.Append(conditionAttr);

                    conditionAttr = inDoc.CreateAttribute("value");
                    conditionAttr.InnerText = configDoc.SelectSingleNode("PluginConfig/Entity/Filter/condition/@value").InnerText;//"3";
                    conditionElem.Attributes.Append(conditionAttr);

                    inDoc.SelectSingleNode("fetch/entity/filter").AppendChild(conditionElem);

                    context.InputParameters.Properties["FetchXml"] = inDoc.OuterXml;
                }
            }
        }
        #endregion
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
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, время: 12:39.