Das CRM-2013 SDK stellt fest, dass jQuery in Form Skripte und Band-Befehle wird nicht empfohlen. Wie rufe ich (oder erstellen, zu aktualisieren, zu löschen) Attributwerte für einen verknüpften Datensatz mit Hilfe von JavaScript? Es stellt sich heraus, dass das XMLHttpRequest-Objekt zu manipulieren, Ajax und den OData-Endpunkt ist der Schlüssel.
Darüber hinaus werde ich den Einsatz von mehreren neuen XRM Methoden, einschließlich der "Save", "Alertdialog" und "getClientUrl" Methode zu machen. Also, hier gehen wir!
In einem früheren Beitrag habe ich erläutert. In diesem Beitrag werde ich mehrere xRM Methoden aus dem CRM 2013 SDK (Version 6.0.2 zum Zeitpunkt des Schreibens) verwenden unter:
Lassen Sie uns ein Beispiel an, wo die oben genannten Methoden von Nutzen sein könnten.
Angenommen, Sie haben eine Anforderung wie dieses:
In Wirklichkeit sollten die Anforderungen wahrscheinlich ein bisschen mehr beteiligt sein. Zum Beispiel, wenn das Adressfeld des Mutter Kunde ist leer, und der Benutzer antwortet, dass es in den aktuellen Kontakt kopiert werden soll, dann wird dies eventuell bereits vorhandene Adresse zu löschen. Um jedoch die Präsentation hier zu vereinfachen, halten wir uns an die oben genannten Anforderungen.
Zum Beispiel können die beiden durch die oben beschriebenen Felder sind die "Parent Kunde" und "Address" (composite) Felder:
Wie würde man gehen über diese Forderung der Bewältigung? Es gibt viele Möglichkeiten, wie Sie dies tun können. Z. B., sollten Sie einen Dialog der Einrichtung um den Benutzer zu fragen, ob er die Adressinformationen zu kopieren will. Wenn ja, treten ein Kind Workflow ab, dies zu tun, oder verwenden Sie eine Kombination aus JavaScript und Backend-Plugin-Code.
Für den Zweck dieser Stelle werde ich jedoch Ajax verwenden, um mit dem XMLHttpRequest-Objekt in JavaScript zu arbeiten:
Die "OnChange" Ereignis der "Eltern Kunde" Feld des Kontakts löst eine JavaScript-Methode, die Folgendes bewirkt:
Sie können Schritt (4) in mindestens zwei verschiedene Arten in der Tat mit Ajax: mit einem OData-Endpunkt oder einen SOAP-Endpunkt (die wunderbare neue detaillierte siehe Abschnitt "Verwenden Sie Web-Service-Daten in Web-Ressourcen - OData und Moderne App SOAP-Endpunkt" im CRM 2013 SDK (Version 6.0.2 zum Zeitpunkt des Schreibens), wenn Sie nicht wissen, was ich rede.
Wie ich OData in diesem Beitrag bin mit (daher der Titel, Leute!), Das erste, was ich testen, ist die OrganizationData Web-Service in CRM 2013 ein bestimmtes Konto Datensatz über seine GUID abzurufen. Auch hier ist das CRM 2013 SDK Ihr Freund, wenn Sie nicht wissen, wie die OData-Endpunkte zur Abfrage verwenden.
Zum Glück in der Welt des CRM 2013 die gleiche OData URI wie in CRM 2011, wirkt wie ein Zauber und liefert die richtigen Informationen Konto, wenn ich die folgende OData URL in IE10 getestet (die unformatierte Hinblick auf das Ergebnis zu sehen, müssen Sie möglicherweise ausschalten Feed Leseansicht im IE 10 über Internetoptionen> Inhalt> Feeds und Web Slices Einstellungen> un-tick "Turn on Feed lesen view").
Name> / <CRM-Organisation Name>/XrmServices/2011/OrganizationData.svc/AccountSet?(guid’XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX’)
Jetzt, da wir die OData URL, in der guten alten Zeit von CRM 2011 können Sie entweder:
gehen, um den Unterschied in der Syntax zu sehen, in das CRM 2013 SDK und schauen Sie sich die Code-Beispiele gegeben in "Verwenden Sie den OData-Endpunkt mit Ajax und JScript Web-Ressourcen".
Aber!!
Das CRM-2013 SDK (Version 6.0.2 zum Zeitpunkt des Schreibens) hat eine große mutige Aussage, die sagt:
"Wir empfehlen nicht jQuery in Form Skripte und Band-Befehle. Die meisten der Vorteile von jQuery vorgesehen ist, dass es für einfache Quer Browser Manipulation des DOM ermöglicht. Dies ist ausdrücklich nicht unterstützt in Form Skripte und Band-Befehle. "Ein Ort, der CRM 2013 SDK die Verwendung von jQuery empfiehlt, wenn Sie Ihre eigene HTML-Web-Ressourcen erstellen, um" Benutzerschnittstellen zur Verfügung stellen, weil es eine ausgezeichnete Cross-Browser-Bibliothek [ist .. ], und es gibt keine Beschränkung gegen das DOM manipulieren. "
Leider verschiedene Versionen von jQuery-Bibliothek geladen interferiert miteinander in CRM 2013 und während seiner Verwendung wird nicht mehr in CRM 2013 empfohlen wird, können Sie dies für "Konflikt" (für weitere Informationen siehe diesen ausgezeichneten) durch Überprüfung zu mildern.
Wenn Sie also insgesamt jQuery-Bibliothek zu vermeiden wollen, aber Sie wollen immer noch abrufen (oder erstellen, aktualisieren oder löschen) Attribute einer Entität Datensatz, müssen Sie mit dem nativen "XMLHttpRequest" Objekt vom Browser zur Verfügung gestellt zu arbeiten.
Zum Glück hat sich das JavaScript für XMLHttpRequest-Objekt Manipulation nicht geändert. Ein wesentlicher Unterschied zu achten ist, dass, wenn Sie die OData URI bauen "context.getServerUrl ()" ab CRM 2011 ist veraltet und es funktioniert auf jeden Fall nicht in CRM 2013 Use "Xrm.Page.context.getClientUrl () " stattdessen. Die "XMLHttpResponse", wo das zurückgegebene Objekt in JSON-Format (wie durch den Request-Header gesetzt) sieht wie folgt aus:
Konvertieren Sie den Text des JSON-Objekt in JavaScript-Skript mit "JSON.parse (...)", um das Ergebnis leichter zu manipulieren.
JSON.parse (this.responseText) .d
Wenn Sie weitere Informationen benötigen, mit "XMLHttpRequest / Response" Objekte für den Umgang und was die "Readystate" und Statuscodes bedeuten, versuchen Sie entweder die oder das CRM 2013 SDK.
Schauen wir uns die eigentliche JavaScript-Funktionen einen Blick. Nur relevante Funktionen der xRM oben genannten Methoden enthalten, werden unten bekannt gegeben. Wenn Sie den Code arbeiten für Ihr CRM 2013-Umgebung sehen möchten, müssen Sie Ihre eigene JavaScript-Bibliothek mit einem eindeutigen Namespace zu erstellen, und die Funktionen unten kopieren.
Überprüfen Sie, ob "Parent Kunde" Feld leer oder auf ein bestehendes Konto Datensatz gesetzt.
Wenn "Parent Kunde" auf ein Konto Datensatz gesetzt ist, fragt den Benutzer, wenn er das Konto der Adresse will den neuen Kontaktdatensatz kopiert werden.
Wenn "Parent Kunde" auf leer gesetzt ist, fragt den Benutzer, wenn er die Kontaktadresse will gelöscht werden.
Haken Sie diese Methode, um // die "OnChange" Ereignis von "parentcustomerid" Nachschlag
Endpoint-Security 2013 Endpoint-Security 2016