Archiv

Archive for the ‘JavaScript’ Category

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: , ,

CRM 2011 – Hilfreiche JavaScript Codeschnippsel Version 2

1. Juli 2011 10 Kommentare

Anbei findet ihr die zweite Version meines Artikels über hilfreiche JavaScript Codeschnippsel im CRM. Er beinhaltet neben den Beispielen des ersten Artikels weitere Beispiele.
Es gibt eine neue Version des Artikels, den ihr hier finden könnt.

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);

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.

Schlagwörter: ,

CRM 2011 – LookUpFeld auf nur eine Enität einschränken

1. Juni 2011 1 Kommentar

Manchmal ist es wünschenswert, das bei einem Lookup nicht alle Entitäten sondern nur bestimmte Entitäten angezeigt werden.

In CRM 4 ging das mit folgendem JavaScript, das nur noch die Firma im Lookup anzeigt:

crmForm.all.<lookupfieldname>.setAttribute(„lookuptypes“, „1“);

In CRM 2011 muss diese Funktion folgendermaßen aufgebaut werden:

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“);

Das Script habe ich hier gefunden.

Schlagwörter: , ,

Rappenrundung im CRM

11. Mai 2011 1 Kommentar

Hallo,

in einem Forumsbeitrag kam die Frage nach der Rappenrundung auf. Anbei findet ihr ein SCript, das genau diese Anforderung löst.
//--------------------------------------------------------------------------------------------------------------
// Funktion: getRoundCHFValue(value)
// Die Funktion "getRoundCHFValue" erwartet als Parameter eine Zahl.
// Liefert die gerundete Dezimalzahl dieser Zahl zurück.
// Implementierung nach Vorgabe der rappenrundung in Wikipedia
//
// Parameter:
// value = Eine Zahl.
// (z.B. 128.51 oder 128.56 u.s.w.)
//
// Rückgabe:
// Der Wert wird als Dezimalzahl zurückgegeben (z.B. 128.55 oder 128.60 u.s.w.), sonst 0 (Fehler u.s.w.)
//--------------------------------------------------------------------------------------------------------------

getRoundCHFValue = function(value) {
var sAmount = "";
var iNachkommastelle;
var dAmount = 0.00;
var iWert = 0;

sAmount = new String(value);

if (sAmount != "") {
iNachkommastelle = sAmount.lastIndexOf(".");

if (iNachkommastelle = 0)
iNachkommastelle = sAmount.length - iNachkommastelle - 1;

if (iNachkommastelle >= 3)
iWert = parseInt(sAmount.substring(sAmount.length - iNachkommastelle + 1, sAmount.length - iNachkommastelle + 3));

dAmount = sAmount;

dAmount = dAmount / 5;
dAmount = Math.round(dAmount * 100) / 100;
dAmount = dAmount * 5;

sAmount = dAmount;
}

return parseFloat(sAmount);
}

Abfragen, ob eine Mail weitergeleitet wird

11. Februar 2011 Hinterlasse einen Kommentar

Ich habe hier einen schönen Beitrag gelesen, den ich euch nicht vorenthalten möchte.

Die Aufgabenstellung war, ein Stück JavaScript auszuführen, wenn eine neue Mail erstellt oder eine bestehende Mail weitergeleitet wird.

Wenn eine neue Mail erstellt wird, liefert das Objektmodell des CRM den FormType 1 zurück. Wird aber eine bestehende Mail weitergeleitet, liefert das Objektmodell den FormType 2 zurück, da es sich für das CRM nicht um eine neue Mail handelt.

Der folgende Code liefert die Lösung. Es gibt 3 Variablen, die zusätzlich abgefragt werden.

if (crmForm.FormType==1 || 
   (crmForm.FormType==2 && (isForward || isReply || isReplyAll)))
{
  //do something
}
Schlagwörter: ,

Email Vorlage automatisch auswählen

2. Februar 2011 Hinterlasse einen Kommentar

Ich habe schon mehrfach in den Foren die Frage gelesen, wie eine Email Vorlage automatisch ausgewählt werden kann. In diesem Forumbeitrag habe ich jetzt eine entsprechende Lösung gelesen, die ich euch nicht vorenthalten möchte.

