Delen via


Code schrijven voor Microsoft Dynamics CRM 2015-formulieren

 

Gepubliceerd: november 2016

Is van toepassing op: Dynamics CRM 2015

Formulierprogrammeren biedt manieren om met entiteitsformulieren te werken met JavaScript, dat wordt uitgevoerd voor gebeurtenissen die zich voordoen op het formulier.

In dit onderwerp

Wanneer formulierprogrammeren gebruiken

Factoren waar u rekening mee moet houden bij het gebruik van formulierprogrammeren

Afhankelijkheden van bibliotheken beheren

Formulierscripts overschrijven die goed presteren

Verschillende formulierpresentaties

Ontwikkelingshulpmiddelen

Wanneer formulierprogrammeren gebruiken

Microsoft Dynamics 365 biedt vele manieren om bedrijfsprocessen te controleren. Formulierprogrammeren is een optie. Maar onthoud dat u nog een andere optie hebt: bedrijfsregels. De bedrijfsregels bieden een manier waarop iemand die geen JavaScript kent en geen ontwikkelaar is bedrijfsproceslogica in een formulier kan toepassen. Zie het onderwerp in de aanpassingshandleiding: TechNet: Bedrijfsregels maken en bewerken voor meer informatie.

Het belangrijkste voordeel van formulierprogrammeren en bedrijfsregels is dat zij direct zijn. Er hoeven geen gegevens naar de server worden verzonden en ze bieden daarmee de beste prestaties voor veel scenario's. Omdat ze menselijke interactie toestaan, zijn ze ook de meest flexibele optie.

Hoewel de bedrijfsregels een voordeel hebben omdat ze door iemand kunnen worden gemaakt en bijgehouden die geen ontwikkelaar is, hebben ze bepaalde beperkingen en zijn niet bedoeld om formulierscripts te vervangen. Met formulierprogrammeren kunt u dingen bereiken die nog niet kunnen worden gedaan met bedrijfsregels.

Voorbeelden van taken die vaak worden uitgevoerd met formulierprogrammering:

  • Gegevensvalidatie

  • Automatisering

  • Procesverbetering en -handhaving

Gegevensvalidatie

Waar mogelijk moet u validatie van gegevens uitvoeren terwijl de gegevens worden bewerkt. De definitie van het veld Formulier voert de meest voorkomende gegevensvalidatie voor u uit. Bijvoorbeeld, in een Single Line of Text veld dat voor een e-mailadres is ingedeeld kan geen ongeldige waarde worden ingevoerd.

Gebruik voor formulierprogrammeren voor aanvullende validatie van de gegevens die uniek zijn in uw organisatie. Bijvoorbeeld, heeft uw organisatie specifieke regels over de manier waarop de telefoonnummers moeten zijn opgemaakt of een minimumlengte in het Subject veld voor een serviceactiviteit.

Automatisering

U kunt belangrijke productiviteitsverbeteringen bereiken als u formulierscripts gebruikt om veelvoorkomende taken te automatiseren. U kunt veldwaarden instellen die afhankelijk zijn van de gegevens die in een formulier worden ingevoerd, dat bespaart de gebruikers aanzienlijke tijd bij het invoeren van gegevens. Het gebruik van formulierprogrammeren voor automatisering is van belang omdat de gebruiker kan controleren of een standaardproces in een bepaalde aanvraag geldig is. Gebruikers kunnen de vereiste aanpassingen maken voordat een record wordt opgeslagen.

Procesverbetering en -handhaving

U kunt bepalen welke gegevens in het formulier moeten worden weergegeven of welke indeling het formulier moet hebben om het te optimaliseren voor specifieke taken die door mensen in uw organisatie worden uitgevoerd. U kunt formulierprogrammeren gebruiken om specifieke formulierelementen weer te geven of te verbergen, of verschillende formulieren te openen die voor een entiteit zijn gedefinieerd. U kunt bepalen welke velden op basis van de huidige gegevens in het formulier of in verwante records zijn vereist.

