Archiv

Archive for the ‘Programmierung’ Category

Neue Version des Software Development Kit (SDK) erschienen

Das Software Development Kit (SDK) für Microsoft CRM ist in der Version 8.10 erschienen.

Was sich im Detail geändert hat findet ihr unter dem folgenden Link:

Versionshistorie

CRM 2013 – Suche nach nicht vorhandenen Datensätzen

Mit CRM 2013 gibt es endlich die Möglichkeit, nach nicht vorhandenen Datensätzen zu suchen.

Es wurde der Outer-Join Parameter implementiert der es ermöglich, z.B. nach allen Leads zu suchen denen keine Aufgabe zugeordnet ist.

Das folgende Beispiel zeigt genau diese Query an:

<fetch version=“1.0″ output-format=“xml-platform“ mapping=“logical“ distinct=“true“>

<entity name=“lead“>

<attribute name=“fullname“ />

<link-entity name=“task“ from=“regardingobjectid“ to=“leadid“ link-type=“outer“>

<attribute name=“regardingobjectid“ />

</link-entity>

<filter type=“and“>

<condition entityname=“ab“ attribute=“ regardingobjectid“ operator=“null“ />

</filter>

</entity>

<fetch/>

Leider kann ein solches Fetch-XML nicht über die erweiterte Suche erstellt werden so dass es aktuell nur die Möglichkeit gibt, dieses Fetch-XML von Hand ober über ein entsprechendes Tool zu erstellen und anschließend entweder über die Sitemap direkt einzubinden oder das so erzeugte Fetch-XML per SDK-Befehle als erweiterte Suche ins CRM hochzuladen.

Diese Suchen können dann aber nicht über die GUI der erweiterten Suche im CRM angepasst werden.

Alternativ könnt ihr natürlich auch eine erweiterte Suche in eine Lösung packen, diese exportieren, dort das Fetch-XML austauschen und anschließend wieder importieren.

CRM 2011 – SDK Version 5.0.16 ist erschienen

Gestern ist das neue SDK für Microsoft Dynamics CRM 2011 mit der Nummer 5.0.16 erschienen.

Es steht damit in der MSDN library und unter MSDN Download zur Verfügung.

Die wichtigsten Erweiterungen sind wohl die offiziellen Ankündigungen, was sich mit dem nächsten Release ändern wird.

CRM 2011 – SDK Version 5.0.15 ist erschienen

Gestern ist das neue SDK in der Version 5.0.15 erschienen und steht in MSDN Download und in der MSDN library bereit.

Die wichtigsten Neuerungen sind:

  • Neue Dlls für CRM RU13, die ebenfalls mit CRM Online kompatibel sind
  • Update des Metadata Browsers, der jetzt auch die neuen, mir RU12 eingeführten Eigenschaften ermitteln kann
  • Informationen über die neuen AutoSave Funktionen
  • Update für das SolutionDownlevel Tools, damit es auch die neuen Eigenschaften des RU12 berücksichtigt.

Begrenzungen in FetchXML Aggregat Funktionen

4. Dezember 2012 1 Kommentar

Vielen ist ja bereits bekannt, das eine Fetch-XML Abrage maximal 5.000 Dätensätze zurückliefert.

Was passiert jetzt aber, wenn ich eine Aggregatfunktion wie COUNT verwende? Diese liefert als Maximalwert 50.000 zurück.

Beispiel:

Ich habe in einer Entität 85.000 Datensätze. Die folgende Abfrage liefert mir allerdings nur 50.000 zurück!

string _count = @“
<fetch distinct=’false‘ mapping=’logical‘ aggregate=’true‘>
<entity name=contact>
<attribute name=’name‘ alias=’_count‘ aggregate=’count’/>
</entity>
</fetch>“;

CRM 2011 – Update des SDK Version 5.0.12

7. September 2012 Hinterlasse einen Kommentar

Gestern wurde ein Update der SDK Version 5.0.12 veröffentlicht.

Zum einen wurde die Microsoft.Xrm.Client.CodeGeneration.dll in der richtigen Version dem Paket hinzugefügt, zum anderen wurde ein Bug im Xrm.PageScriptProjectTemplate behoben, der dazu führte, das dieses Template nicht mit dem RU10 von Microsoft Dynamics CRM kompatibel war.

