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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.12.2019, 17:06   #1  
Дмитрий А.А. is offline
Дмитрий А.А.
Участник
Аватар для Дмитрий А.А.
 
173 / 19 (1) ++
Регистрация: 24.07.2015
Адрес: СПб
Работа с QueryExpression
Добрый день.
Dynamics 365.
Столкнулся со следующей проблемой, и не могу понять, как правильно сделать запрос:

Имеется 3 сущности: Отношения договора(клиент + договор + неинтересные реквизиты), Договор (проект + неинтересные реквизиты), Проект
На входе - идентификатор клиента + идентификатор проекта
Требуется найти, если имеются, Договора клиента по данному проекту.

Как я пробовал делать:
через первый QueryExpression получаю список Отношений договоров по клиенту:
X++:
QueryExpression queryRoles = new QueryExpression
                            {
                                EntityName = "new_customer_roles",
                                ColumnSet = new ColumnSet(true),
                                Criteria = new Microsoft.Xrm.Sdk.Query.FilterExpression()
                            };
                            queryRoles.Criteria.AddCondition("new_customer", ConditionOperator.Equal, value);
                            EntityCollection entityListRoles = _orgService.RetrieveMultiple(queryRoles);
в этом моменте все ок, отношения клиентов к договорам достаются без проблем.

затем я пытаюсь получить список Договоров, выбирая Договора по Проектам и пытаясь наложить фильтром найденный список отношений:

X++:
 QueryExpression query = new QueryExpression
                                {
                                    EntityName = "new_ddu",
                                    ColumnSet = new ColumnSet(true),
                                    Criteria = new Microsoft.Xrm.Sdk.Query.FilterExpression()
                                };
                                query.Criteria.AddCondition("new_object", ConditionOperator.Equal, Guid.Parse(flag));
                                //FilterExpression mainFilter = query.Criteria.AddFilter(LogicalOperator.And);
                                //mainFilter.AddCondition("new_object", ConditionOperator.Equal, Guid.Parse(flag));
                                FilterExpression childFilter = query.Criteria.AddFilter(LogicalOperator.Or);
                                //FilterExpression childFilter = mainFilter.AddFilter(LogicalOperator.Or);
                                for (int ind = 0; ind < entityListRoles.Entities.Count; ind++)
                                {
                                    childFilter.AddCondition("new_dduid", ConditionOperator.Equal, ((EntityReference)entityListRoles[ind].Attributes["new_ddu"]).Id);
                                }
                                EntityCollection entityList = _orgService.RetrieveMultiple(query);
Получается, что каждый из фильтров по отдельности отрабатывает, а вместе они дают пустоту...
Буду рад любым советам, которые помогут понять, что не так я делаю.
Старый 11.12.2019, 18:49   #2  
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
Если у вас настолько нетривиальный фильтр может проще построить FetchXml через Advanced Find или XrmToolbox/FetchXmlBuilder и использовать FetchExpression чтобы получить нужные вам данные?

И зачем вам 2 запроса? Все можно сделать через один используя LinkedEntities если уже пользуетесь QueryExpression.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: Дмитрий А.А. (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Маркетинговые списки. Неправильная работа Taker1796 Dynamics CRM: Функционал 9 15.09.2012 22:38
Работа MS Dyn CRM только в IE - как решаете? alou Dynamics CRM: Прочие вопросы 4 20.07.2012 13:23
Все о Microsoft Dynamics CRM: Работа с интересами в Microsoft Dynamics CRM 2011 Blog bot Dynamics CRM: Blogs 0 09.06.2012 00:11
Некорректная работа плагина в Microsoft Dynamics CRM 2011 Online Omalinka Dynamics CRM: Разработка 1 25.02.2011 16:34
Работа с едиными данными DiMoon Dynamics CRM: Администрирование 8 20.03.2008 12:28

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

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

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