Question

Est-il possible d'écrire une seule requête FetchXML qui obtient une entité racine et plusieurs enfants? Tout ce que je suis en mesure de faire est de 1: 1.

Était-ce utile?

La solution

Non, il est impossible.

Autres conseils

James Wood est correct . XML est si Fetch récursive en utilisant l'entité lien que vous pouvez obtenir les informations que vous voulez.

Par exemple, ce qui suit est valide:

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true">
  <entity name="account">
    <attribute name="name" />
    <attribute name="primarycontactid" />
    <attribute name="telephone1" />
    <attribute name="accountid" />
    <order attribute="name" descending="false" />
    <link-entity name="contact" from="parentcustomerid" to="accountid" alias="aj">
        <attribute name="firstname" />
        <attribute name="lastname" />
        <attribute name="telephone1" />
        <link-entity name="businessunit" from="businessunitid" to="owningbusinessunit" alias="ak">
            <attribute name="name" />
            <attribute name="address1_line1" />
            <attribute name="address1_line2" />
            <attribute name="address1_line3" />
            <filter type="and">
              <condition attribute="name" operator="not-null" />
            </filter>
        </link-entity>
    </link-entity>
  </entity>
</fetch>

Si votre question est vraiment « Est-il possible d'écrire une seule requête FetchXML qui obtient un UNIQUE entité racine et plusieurs enfants » alors la réponse est malheureusement non. Toutefois, si vous êtes capable de gérer les doublons de données racine (par exemple en utilisant la fonctionnalité d'un rapport SSRS) Regroupement alors ce que vous avez besoin est tout à fait possible

À moins que je l'ai mal compris la question ce qui est très possible.

Ainsi, par exemple, vous voulez trouver tous les contacts liés à un compte donné. Ceci est représenté en Crm par le Client parent Recherche sur le contact au compte.

entrer image description ici

<fetch mapping="logical" count="100" version="1.0">
    <entity name="account">
        <attribute name="name" />
        <link-entity name="contact" from="parentcustomerid" to="accountid">
            <attribute name="fullname" />
        </link-entity>
    </entity>
</fetch>

Ce qui vous donne un jeu de résultats qui ressemble à ceci:

<resultset morerecords="0" paging-cookie="&lt;cookie page=&quot;1&quot;&gt;&lt;accountid last=&quot;{E704FAD6-2D4B-E111-9FED-00155D828444}&quot; first=&quot;{AD912122-6B3C-E111-9B37-00155D828444}&quot; /&gt;&lt;/cookie&gt;">
    <result>
        <name>RGD Mining Inc</name>
        <accountid>{E704FAD6-2D4B-E111-9FED-00155D828444}</accountid>
        <accountid.fullname>Bill Miner</accountid.fullname>
    </result>
    <result>
        <name>RGD Mining Inc</name>
        <accountid>{E704FAD6-2D4B-E111-9FED-00155D828444}</accountid>
        <accountid.fullname>Green</accountid.fullname>
    </result>
</resultset>

Je suis heureux d'annoncer qu'il est possible. J'ai une solution qui a bien fonctionné pour moi.

La seule réserve est que si vous avez plusieurs enfants, vous obtiendrez des comptes multiples résultats pour le parent. Par exemple:

parent 1: child 1
parent 2: child 1
parent 2: child 2

Cela signifie que vous auriez alors à exécuter les résultats grâce à une fonction de tri, pour obtenir soit tous les enfants de moins de parents dans un tableau à plusieurs dimensions, ou d'obtenir tous les comptes sous forme d'entrées uniques dans un tableau plat.

En outre, cela ne va un niveau plus bas. Si la hiérarchie est à plusieurs niveaux, ce code doit être modifié.

<fetch distinct="false" mapping="logical"> 
   <entity name="account">     
        <attribute name="name" />
        <link-entity name="account"  alias="childaccount" to="accountid" from="parentaccountid"  link-type="outer">
            <attribute name="name" alias="childname" />
        </link-entity>
    </entity>           
</fetch>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top