Results for tag "fetch-xml"

CRM 2011 – Custom View – Filter auf N:M Relation

Folgendes Beispiel:

Ihr habt in eurem Projekt folgende Entitätshierarchie:

Adresse ( n:m ) Gebäude ( n: 1 ) Standort

Am Formular des Standorts soll der Benutzer nun zunächst in einem Lookup das entsprechende Gebäude auswählen können (kein Filter). Nach Auswahl des Gebäudes sollen nur noch jene Adressen ausgewählt werden können, welche eine Verknüpfung mit dem ausgewählten Gebäude haben. Vom Prinizp eine Funktionsweise wie bei einer dependend Dropdownlist.

Normalerweise greift man jetzt einfach zu einem „FetchXML“ und baut sich das Konstrukt entsprechend auf. Aber hier beginnts zu haken: Beim Einrichten des Filters merkt man schnell, dass sich eine N:M-Relation nicht, wie z.B. eine 1:1/1:n-Relation, an einem Fremdschlüssel „aufhängt“, es fehlt also das Filter-Attribut. Jetzt wird man im Internet relativ schnell fündig, dass man in solchen Fällen einfach eine „Linked-Entity“ in das Fetch-Xml einbauen kann/muss. Problem hierbei: die addCustomView-Methode erwartet eine Entität, keine Relation.

Die Lösung sieht nun wie folgt aus:

Zunächst baut man das Fetch-XML wie gewohnt auf und lässt es mittels „Linked Entity“ auf die Relation verweisen. Innerhalb der Linked Entity, welche ja eig. keine Entität sondern eine Relation ist, hat man Zugriff auf die beiden Primary-Key-Felder der Relation. In meinem Fall „Adressid“ und „Gebaeudeid“. Dort lässt sich dann der Filter entsprechend einrichten.

Das fertige Fetch-XML sieht nun in meinem Fall wie folgt aus:

[sourcecode language=“xml“]
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
<entity name="<strong>new_address</strong>">
<attribute name="new_name" />
<attribute name="new_line1" />
<attribute name="new_city" />
<attribute name="new_stateorprovince" />
<link-entity name="<strong>relationname</strong>" from="primarykey" to="primarykey" >
<all-attributes/>
<filter type="and">
<condition attribute="primarykey" operator="eq" value="{1BF2077D-B6F0-E011-8481-005056A20041}" />
</filter>
</link-entity>
<order attribute="createdon" decending="true" />
</entity>
</fetch>
[/sourcecode]

Happy programming!
Chris