2017-09-11 1 views
2

J'ai une entité personnalisée appelée inscription de cours qui a une recherche sur l'entité de contact.
Je veux voir les contacts qui ont une inscription de cours active.Comment implémenter FetchXML personnalisé avec agrégat en tant que vue système dans Dynamics365

Je ne crois pas que cela puisse être fait à partir de l'entité de contact, donc je dois créer une vue des inscriptions de cours actives qui n'affiche que les champs de contact. Cela me donnera des contacts en double si ils ont plus d'une inscription de cours que je ne veux pas.

Pour éviter cela, j'ai essayé de créer une requête globale en FetchXML:

<fetch version="1.0" aggregate="true" > 
    <entity name="flr_courseenrolment" > 
    <link-entity name="contact" from="contactid" to="flr_contact" alias="a_69c0f6b80d94e711812ae0071b66a541" > 
     <attribute name="emailaddress1" alias="contactemailaddress1" groupby="true" /> 
     <attribute name="fullname" alias="contactfullname" groupby="true" /> 
     <filter type="and" > 
     <condition attribute="statecode" operator="eq" value="0" /> 
     <condition attribute="flr_islearner" operator="eq" value="1" /> 
     <condition attribute="flr_advisor" operator="eq" uiname="Test User" uitype="systemuser" value="{28C0D53B-5E19-E611-8106-C5346CC262D1}" /> 
     </filter> 
    </link-entity> 
    <attribute name="flr_courseenrolmentid" alias="aggregateflr_enrolmentid" groupby="true" /> 
    </entity> 
</fetch> 

Cette requête fonctionne dans la boîte à outils XRM FetchXML Tester. Mais ne fonctionnera pas lorsque je l'importerai dans CRM. Je l'importe dans CRM en exportant une solution contenant une vue qui contient les mêmes champs; et en remplaçant le FetchXML qui a été généré par le système par le FetchXML que j'ai créé, et en le réimportant.

Je reçois une erreur CRM générique lorsque j'essaie d'afficher cette vue après l'avoir de nouveau importée, indiquant que "Les colonnes doivent toujours être spécifiées dans Retrieve Multiple".

CRM Generic Error Screenshot

<OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/xrm/2011/Contracts"> 
    <ActivityId>b3b1d783-a8be-4454-9ed5-b71c42053299</ActivityId> 
    <ErrorCode>-2147220970</ErrorCode> 
    <ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" /> 
    <Message>System.Xml.XmlException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #2955ADDE</Message> 
    <Timestamp>2017-09-11T03:22:55.50674Z</Timestamp> 
    <ExceptionRetriable>false</ExceptionRetriable> 
    <ExceptionSource i:nil="true" /> 
    <InnerFault> 
    <ActivityId>b3b1d783-a8be-4454-9ed5-b71c42053299</ActivityId> 
    <ErrorCode>-2147220970</ErrorCode> 
    <ErrorDetails xmlns:d3p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" /> 
    <Message>Columns should always be specified on RetrieveMultiple.</Message> 
    <Timestamp>2017-09-11T03:22:55.50674Z</Timestamp> 
    <ExceptionRetriable>false</ExceptionRetriable> 
    <ExceptionSource i:nil="true" /> 
    <InnerFault> 
     <ActivityId>b3b1d783-a8be-4454-9ed5-b71c42053299</ActivityId> 
     <ErrorCode>-2147220970</ErrorCode> 
     <ErrorDetails xmlns:d4p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" /> 
     <Message>System.InvalidOperationException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #F043AB2E</Message> 
     <Timestamp>2017-09-11T03:22:55.50674Z</Timestamp> 
     <ExceptionRetriable>false</ExceptionRetriable> 
     <ExceptionSource i:nil="true" /> 
     <InnerFault i:nil="true" /> 
     <OriginalException i:nil="true" /> 
     <TraceText i:nil="true" /> 
    </InnerFault> 
    <OriginalException i:nil="true" /> 
    <TraceText i:nil="true" /> 
    </InnerFault> 
    <OriginalException i:nil="true" /> 
    <TraceText i:nil="true" /> 
</OrganizationServiceFault> 

J'ai le sentiment que ce soit:

  • L'alias sur la flr_courseenrolmentid est à l'origine en vue de briser
  • agrégat/groupby est pas pris en charge du tout dans les vues CRM
  • J'ai besoin de personnaliser le LayoutXML d'une manière ou d'une autre ainsi que le FetchXML

Est-ce que ce que je veux réaliser est possible? Existe-t-il un moyen d'afficher ce FetchXML dans une vue de CRM, ou existe-t-il un autre moyen d'obtenir la vue dont j'ai besoin?

Répondre

2

Créez la vue sous Contact. Sous forme de conditions, sélectionnez l'entité associée "Inscription à un cours (Contact)" (j'applique le nom ici) et, comme conditions, "Contact contient des données" et "Statut égal à actif".

Cela revient à récupérer tous les comptes ayant des contacts actifs.

+0

Excellent, je ne pensais pas qu'il serait possible de le faire de tous les côtés de la relation, cela a fonctionné exactement comme prévu. – madbrendon

1

Vous ne pouvez malheureusement pas utiliser les requêtes agrégées dans les vues. Il serait probablement utile d'ajouter distinct="true" à l'élément d'extraction et de ne pas utiliser d'agrégat.

moyen de tester Easiest vos différentes options est d'utiliser le plug-in FetchXML Builder dans XrmToolBox, de cela, vous pouvez ouvrir la vue que vous souhaitez modifier, modifier la requête, puis enregistrez-le revenir à CRM. Aucune importation de solution ou édition manuelle de customizations.xml nécessaire.