Microsoft Dynamics CRM 2011 | XrmSvcToolkit–retrieve Funktion

Gestern habe ich Euch im 1. Teil die fetch Funktion näher gebracht, heute möchte ich Euch die Besonderheiten der retrieve Funktion aus dem Toolkit vorstellen.

Dies ist eine REST Funktion, was uns zur ersten Besonderheit bringt:

Die Angabe des Entitätsnamens und der Attribute erfolgt gemäß Schemanamen.

XrmSvcToolkit.retrieve({
    entityName: „CustomerAddress“,
    id: sLookupValue,
    select: [„ParentId“, „Name“, „Line1“, „Line2“, „Line3“, „City“, „Country“, „County“, „Latitude“, „Longitude“, „PostalCode“, „PostOfficeBox“, „StateOrProvince“, „CustomerAddressId“, „AddressNumber“, „mscrm_district“],
    expand: [„“],
    async: false,
    successCallback: function (result) {
    //your code goes here
    },
    errorCallback: function (error) {
    throw error;
    }
});

Ihr seht also, dass der Entitätsnamen z.B. “CustomerAddress” heißen muss und als Attribute im select ebenfalls die Schemanamen verwendet werden. Achtet dabei auf den Unterschied von Standardattributen zu Euren eigenen Attributen.

Im Gegensatz zur fetch Funktion, übergeben wir hier eine Id (“sLookupValue” in meinem Beispiel). Hier müsst Ihr natürlich nicht mit einer Variablen arbeiten, sondern könnt auch direkt anstelle der Variable die Id übergeben. Beispielsweise mit Xrm.Page.data.entity.getId().

Nehmt Ihr hingegen ein Lookup-Feld auf Eurer Form, so achtet darauf, dass Ihr hier nur die Id benötigt.

var lookup = Xrm.Page.getAttribute(“yourlookup”).getValue();

var sLookupValue = lookup[0].id;

 

Diese Funktion hat jedoch noch ein paar weitere Besonderheiten. Richten wir unsere Aufmerksamkeit auf “expand:”. Was kann man hiermit erreichen?

Wir können hier eine in Relation stehende Beziehung auflösen und jene weiteren Attribute ebenfalls abfragen. Ein Beispiel:

XrmSvcToolkit.retrieve({
    entityName: „Contact“,
    id: contactId,
    select: [„ContactId“, „FirstName“, „MiddleName“, „LastName“, „GenderCode“, „FamilyStatusCode“, „CreditLimit“, „BirthDate“, „DoNotEMail“, „DoNotPhone“],
    expand: [„contact_owning_user“],
    async: false,
    successCallback: function (result) {
    //your code goes here
    },
    errorCallback: function (error) {
        throw error;
    }
});

In diesem Beispiel lösen wir die Relation [„contact_owning_user“] auf und können auch auf diese Attribute zugreifen.

Stellen sich die Fragen, wie kommen wir an die Attribute heran und können hiermit weitere Aktionen durchführen? Und wie gehen wir mit leeren Ergebnissen um?

In diesem Fall erhalten wir exakt ein Ergebnis zurückgeliefert, weshalb wir mit result.Attributsname an unser Ergebnis gelangen.

Um leere Ergebnisse zuvor abzufangen, sollten wir mit:

if (!IsNull(result.FirstName)) {
    var firstName = (result.FirstName);
    }

Wollen wir hingegen an die Expand Attribute herankommen, so stellen wir den Relationsnamen vorweg (result.contact_owning_user.FullName).

Was jedoch, wenn Ihr Lookup-Felder abgefragt habt?

Mit

result.PreferredServiceId.Id

result.PreferredServiceId.Name

kommt Ihr an die Id bzw. den Namen des Lookup-Feldes.

Und bei Picklisten?

Hier gilt, wie auch schon bei der fetch Funktion, mit .Value kommt Ihr an den Picklistenwert.

Stellt sich noch die Frage, async = false oder true?

Hier müsst Ihr entscheiden, ob Ihr das Ergebnis unmittelbar benötigt (async = false), oder ob Ihr die Verarbeitung auch im Hintergrund durchführen könnt (z.B. bei createRecord möglich, wenn Ihr die Id des erzeugten Datensatzes nicht sofort benötigt).

Soweit zu dieser Funktion. Im nächsten Teil stelle ich Euch erneut eine Funktion aus dem Toolkit vor.

Technorati Tags:

2 Gedanken zu “Microsoft Dynamics CRM 2011 | XrmSvcToolkit–retrieve Funktion

  1. Vielen Dank für den Hinweis, dass man bei Picklisten/Optionslisten mit .Value an den numerischen Picklistenwert gelange. Gibt es beim XrmSvcToolkit auch eine Möglichkeit, an den Text des Picklistenwertes zu gelangen? Freue mich auf eine Rückmeldung

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