|
11.12.2019, 17:06 | #1 |
Участник
|
Работа с 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 |
Чайный пьяница
|
Если у вас настолько нетривиальный фильтр может проще построить FetchXml через Advanced Find или XrmToolbox/FetchXmlBuilder и использовать FetchExpression чтобы получить нужные вам данные?
И зачем вам 2 запроса? Все можно сделать через один используя LinkedEntities если уже пользуетесь QueryExpression.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
За это сообщение автора поблагодарили: Дмитрий А.А. (1). |