Met Microsoft Dynamics CRM 2015 en Microsoft Dynamics CRM Online 2015 Update kunt u code schrijven om de bedrijfsprocesstromen te controleren die boven aan formulieren worden weergegeven.Meer informatie:Scripts schrijven voor bedrijfsprocesstromen.

Factoren waar u rekening mee moet houden bij het gebruik van formulierprogrammeren

De logica die in formulierprogrammeren wordt toegepast kan alleen in de browser van iemand worden uitgevoerd in interactie met het Microsoft Dynamics 365 toepassingsentiteitsformulier. Om deze reden kunt u niet alleen op formulierprogrammeren vertrouwen om processen met betrekking tot uw gegevens te initiëren of the handhaven. De records kunnen rechtstreeks door de API's van de webservice of door werkstromen buiten de context van het formulier worden gemaakt of bijgewerkt. Formulierprogrammeren vult bedrijfslogica aan die is toegepast met plug-ins en processen zodat alle records die op welke manier dan ook gemaakt of bijgewerkt overeenstemmen met dezelfde processen.

Met Microsoft Dynamics CRM 2015 en Microsoft Dynamics CRM Online 2015 Update, kunnen de bedrijfsregels worden gedefinieerd die moeten worden uitgevoerd in het entiteitsbereik zodat dezelfde logica op de server wordt toegepast ongeacht waar de actie werd gestart.Meer informatie:TechNet: Bedrijfsregels maken en bewerken

Hoewel formulierprogrammeren mogelijkheden biedt om formuliervelden verbergen zodat sommige gebruikers de entiteitgegevens niet kunnen zien of bijwerken, is het geen volledige oplossing voor het afdwingen van beveiligingsvereisten. Een gebruiker kan entiteitgegevens zien die niet zichtbaar zijn op het formulier op een groot aantal manieren, zoals door Geavanceerd zoeken.Meer informatie:Het beveiligingsmodel van Microsoft Dynamics CRM 2015

Afhankelijkheden van bibliotheken beheren

Ten behoeve van het optimaliseren van de prestaties, worden JavaScript-webresources asynchroon en parallel geladen in Microsoft Dynamics 365-formulieren. Dit betekent dat de volgorde waarin bibliotheken worden geconfigureerd voor een formulier niet garandeert dat een bibliotheek volledig is gedownload en geïnitialiseerd voordat een andere bibliotheek wellicht probeert gebruik te maken van een van de objecten die hierin is gedefinieerd.

Als u code hebt die ervan afhankelijk is dat een andere bibliotheek volledig is gedownload en geïnitialiseerd, bestaat de meest eenvoudige aanpak uit het combineren van beide bibliotheken binnen een enkele JavaScript-webresource met uw code onder de bibliotheekcode. Een meer geavanceerde aanpak is het gebruik van bibliotheken zoals head.js of require.js om te besturen hoe de afzonderlijke bibliotheken worden geladen.

Formulierscripts overschrijven die goed presteren