Das SDK kann nach wie vor unter dieser URL geladen werden.

CRM 2011 – SDK Version 5.0.12 wurde veröffentlicht

18. August 2012 1 Kommentar

Gestern ist das neue SDK für Microsoft Dynamics CRM erschienen. Beachtet bitte, das ein großteil der Erweiterungen erst mit dem RU10 für Microsoft Dynamics CRM 2011 funktioniert.

Das aktuelle SDK könnt ihr hier downloaden: http://www.microsoft.com/en-us/download/details.aspx?id=24004

Eine sehr gute Übersicht, was sich im SDK geändert hat, findet ihr hier: http://blogs.infinite-x.net/2012/08/17/crm-2011-sdk-5-0-12-released

Schlagwörter: ,

CRM 2011 – Probleme mit dem PlugIn Registration Tool

10. August 2012 Hinterlasse einen Kommentar

Zwischendurch habe ich immer wieder mal Probleme mit dem PlugIn Registration Tool und CRM Online.

Zeitweise bekomme ich einfach keine Verbindung zustande und das Tool meldet mit einen Fehler im XML Dokument, der ungefär so aussieht:

Unhandled Exception: System.InvalidOperationException: There is an error in XML document (4, 5).
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle)
at Microsoft.Crm.Services.Utility.DeviceIdManager.Deserialize[T](Stream stream) in C:\CRM 2011 SDK\sdk\SampleCode\CS\HelperCode\DeviceIdManager.cs:line 272

Die einfache Lösung ist, die XML-Datei livedevice.xml im Ordner c:\benutzer\[aktuelle Benutzer]\livedeviceid zu löschen. Sie wird beim nächsten gebrauch des Tools automatisch neu angelegt.

CRM 2011 – neue Xrm.Utility Funktionen mit Update Rollup 8

19. Juli 2012 5 Kommentare

Mit dem Update Rollup 8 für Microsoft Dynamics CRM 2011 im Mai sind die beiden folgenden JavaScript Funktionen hinzugekomme, die bis jetzt noch nicht im SDK dokumentiert wurden.

Xrm.Utility.openEntityForm

Xrm.Utility.openWebResource

Beispiele:

öffnet einen neuen Firmendatensatz
Xrm.Utility.openEntityForm(„account“);

Öffnet einen existierenden Firmendatensatz
Xrm.Utility.openEntityForm(„account“,“A85C0252-DF8B-E111-997C-00155D8A8410″)

Öffnet einen neuen Datensatz mit einem bestimmten Formulat und Defaultwerten
var parameters = {};
parameters[„formid“] = „b053a39a-041a-4356-acef-ddf00182762b“;
parameters[„name“] = „Test“;
parameters[„telephone1“] = „(425) 555-1234“;
Xrm.Utility.openEntityForm(„account“, null, parameters);

Öffnet einen neuen Datensatz, verschiebt das Fenster in die obere linke Ecke und definiert die Größe des Fensters
var newWindow = Xrm.Utility.openEntityForm(„contact“);
newWindow.moveTo(0,0);
newWindow.resizeTo(800,600);

Öffnet eine WebRessource mit dem Namen „new_webRessource.htm“
Xrm.Utility.openWebResource(„new_webRessource.htm“, „dataItemValue“);

Öffnet eine WebRessource und übergibt dabei mehere Parameter
var customParameters = encodeURIComponent(„first=First Value&second=Second Value&third=Third Value“);
Xrm.Utility.openWebResource(„new_webRessource.htm“,customParameters);

Öffnet eine Webressource und setzt die Größe des Fensters
Xrm.Utility.openWebResource(„new_webResource.htm“, null, 300,300);

Die neuen Funktionen wurden im diesem Microsoft Dynamics CRM Blog besprochen.

CRM 2011 – Hilfreiche JavaScript Codeschnippsel Version 3

2. Februar 2012 7 Kommentare

