Добрый день.
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);
Получается, что каждый из фильтров по отдельности отрабатывает, а вместе они дают пустоту...
Буду рад любым советам, которые помогут понять, что не так я делаю.