Wanneer u scripts schrijft voor formulieren, gebruik dan de onderstaande procedures voor de beste prestaties:

  • Vermijd het omvatten van overbodige JavaScript-webresourcebibliotheken
    Hoe meer scripts u aan het formulier toevoegt, hoe meer tijd het kost om ze te downloaden. Meestal worden de scripts in cache in uw browser bewaard nadat ze voor het eerst zijn geladen, maar de prestaties bij de eerste keer dat een formulier wordt weergegeven, maakt vaak een aanzienlijke indruk.

    Voor een specifiek, voorbeeld voeg geen jQuery toe aan uw formulierscripts enkel omdat u XMLHttpRequests wilt gebruiken. Hoewel jQuery de $.ajax-functie heeft waar veel personen bekend mee zijn voor het uitvoeren van deze aanvragen, is dit een ontwikkelaarvoorkeur en geen noodzaak. Het is mogelijk om deze aanvragen uit te voeren met het systeemeigen XMLHttpRequest-object dat in alle browsers kan worden gevonden die worden ondersteund door Microsoft Dynamics 365.Meer informatie:jQuery gebruiken

  • Laad niet alle scripts in de gebeurtenis Onload
    Als u code gebruikt dat alleen gebeurtenissen voor OnChange velden ondersteunt of de gebeurtenis OnSave, zorg er dan voor dat u de scriptbibliotheek instelt met de gebeurtenismanager voor die gebeurtenissen in plaats van de gebeurtenis OnLoad. Op deze manier kan het laden van die bibliotheken worden uitgesteld en worden de prestaties tijdens het laden van het formulier vergroot.

    We raden aan niet de methode met addOnChange uit gemak te gebruiken in de gebeurtenismanager OnLoad. Hoewel dit het aantal stappen kan beperken die u nodig hebt om uw gebeurtenishandlers toe te voegen, wordt het formulier langzamer om te laden.

  • Gebruik samengevouwen tabbladen om het laden webresources uit te stellen
    Wanneer webresources of IFRAMES toegevoegd worden in secties in een samengevouwen tabblad, dan worden ze niet geladen wanneer het tabblad wordt samengevouwen. Ze worden geladen wanneer het tabblad wordt uitgevouwen. Als de tabbladstatus verandert, treedt de gebeurtenis TabStateChange op. Code dat vereist is om webresources of IFRAMEs te ondersteunen binnen samengevouwen tabbladen, kunnen gebeurtenismanagers gebruiken voor de gebeurtenis TabStateChange en code verminderen dat anders moet optreden in de gebeurtenis OnLoad.

  • Standaard zichbaarheidopties instellen
    Het gebruik van formulierscripts vermijden in de gebeurtenis OnLoad die formulierelementen verbergt. Stel in plaats hiervan de standaard zichbaarheidopties voor formulierelementen die verborgen kunnen zijn in op niet standaard zichtbaar wanneer het formulier wordt geladen. Gebruikt vervolgens scripts in de gebeurtenis OnLoad om die formulierelementen weer te geven die u wilt tonen.

Verschillende formulierpresentaties

Er zijn verschillende manieren waarop de formulieren worden weergegeven. Deze hebben invloed op het type code of de beschikbare gebeurtenissen die u voor elk kunt gebruiken.

Weergave oud formulier

Met With Update 1 voor Microsoft Dynamics CRM Online 2015 is er een nieuwe systeeminstelling: Weergave oud formulier gebruiken. In deze versie is de weergave van het formulier verbeterd en is de interne structuur van de pagina gewijzigd. Hierdoor kunnen formulierscripts die gebruikmaken van niet-ondersteunde methoden geen toegang krijgen tot elementen van de DOM die beschikbaar waren in eerdere versies. Als u nieuwe fouten hebt na het uitvoeren van een upgrade naar deze versie, kunt u proberen deze instelling toe te passen om te zien of de fouten verdwijnen. Als dat zo is, bestaat de kans dat de scripts die deze fouten veroorzaken gebruikmaken van niet-ondersteunde methoden.

U kunt Weergave oude formulieren gebruiken instellen om tijd te creëren voor het aanpakken van deze problemen. U hebt dan echter niet de beschikking over de prestatiesverbeteringen die de nieuwe infrastructuur voor formulierweergave biedt.

Notitie

De instelling Weergave oud formulier gebruiken wordt verwijderd in de volgende hoofdversie. Tegen die tijd moeten alle formulierscript werken met de nieuwe formulierweergave.

Bijgewerkte entiteiten

Alle aangepaste entiteiten en bepaalde systeementiteiten hebben een bijgewerkte gebruikersinterface met de opdrachtbalk en het nieuwe API's voorformulieren. De bijgewerkte systeementiteiten worden beschreven in de volgende tabel:

Account

Afspraak

Campagne

