Archiv

Posts Tagged ‘JavaScript’

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.

Advertisements

CRM 2011 – Hilfreiche JavaScript Codeschnippsel Version 3

2. Februar 2012 5 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: ,