04.04.2008, 11:36 | #1 |
Участник
|
Выборка данных из нескольких сущностей, MS CRM 3
Пишу веб-службу, которая должна возвращать для заданной организации список ее сервисных обращений (дата создания, заголовок, код, текущий статус), и в случае если обращение разрешилось - кол-во затраченного времени, описание решения проблемы, имя инженера, кто занимался обращением.
Проблема в том,что поля которые нужно выбрать, раскиданы по разным сущностям (incident и incidentresolution). Пишу следующий код: X++: Guid GUID = newGuid(p_guid); QueryExpression query = newQueryExpression(); query.EntityName = EntityName.incident.ToString(); ColumnSet cols = newColumnSet(); cols.Attributes = newstring[] { "ticketnumber", "title","createdon","statecode" }; OrderExpression order = newOrderExpression(); order.OrderType = OrderType.Descending; order.AttributeName = "createdon"; query.ColumnSet = cols; query.Orders = newOrderExpression[] { order }; query.Criteria = newFilterExpression(); ConditionExpression exp = newConditionExpression(); exp.AttributeName = "customerid"; exp.Operator = ConditionOperator.Equal; exp.Values = newobject[] { GUID.ToString() }; query.Criteria.Conditions = newConditionExpression[] { exp }; LinkEntity le = newLinkEntity(); le.LinkFromEntityName = EntityName.incident.ToString(); le.LinkFromAttributeName = "incidentid"; le.LinkToEntityName = EntityName.incidentresolution.ToString(); le.LinkToAttributeName = "incidentid"; le.JoinOperator = JoinOperator.LeftOuter; query.LinkEntities = newLinkEntity[] { le };/**/ BusinessEntityCollection returned = srv.RetrieveMultiple(query); if (returned.BusinessEntities.Length > 0) { Incident[] p = newIncident[returned.BusinessEntities.Length]; int i = 0; foreach (BusinessEntity be in returned.BusinessEntities) { incident inc = (incident)be; p[i].Code = inc.ticketnumber; p[i].Date = inc.createdon.date; if (inc.title != null) p[i].Title = inc.title; else p[i].Title = "отсутствует"; if (inc.statecode.ToString() != null) p[i].Status = inc.statecode.Value.ToString(); else p[i].Status = "не определен"; i++; } return p; } else { Incident ic; ic.Code = ""; ic.Date = ""; ic.Status = ""; ic.Title = "нет обращений"; returnnewIncident[] { ic }; } Как произвести такую выборку?? |
|
|
|