Campagneactiviteit

Campagnerespons

Aanvraag

Concurrent

Contactpersoon

Contract

Contractregel

E-mail

Recht

Rechtsjabloon

Fax

Factuur

Potentiële klant

Brief

Marketinglijst

Verkoopkans

Verkoopkansproduct

Order

Telefoongesprek

Positie

Prijslijstitem

Product

Productkoppeling

Productrelatie

Wachtrij

Snelle campagne

Prijsopgave

Terugkerende afspraak

Verkoopdocumentatie

SLA (Service Level Agreement)

SLA-KPI-exemplaar

Sociale activiteit

Sociaal profiel

Opdracht

Team

Gebruiker

Notitie

Sommige bijgewerkte entiteiten bevatten samengestelde kenmerken. Deze vereisen een paar specifieke overwegingen:Meer informatie:Scripts schrijven voor samengestelde kenmerken.

De bijgewerkte entiteitsformulieren kunnen ook een samenwerkingsbesturingselement bevatten dat toegang tot Activiteiten, Notities, Berichten biedt als ze voor de entiteit zijn ingeschakeld. Het Xrm.Page-object biedt geen toegang tot het samenwerkingsbesturingselement. U kunt toegang krijgen tot het sectie-element dat het samenwerkingsbesturingselement bevat als u het wilt weergeven of verbergen door scripts te gebruiken.

Methoden voor het programmeren van formulieren en PreSearch-gebeurtenis voor bijgewerkte entiteiten

In de volgende tabel ziet u alleen de methoden voor het programmeren van formulieren die beschikbaar zijn voor bijgewerkte entiteiten.

Methode

Beschrijving

Xrm.Page.context.client.getClient

Geeft een waarde om aan te geven in welke client het script wordt uitgevoerd.

Xrm.Page.context.client.getClientState

Geeft een waarde om de status van een client aan te geven.

Xrm.Page.context.getUserName

Geeft de naam de gebruiker die eigenaar is van de record.

Xrm.Page.data.entity.getPrimaryAttributeValue

Haalt een tekenreeks voor de waarde van het primaire kenmerk van de entiteit.

Xrm.Page.data.vernieuwen

Vernieuwt asynchroon de gegevens van het formulier het zonder opnieuw te laden.

Xrm.Page.data.Opslaan

Slaat asynchroon de record op met de optie voor het uitvoeren van terugbelfuncties die worden uitgevoerd nadat het opslaan voltooid is.

Xrm.Page.data.entity attribute.getIsPartyList

Bepaalt of een opzoekkenmerk een partylistopzoekopdracht vertegenwoordigt.

Xrm.Page.ui control.clearNotification

Verwijdert een bericht voor een besturingselement dat al wordt weergegeven.

Xrm.Page.ui control.setNotification

Geeft een bericht weer in de buurt het besturingselement om aan te geven dat de gegevens zijn niet geldig.

Xrm.Page.ui.clearFormNotification

Gebruik deze methode om waarschuwingen op het niveau van het formulier te verwijderen.

Xrm.Page.ui.setFormNotification

Gebruik deze methode om waarschuwingen op het niveau van het formulier te weer te geven.

Xrm.Page.ui control.addCustomFilter

Gebruik fetchXml om filters toe te voegen aan de resultaten die in opzoekveld worden weergegeven. Elke filter wordt gecombineerd met een van de eerder toegevoegde filters als 'EN' voorwaarde.

Xrm.Page.ui control.setShowTime

Bepaalt of een datumbesturingselement het tijdgedeelte van de datum moet weergeven.

Xrm.Utility.alertDialog

Bevat een niet-blokkerend waarschuwingsdialoogvenster met een terugbelfunctie.

Xrm.Utility.confirmDialog

Geeft een niet-blokkerend bevestigingsdialoogvenster met verschillende terugbelopties afhankelijk van de knop waarop wordt geklikt door de gebruiker.

PreSearch-gebeurtenis