function setEmailContent() {
try {
//Nur bei Create
if (crmForm.FormType == 1) {
var command = new RemoteCommand("EmailTemplateService", "GetInstantiatedEmailTemplate");
command.SetParameter("templateId", "{47A39EA6-388F-43B9-9880-E1FDB88B3A5D}");
command.SetParameter("objectId", ticket.DataValue[0].id);
command.SetParameter("objectTypeCode", 112);


var result = command.Execute();
//Wenn eine entsprechende Vorlage gefunden wurde
if (result.Success) {
if (typeof (result.ReturnValue) == "string") {
var oXml = CreateXmlDocument(false);
oXml.loadXML(result.ReturnValue);
crmForm.all.description.InsertValue(oXml.selectSingleNode("template/body").text);
crmForm.all.subject.value = oXml.selectSingleNode("template/subject").text;
}
}
}
return true;
}
catch (e) {
alert("Error : " + e.description);
return false;
}
}

Schlagwörter: ,

CRM 2011 – Hilfreiche JavaScript Codeschnipsel

29. Januar 2011 19 Kommentare

Mit CRM 2011 hat sich das Objektmodell für JavaScript geändert. Hier findet ihr ein paar hilfreiche Codeschnipsel für CRM 2011.

Es gibt eine neue Version des Artikels, den ihr hier finden könnt.

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(„Feldnam“).setValue(lookup);

Auswahl der Entitäten im Lookup einschränken
document.getElementById(„customerid“).setAttribute(„lookuptypes“, „1″);

Ein Feld anzeigen/verstecken
Xrm.Page.ui.tabs.get(„Feldname“).setVisible(false);
Xrm.Page.ui.tabs.get(„Feldname“).setVisible(true);

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

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 setzen
Xrm.Page.getAttribute(“Feldname”).setRequiredLevel(“none”);
Xrm.Page.getAttribute(“Feldname”).setRequiredLevel(“required”);
Xrm.Page.getAttribute(“Feldname”).setRequiredLevel(“recommended”);

Focus auf ein Feld setzen
Xrm.Page.getControl(“Feldname”).setFocus(true);

OnSave Ereignis abbrechen
event.returnValue = false;

Schlagwörter: ,

JavaScript – XML-Datum konvertieren

6. Dezember 2010 Hinterlasse einen Kommentar

Wird per JavaScript ein Datumsfeld mit dem Webservice ermittelt, liefert das CRM das Datum in der UTC-Zeit mit der Zeitzonenverschiebung zurück, also z.B. ‚2010-12-05T00:00:00+01:00‘.
Um dieses Datum jetzt in ein deutsches Format 05.12.2010 als String umzuwandeln, kann folgender Code verwendet werden:

function DateTimeToStringConvert(source)
{
var source1 = source.split('T')[0];
var parts = source1.split('-');
var dat;
dat = parts[2];
dat = dat + '.' + parts[1];
dat = dat + '.' + parts[0];
return dat;
}

var stringdate = StringToDateTimeConvert(‚2010-12-05T00:00:00+02:00‘);

alert(stringdate);

Schlagwörter: , ,

IFrame verzögert starten

14. November 2010 Hinterlasse einen Kommentar

Es kommt immer wieder vor, das die URl eines IFrames im Onload eines Formulares gesetzt werden soll, das IFrame aber nicht auf dem ersten Reiter angezeigt wird. In diesen Fällen darf die Zuweisung erst erfolgen, wenn tatsächlich der entsprechende Reiter angeklickt wird.

Um dies zu erreichen, kann einfach der folgende Code verwendet werden:

LoadFrame = function()
{
     crmForm.all.IFRAME_myiframe.src='https://michaelsulz.wordpress.com';
}

document.getElementById(‚tab1Tab‘).onclick = LoadFrame;

Zuerst wird eine Funktion definiert, die das eigentliche zuweisen der URL übernimmt. Danach erfolgt dann der Aufruf der Funktion, in diesem Beispiel, wenn der 2. Tab gedrückt wird, da die Zählung der Tabs bei 0 beginnt.

Schlagwörter: , ,