Domanda

E 'possibile scrivere una singola query FetchXML che ottiene un'entità root ed i bambini più? Tutto quello che ho potuto fare è 1: 1.

È stato utile?

Soluzione

No, non è possibile.

Altri suggerimenti

James Wood è corretta . Fetch XML è così ricorsiva utilizzando l'entità di collegamento è possibile ottenere le informazioni desiderate.

Per esempio, il seguente è valido:

<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>

Se la tua domanda è davvero "E 'possibile scrivere una singola query FetchXML che ottiene un SINGLE entità root ed i bambini più" allora la risposta è purtroppo no. Tuttavia, se si è in grado di gestire i duplicati di dati principale (ad esempio, utilizzando la funzionalità di raggruppamento di un report SSRS) allora ciò che si richiede è del tutto possibile

Se non ho capito male la domanda a questo è molto possibile.

Così, per esempio si desidera trovare tutti i contatti relativi a un determinato account. Questo è rappresentata in Crm dalla Capogruppo cliente Ricerca sul contatto per l'account.

entrare descrizione dell'immagine qui

<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>

che vi dà un set di risultati che assomiglia a questo:

<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>

Sono felice di segnalare che è possibile. Ho una soluzione che ha funzionato bene per me.

L'unica avvertenza è che se si dispone di account figlio più si ottengono più risultati per il genitore. Ad esempio:

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

Questo significa che si dovrebbe quindi avere a correre i risultati attraverso una funzione di ordinamento, per ottenere o tutti i bambini di età inferiore genitori in un array multidimensionale, o di ottenere tutti i conti come voci univoche in una matrice piatta.

Inoltre, questo va solo a un livello inferiore. Se la gerarchia è multi-livello, avrebbe bisogno di essere modificato questo codice.

<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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top