Het nieuwe PreSearch-gebeurtenis gebeurt vlak voordat het zoekactiedialoogvenster opent wanneer u een opzoekwaarde instelt. Deze gebeurtenis heeft geen gebruikersinterface om een gebeurtenishandler in de toepassing in te stellen, deze alleen worden ingesteld met de methode Xrm.Page.ui control.addPreSearch. Gebruik deze gebeurtenis met de methoden addCustomFilter, addCustomView en setDefaultView om de geopende weergaven te beheren als personen een record zoeken om als waarde in te stellen van een opzoekveld.

Entiteiten die klassieke formulieren gebruiken

Systeementiteiten die niet zijn bijgewerkt gebruiken de klassieke formulierpresentatie. De formulieren voor deze entiteiten blijven het lint gebruiken zoals ze in CRM 2011 deden en hebben geen toegang tot API's voor formulieren die in deze versie zijn toegevoegd. Deze entiteiten worden beschreven in de onderstaande tabel:

Adres

Artikel

Opmerking over artikel

Bewerking voor bulkverwijdering

Business unit

Verbinding

Korting

Kortingslijst

Documentlocatie

E-mailbijlage

Volgen

Doelstelling

Metrische gegevens van doelstelling

Bronbestand importeren

Factuurproduct

Orderproduct

Prijslijst

Wachtrij-item

Prijsopgaveproduct

Samenvouwveld

Samenvouwquery

Opgeslagen weergave

Service

Serviceactiviteit

SharePoint-site

Locatie

Rayon

Eenheid

Eenhedengroep

Entiteiten die zijn ingeschakeld voor CRM voor tablets

Alleen geselecteerde systeementiteiten en aangepaste entiteiten zijn beschikbaar voor weergave met behulp van Microsoft Dynamics CRM voor tablets. De volgende systeementiteiten kunnen bewerkbare formulieren in CRM voor tablets hebben staan.

Account

Activiteit

Afspraak

Aanvraag

Concurrent

Verbinding

Contactpersoon

Potentiële klant

Opmerking

Verkoopkans

Verkoopkansproduct

Telefoongesprek

Wachtrij-item

Sociale activiteit

Sociaal profiel

Opdracht

Omdat CRM voor tablets niet dezelfde gedragstypen heeft als formulieren in de webtoepassing, zijn sommige Api's niet beschikbaar. Bijvoorbeeld, in CRM voor tablets kunnen geen tabbladen uitvouwen of samenvouwen worden, waardoor Tabbladgebeurtenis TabStateChange niet optreedt en Xrm.Page.ui tab.setDisplayState niet kan niet worden gebruikt om kolommen uit of samen te vouwen.Meer informatie:Scripts voor CRM voor tablets schrijven en er fouten in opsporen.

Ontwikkelingshulpmiddelen

Uw ervaring bij het schrijven van JavaScript voor CRM-formulieren wordt beter als u gebruikmaakt van goede hulpmiddelen.

Goede ontwerphulpmiddelen gebruiken

Aangezien JavaScript een geïnterpreteerde taal is, zijn er geen speciale ontwikkelingshulpprogramma's nodig.JavaScript is alleen tekst zodat deze in de toepassing of in een teksteditor zoals Kladblok kan worden bewerkt. U kunt echter aanzienlijke productiviteitswinsten bereiken wanneer u gebruikmaakt van ontwerphulpmiddelen die functies biedt voor het specifiek ondersteunen van de bewerking van JavaScript-bestanden, zoals Microsoft Visual Studio en Microsoft Visual Studio Express. U kunt Visual Studio Community 2013 gratis downloaden.

Ontwikkelingshulpmiddelen voor browsers gebruiken

