Dialoogvensters als Wizard inzetten in Dynamics CRM

Dialoogvensters als Wizard inzetten in Dynamics CRM

Door Daniel Middel
Share on FacebookTweet about this on TwitterShare on LinkedIn

Hoe een knop te maken om een dialoogvenster te starten, kom je vrijwel overal op internet wel tegen. Een beetje slim Googlen en je vindt zowel de XML als JS codes die nodig zijn om dit toe te voegen. Makkelijker zelfs is het gebruik van de Ribbon Editor (http://crmvisualribbonedit.codeplex.com/) om snel zelf knoppen toe te voegen. Het enige dat je dan nog nodig hebt is een klein scriptje dat het dialoogvenster aanroept en klaar. Meer ga ik daar ook niet over zeggen, want dit hebben we allemaal al wel eens gedaan.

Nu de grotere uitdaging: Het aanmaken van compleet nieuwe records via een dialoogvenster. Hoe ideaal zou het zijn als gebruikers een wizard door moeten lopen om een record aan te maken, in plaats van een formulier met veldjes in te moeten vullen. Hier loop je met bovenstaande Google hits al snel tegen de volgende problemen aan:

  • Dialoogvensters hebben een record nodig om te draaien
  • Er is al een knop Nieuw waar iedereen op klikt

Hoe ideaal zou het zijn als gebruikers een wizard door moeten lopen om een record aan te maken, in plaats van een formulier met veldjes in te moeten vullen

Een kleine aanpassing aan zowel je dialoogvenster, XML code als de JS code is hierbij al voldoende. Wanneer een dialoogvenster namelijk ontworpen wordt voor de Gebruiker entiteit, zal het overal in CRM aangeroepen kunnen worden. De gebruiker is immers overal, of je nou op een record zit of in het hoofdmenu aan het navigeren bent. Handmatig aanroepen van deze dialoogvensters lukt echter alleen op een geselecteerde gebruiker, maar aanroepen via de Ribbon kan altijd. Hier een stappenplan:

 

1) Maak een dialoogvenster aan voor de Gebruiker entiteit.
2) Voeg volgende XML toe aan de RibbonDiffXml van de entiteit waar de dialoogvenster als wizard ingezet moet worden.

CustomButton002

De knop Ctb.HomepageGrid.ctb_project.MainTab.Management.Wizard is hierbij direct naast de bestaande Nieuwknop neergezet (zie de Sequence) en heeft exact dezelfde opmaak (zie Image16x16, Image32x32 en de LabelText). Sterker nog, dit zijn de bestaande naamgevingen van de standaard Nieuw knop van deze entiteit. De laatste XML nodeHideCustomAction verbergt de standaard Nieuw knop, waardoor alleen de nieuwe knop zichtbaar blijft om nieuwe records aan te maken.

 

Vervolgens de volgende XML node voor het aanroepen van het script. Merk op dat de parameter recordId niet meegestuurd wordt, omdat er nog geen record is. Omdat het om een dialoogvenster van het type SystemUser gaat, wordt het ID van de huidige gebruiker in het script opgehaald. Er is immers geen CrmParameter om de huidige gebruiker uit te lezen.

CustomButton001

3) Voeg het volgende script toe aan CRM

 

Het script ontvangt normaal gesproken drie variabelen, waarvan de laatste het record is dat geopend of geselecteerd is. Omdat we de laatste nog niet hebben, neemt het script aan dat het om een dialoogvenster gaat dat vanuit het hoofdmenu wordt aangeroepen en dus voor de Gebruiker entiteit is. De huidige gebruiker wordt hiervoor opgehaald door de functie GetUser()

CustomButton003

 

Victorie! Enige uitdaging is dat gebruikers via een lookup alsnog op het formulier komen, bijvoorbeeld het aanmaken van een Account vanuit een bestaande Contactpersoon. Er is gelukkig altijd nog zoiets als de good-old werkinstructie.

 

CustomButton004

Share on FacebookTweet about this on TwitterShare on LinkedIn