Microsoft Dynamics CRM 2011 | XrmSvcToolkit–fetch Funktion

In einer kleinen Serie möchte ich ein paar Einsatzmöglichkeiten des XrmSvcToolkit Projektes auf codeplex.com vorstellen, die noch nicht dokumentiert sind. Mit einer JScript Bibliothek lassen sich viele Prozesse auch ohne ein Plug-In direkt aus der GUI anstoßen. Kombiniert man dies mit den Plug-In Möglichkeiten und den Prozessen, entstehen binnen kürzester Zeit xRM Lösungen.

Beginnen möchte ich mit der fetch Funktion. Dies ist eine SOAP Funktion und benötigt zunächst einmal eine FetchXML Definition.

Diese sieht in etwa so aus:

var fetchXml =

„<fetch version=’1.0′ output-format=’xml-platform‘ mapping=’logical‘ distinct=’false‘>“+
„<entity name=’contact‘>“ +
„<attribute name=’firstname‘ />“ +

Wie kommt Ihr am schnellsten an die FetchXML Definition?

Ihr nutzt hierzu idealerweise die Erweiterte Suche, stellt Eure Filter zusammen und überprüft auch gleich die Ergebnisse Eurer Suche. Seid Ihr zufrieden nutzt Ihr die Download-Möglichkeit der FetchXML Definition. Diese müsst Ihr nur noch mit einem Editor Eurer Wahl aufbereiten.

Die fetch Funktion aus dem XrmSvcToolkit nutzt Ihr auf die folgende Art und Weise:

XrmSvcToolkit.fetch({
    fetchXml: fetchXml,
    async: false,
    successCallback: function (result) {
    // your code goes here
    },
    errorCallback: function (error) {
    throw error;
    }
});

Wenn Ihr mit dem Ergebnis Eurer Suche arbeiten wollt, dann könnt Ihr dies im Bereich “//your code goes here”. Doch hier stellt sich die Frage, wie?

Zunächst solltet Ihr Abfragen, ob Ihr ein Ergebnis zurückgeliefert bekommen habt, denn Ihr bekommt nicht etwa einen Fehler zurückgeliefert, wenn Euer Ergebnis leer ist. Nein, auch in diesem Fall wird ein Ergebnis (null) zurückgeliefert.

Doch mit einer einfachen Abfrage, könnt Ihr dies abfangen:

if (result.entities.length == 0 ) {
    // Your code goes here
    } else { }

Ihr fragt einfach die Länge des Ergebnisses ab.

Nun stellt sich noch die Frage, wie Ihr an die Ergebnisse herankommt, um damit weiter arbeiten zu können.

var lastName = result.entities[0].firstname

 

Ihr benötigt hierzu wieder die FetchXML Definition. Genauer gesagt die Attribute, die Ihr abgefragt habt. In meinem Beispiel habe ich “firstname” als Attribut abgefragt und komme mit result.entities[0].firstname an das zurückgelieferte Ergebnis. Dies gilt für Textfelder. Was jedoch, wenn Ihr Picklistenwerte benötigt?

Hier sieht der Code etwas anders aus:

var prioCode = result.entities[0].prioritycode.Value

 

Auch hier rufen wir das Attribut ab “prioritycode”, fügen aber noch “.Value” hinzu und bekommen den Wert der Picklistenauswahl zurück.

Da das CRM System intern mit den Werten arbeitet, solltet Ihr bei Picklisten immer mit den Werten arbeiten, wenn Ihr z.B. Werte von einer Pickliste in eine andere Pickliste übertragen wollt. Da stellt sich noch eine kleine Herausforderung: Die eigenen Picklisten haben als Präfix einen Zahlencode vorangestellt, während die Standard Picklisten dies nicht besitzen.

Um beim Beispiel zu bleiben – für den Prioritycode gilt im Standard:

0 = Niedrig

1 = Normal

2 = Hoch

In einer von Euch selbst erstellten Pickliste heißt es vielleicht:

241060 = Niedrig

241061 = Normal

241062 = Hoch

Um die Feldwerte zu vergleichen hilft Euch JScript, um die ersten Ziffern abzuschneiden und nur die letzten Ziffern zu vergleichen. Ihr müsst lediglich Euer Präfix kennen und dies “abschneiden”.

Soweit mein erster Teil. Morgen bringe ich Euch eine weitere Funktion des XrmSvcToolkits näher.

Viel Spaß bei der Umsetzung Eurer Anforderungen.

 

Technorati Tags:

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s