Fetchxml для получения контактов с активными возможностями, имеющими текущего пользователя в качестве владельца CRM 2013

Цель: создать представление, которое может отображать все контакты, принадлежащие текущему пользователю, и любые контакты со связанной возможностью, принадлежащие текущему пользователю.

Проблема: я не очень хорошо разбираюсь в fetchxml или linkentities даже после просмотра того, что я могу найти о них в Google. Когда я пытаюсь создать представление с помощью моего оператора fetch, оно ничего не возвращает, поэтому я предполагаю, что построил его неправильно.

Вот заявление, которое я сделал до сих пор:

<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='true'>
                    <entity name='contact'>
                      //big list of attributes
                      <order attribute='fullname' descending='false' />
                      <link-entity name='opportunity' from='customerid' to='contactid' alias='aa'>
                       <filter type='and'>
                         <condition attribute='ownerid' operator='eq-userid' />
                       </filter>
                      </link-entity>
                      <filter type='or'>
                        <condition attribute='ownerid' operator='eq-userid' />
                      </filter>
                    </entity>
                </fetch>

Любые советы будут оценены, спасибо!


person Dave Hoyt    schedule 21.05.2014    source источник
comment
Вы сразу после запроса fetchXml?   -  person Scorpion    schedule 21.05.2014
comment
Совершенно новый, или узнать, что может быть не так с моим. Так или иначе.   -  person Dave Hoyt    schedule 21.05.2014


Ответы (4)


Вы проверили CRM 2011 и CRM 2013. С CRM 2011 это невозможно. С CRM 2013 вы можете это сделать!

<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='true'>
<entity name='contact'>
    <attribute name='fullname' />
    <order attribute='fullname' descending='false' />
    <link-entity name='opportunity' from='customerid' to='contactid' alias='aa' link-type='outer'>
        <attribute name='name' />
    </link-entity>
    <filter type='or'>
        <condition attribute='ownerid' operator='eq-userid' />
        <condition entityname='aa' attribute='ownerid' operator='eq-userid' />
    </filter>
</entity>
</fetch>

Вы заметите, что псевдоним указан в фильтре, и вы должны использовать внешнее соединение.

Я добавил сообщение в блоге, чтобы дать небольшое представление всем, кто заинтересован: http://paul-way.com/crm-2013-fetchxml-improvements/

person Paul Way    schedule 22.05.2014
comment
Вы пробовали свой код до того, как предложили его? Я попытался, и у меня есть неверный XML. исключение. - person Andrew Butenko; 22.05.2014
comment
Да, у меня отлично работает на CRM 2013 онлайн. Это недействительно в 2011 году; где ты его запускаешь? - person Paul Way; 22.05.2014
comment
Пробовал на одном из экземпляров CRM Online. - person Andrew Butenko; 22.05.2014
comment
Успешно работает на 6.0.2.50. На какой версии вашего онлайн-экземпляра вы тестировали? - person Paul Way; 22.05.2014
comment
6.1.0.575 - и ядро, и БД. - person Andrew Butenko; 22.05.2014
comment
Хорошо, попробуйте еще раз. Оператор закрытия выборки не отображался. - person Paul Way; 22.05.2014
comment
Теперь это работает. Действительно интересная функция, и она может быть полезной. Спасибо! - person Andrew Butenko; 22.05.2014
comment
Только что увидел это дополнение к посту. Не могу дождаться, чтобы попасть в офис позже и попробовать! Спасибо за предложение, Пол, я отмечу ответ, как только подтвержу. - person Dave Hoyt; 23.05.2014

К сожалению, вы не сможете построить этот запрос с помощью FetchXml. Обходной путь — создать отчет и встроить его в CRM.

person Andrew Butenko    schedule 21.05.2014

<fetch distinct="false" no-lock="false" mapping="logical">
  <entity name="contact">
    <attribute name="fullname" />
    <filter type="and">
      <filter type="and">
        <condition attribute="ownerid" operator="eq" value="{00000000-0000-0000-0000-000000000000}" />
        <filter type="and">
          <condition attribute="statecode" operator="eq" value="0" />
          <condition attribute="statecode" operator="eq" value="0" />
        </filter>
      </filter>
    </filter>
    <link-entity name="opportunity" to="contactid" from="contactid" link-type="inner" alias="o_0" />
  </entity>
</fetch>

Замените 00000000-0000-0000-0000-000000000000 текущим идентификатором пользователя.

person Scorpion    schedule 22.05.2014

Я не специалист по FetchXML, но думаю, что этот запрос невозможен.

Это объяснение CRM:

условия или группы связанных объектов не могут быть сгруппированы с условиями или группами родительских объектов

введите здесь описание изображения

person Guido Preite    schedule 21.05.2014
comment
После еще нескольких поисков и экспериментов я в основном пришел к такому выводу. Кажется, что это в значительной степени сводится к тому, что ссылочные объекты функционируют как фильтр «и». И мне нужно, чтобы он функционировал как фильтр «или». Ну хорошо. - person Dave Hoyt; 21.05.2014