AXForum  
Zurück   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 04.04.2008, 11:36   #1  
Lithium ist offline
Lithium
Участник
 
20 / 10 (1) +
Registriert seit: 17.07.2007
Выборка данных из нескольких сущностей, 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 };
}
он работает, но выбирает данные только из одно сущности. стоит только добавить в ColumnSet поле из incidentresolution - работать перестает.

Как произвести такую выборку??
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Microsoft Dynamics CRM Team Blog: Building Rich-Client Dashboards for Microsoft Dynamics CRM with Windows Presentation Foundation Blog bot Dynamics CRM: Blogs 1 31.03.2009 13:24
Мир CRM: Улучшение Dynamics CRM 4.0 производительности и безопасности данных под SQL Server 2008 Blog bot Dynamics CRM: Blogs 0 03.02.2009 02:07
Microsoft Dynamics CRM Team Blog: List Web Part for Microsoft Dynamics CRM 4.0 Deployment Scenarios Blog bot Dynamics CRM: Blogs 0 30.01.2009 22:05
Microsoft Dynamics CRM Team Blog: Microsoft Dynamics CRM 4.0 Bookshelf Blog bot Dynamics CRM: Blogs 1 22.01.2009 04:46
Microsoft Dynamics CRM Team Blog: Reports for CRM 4.0 using SQL Server 2008 and Report Builder 2.0 Blog bot Dynamics CRM: Blogs 0 11.11.2008 08:05

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 06:21 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.