Alle moderne browsers bieden ingebouwde hulpmiddelen voor het opsporen van fouten in scripts. Deze hulpmiddelen kunnen zeer nuttig zijn bij het schrijven van scripts voor Dynamics 365-formulieren. Deze ontwikkelingshulpmiddelen worden vaak F12-hulpmiddelen genoemd naar de toets die wordt gebruikt om deze hulpmiddelen te openen. Zie W3Schools foutopsporing in JavaScript voor informatie over het gebruik van deze hulpmiddelen.

Gebruik de ontwikkelingshulpmiddelen om de syntaxis te controleren van scripts die u wilt uploaden als scriptwebresources. Met deze hulpmiddelen krijgt u tevens een beter inzicht in het objectmodel waarin u programmeert. Als u bijvoorbeeld code schrijft om toegang te krijgen tot specifieke objecten in een formulier, moet u deze regelmatig openen op naam. In plaats van de naam van het object op te zoeken in de formuliereneditor, kunt u de console in het ontwikkelingshulpmiddel gebruiken om het Xrm.Page-objectmodel te onderzoeken voor het ophalen van de namen van de kenmerken of besturingselementen die u opent. Als u bijvoorbeeld toegang op naam wilt verkrijgen tot een specifiek subrasterbesturingselement , kunt u de console van het ontwikkelingshulpmiddel in de browser gebruiken om de volgende code te schrijven.

Xrm.Page.ui.controls.get(
function(ctrl,i){
 if(ctrl.getControlType() == "subgrid")
  console.log(ctrl.getName()
  );
});

De namen van alle subrasterbesturingselementen worden weggeschreven naar het uitvoerdeelvenster van de console. Dit script maakt gebruik van de mogelijkheid om een anonieme machtigingsfunctie door te geven aan de methode get die te vinden is in verzamelingen alsmede andere methoden die te vinden zijn in objecten om te filteren op type en om de objectnaam te retourneren, zoals Xrm.Page.ui control.getControlType en Xrm.Page.ui control.getName die worden gebruikt in dit voorbeeld.

Belangrijk

Dynamics 365-formulieren zijn samengesteld uit verschillende frames. De code werkt alleen in de console als u het juiste frame selecteert. Selecteer voor CRM Online 2015 Update 1-formulieren het frame met de naam ClientApiWrapper.aspx. Gebruik voor eerdere versies het frame met de naam main.aspx.

Hieronder volgen meer voorbeelden.

  • De namen van alle kenmerken weergeven in een formulier met hun type

    Xrm.Page.getAttribute(
    function (att, i) {
     console.log(att.getName() + " : " + att.getAttributeType())
    });
    
  • De geldige optiewaarden voor optiesetkenmerken weergeven

    Xrm.Page.getAttribute(
    function (att, i) {
     if (att.getAttributeType() == "optionset") {
      console.log(att.getName())
      var options = att.getOptions();
      var optionsLength = options.length;
      for (var i = 0; i < optionsLength; i++) {
       var option = options[i];
       console.log("   value: " + option.value + " Label: " + option.text)
      }
     }
    });
    

Zie ook

Uitbreidingen van clienttoepassingen schrijven
Open formulieren, weergaven, dialogen en rapporten met een URL
Beknopte naslag voor het opstellen van formulierscripts
JavaScript gebruiken met Microsoft Dynamics CRM 2015
JavaScript-bibliotheken voor Microsoft Dynamics CRM 2015
Ontwikkelaarshandleiding over aanpassing voor Microsoft Dynamics CRM 2015
Formulier- en veldgebeurtenissen gebruiken
Het objectmodel Xrm.Page gebruiken
Scripts voor CRM voor tablets schrijven en er fouten in opsporen
Scripts schrijven voor samengestelde kenmerken
Scripts schrijven voor bedrijfsprocesstromen
Scripts schrijven voor subrasters
Uitvoeringscontext en de formuliergebeurtenispipeline gebruiken
Een IFRAME en webresourcebesturingselementen op een formulier gebruiken
Het OData-eindpunt gebruiken met Ajax- en JScript-webresources

© 2017 Microsoft. Alle rechten voorbehouden. Auteursrecht