ОК, используйте приведенный ниже запрос, чтобы получить только учетные записи и связанные с ними контакты.Я мог бы восстановить учетные записи и связанные с ними контакты.Теперь возьмите эти учетные записи и их ID и используйте 2-й запрос для получения заметок (аннотаций). То же самое вы сделаете для Notes.
<fetch>
<entity name="account" >
<attribute name="name" />
<link-entity name="contact" from="parentcustomerid" to="accountid" link-type="inner" >
<attribute name="fullname" />
</link-entity>
</entity>
</fetch>
Запрос на получение заметок:
<fetch>
<entity name="annotation" >
<attribute name="filename" />
<attribute name="documentbody" />
<attribute name="isdocument" />
<link-entity name="account" from="accountid" to="objectid" link-type="inner" >
<filter type="and" >
<condition attribute="accountid" operator="eq" value="AccountGuid" />
</filter>
</link-entity>
</entity>
</fetch>
Пример сКод C #
string fetch = @"
<fetch>
<entity name='account' >
<attribute name='name' />
<link-entity name='contact' from='parentcustomerid' to='accountid' link-type='inner' alias='Contact' >
<attribute name='fullname' alias = 'Contact.Fullname' />
</link-entity>
</entity>
</fetch> ";
EntityCollection Coll = CrmConn.RetrieveMultiple(new FetchExpression(fetch));
foreach (Entity acunt in Coll.Entities)
{
Console.WriteLine("Name of Account: " + acunt.GetAttributeValue<string>("name"));
Console.WriteLine("Name of Contact: " + acunt.GetAttributeValue<AliasedValue>("Contact.Fullname").Value);
}