Anbei findet ihr die dritte Version meines Artikels über hilfreiche JavaScript Codeschnippsel im CRM. Er beinhaltet neben den Beispielen des ersten beiden Artikels weitere Beispiele und kleinere Fehlerkorrekturen, die mir durch Oliver Graf und Jan Nebendahl angetragen wurden, vielen Dank für diese Informationen.

Den Wert eines Feldes auslesen
Xrm.Page.getAttribute(‚Feldname‘).getValue();

Den Wert eines Feldes setzen
Xrm.Page.getAttribute(‚Feldname‘).setValue(‚NeuerWert‘);

Den Wert eines Lookup-Feldes auslesen
var lookup = new Array();
lookup =Xrm.Page.getAttribute(‚Feldname‘).getValue();
lookup[0].id;
lookup[0].name;
lookup[0].entityType

Den Wert eines Lookup-Feldes setzen
var lookup = new Array();
lookup[0] = new Object();
lookup[0].id = ‚GUID des Datensatzes‘;
lookup[0].name = ‚Name des Datensatzes‘;
lookup[0].entityType = typeValue;
Xrm.Page.getAttribute(‚Feldname‘).setValue(lookup);

ID des aktuellen Datensatzes ermitteln
Xrm.Page.data.entity.getId();

Ein Feld anzeigen/verstecken
Xrm.Page.ui.controls.get(‚Feldname‘).setVisible(true);
Xrm.Page.ui.controls.get(‚Feldname‘).setVisible(false);

Den Label eines Feldes ausblenden
Xrm.Page.ui.controls.get(‚Feldname‘).setLabel(“);

Eine Sektion (Tab) anzeigen/verstecken
Xrm.Page.ui.tabs.get(2).setVisible(true);
Xrm.Page.ui.tabs.get(2).setVisible(false);

Anstelle des Indexes für den Tab kann auch der Name des Tabs verwendet werden

Das OnChange Ereignis eines Feldes aufrufen
Xrm.Page.getAttribute(‚Feldname‘).fireOnChange();

Den ausgewählten Eintrag einer Pickliste auslesen
Xrm.Page.getAttribute(‚Feldname‘).getSelectedOption().text;

Den Wert einer Pickliste setzen
Xrm.Page.getAttribute(‚Feldname‘).setValue(parseInt(Wert));

Den Level eine Feldes setzen
Xrm.Page.getAttribute(‚Feldname‘).setRequiredLevel(’none‘);
Xrm.Page.getAttribute(‚Feldname‘).setRequiredLevel(‚required‘);
Xrm.Page.getAttribute(‚Feldname‘).setRequiredLevel(‚recommended‘);

Den Focus auf ein Feld setzen
Xrm.Page.getControl(‚Feldname‘).setFocus(true);

OnSave Ereignis abbrechen
event.returnValue = false;

Ein Feld schreibschützen
Xrm.Page.getControl(‚Feldname‘).setDisabled(true);

Ein Schreibgeschütztes Feld in der Datenbank speichern
Xrm.Page.getAttribute(‚Feldname‘).setSubmitMode(‚always‘)

Nur eine Entitä bei einem Lookup anzeigen
document.getElementById(‚customerid‘).setAttribute(‚lookuptypes‘, ‚1‘);

Möchte man mehrere Entitäten zur Auswahl anbieten, kann man diese durch Kommas getrennt angeben.
Das folgende Script zeigt z.B. noch die Entitäten Firma und Kontakt an.

document.getElementById(‚customerid‘).setAttribute(‚lookuptypes‘, ‚1, 2‘);
Zusätzlich muss dann noch der Defaulttype für das Lookup gesetzt werden
document.getElementById(‚customerid‘).setAttribute(‚defaulttype‘, ‚1‘);

Wird die Standardardanzeige des Lookups entfernt, muss zusätzlich eine neue Standardanzeige definiert werden
Xrm.Page.getControl(‚customerid‘).setDefaultView(‚GUID der View‘);
Vielen Dank an Jan Nebendahl für den Hinweis.

Auf den Formularstatus prüfen
var formType= Xrm.Page.ui.getFormType();
1 = create
2 = update
3 = Read Only
4 = Disabled
6 = Bulk Edit

Schlagwörter: , ,