Skriv kode til Microsoft Dynamics 365-formularer
Udgivet: januar 2017
Gælder for: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
Formularprogrammering indeholder måder at kommunikere med formularerne på ved hjælp af JavaScript , der er udført for hændelser, der indtræffer i formularen.
Dette emne indeholder
Hvornår skal du bruge formularprogrammering
Faktorer, der skal overvejes, når du bruger formularprogrammering
Administrer biblioteksafhængigheder
Skrive formularscripts, som fungerer godt
Forskellige formularpræsentationer
Udviklingsværktøjer
Hvornår skal du bruge formularprogrammering
Microsoft Dynamics 365 indeholder mange indstillinger til at styre forretningsprocesser. Formularprogrammering er en mulighed. Men husk, at du har en anden mulighed: forretningsregler. Forretningsregler giver en person, der ikke kender JavaScript og ikke er udvikler, mulighed for at anvende forretningslogikken i processen i en formular. Du kan finde flere oplysninger i emnet TechNet: Oprette og redigere forretningsregler i tilpasningsvejledningen.
Den primære fordel ved formularprogrammering og forretningsregler er, at de er øjeblikkelige. De kræver ikke data, der skal sendes til serveren, og de giver derfor den bedste ydeevne i mange situationer. Fordi de giver mulighed for brugerindgriben, er de også den mest fleksible valgmulighed.
Mens forretningsregler har en fordel, fordi de kan oprettes og vedligeholdes af en person, der ikke er udvikler, har de visse begrænsninger og er ikke beregnet til at erstatte formularscripts. Formularprogrammering gør det muligt at opnå de ting, der endnu ikke kan udføres ved hjælp af forretningsregler.
Følgende opgaver udføres ofte ved hjælp af formularprogrammering:
Datavalidering: Når det er muligt, bør du udføre en validering af data, mens dataene redigeres. Definitionen af formularfeltet vil udføre den mest almindelige datavalidering for dig. Feltet Single Line of Text, der er formateret til en e-mail-adresse, vil f.eks. ikke tillade, at der indtastes en ugyldig værdi i feltet.
Du kan bruge formularprogrammering for yderligere validering af data, der er entydig for organisationen. Eksempelvis kan organisationen have særlige regler om, hvordan telefonnumre skal formateres eller en minimumslængde for feltet Subject i en serviceaktivitet.
Automatisering: Når du bruger scripts til at automatisere almindelige opgaver, kan du opnå betydelige produktivitetsforbedringer. Du kan angive feltværdier, der afhænger af de data, der indtastes i en formular, der hjælper brugere med at spare betydelig tid med dataindtastning. Brug af formularprogrammering til automatisering er værdifuldt, fordi det kan give brugeren mulighed for at kontrollere, at en standardprocedure er gyldig i en bestemt sag. Brugere kan foretage nødvendige justeringer, før en post gemmes.
Forbedring af processen og håndhævelse: Du kan tilpasse, hvilke data der skal vises i formularen, eller layoutet for formularen for at optimere den for bestemte opgaver, som udføres i din organisation. Du kan bruge formularprogrammer til at få vist eller skjule bestemte formularelementer eller til at åbne forskellige formularer, der er defineret for et objekt. Du kan styre, hvilke felter der kræves, baseret på dataene i formularen eller relaterede poster.
Med Microsoft Dynamics CRM 2015 og opdatering til Microsoft Dynamics CRM Online 2015 kan du skrive kode for at styre forretningsprocesforløbet, der vises øverst i formularer.Flere oplysninger:Skrive scripts til forretningsprocesforløb.
Faktorer, der skal overvejes, når du bruger formularprogrammering
Den logik, der er anvendt i formularprogrammering, kan kun udføres i browseren på en person, der arbejder inden for Microsoft Dynamics 365-programobjektformularen. Derfor bør du ikke stole udelukkende på formularprogrammering til at starte eller håndhæve processer, der er relateret til dine data. Poster kan oprettes eller opdateres direkte via tjenesten Web API'er eller gennem arbejdsprocesser uden for konteksten af formularen. Formularprogrammering bør supplere forretningslogik, der er anvendt ved hjælp af plug-ins og processer, så alle de poster, der er oprettet eller opdateret på en hvilken som helst måde, vil overholde de samme processer.
Forretningsregler kan defineres til at køre i objektets omfang, så den samme logik anvendes på serveren, uanset hvor handlingen stammer fra.Flere oplysninger:TechNet: Oprette og redigere forretningsregler
Formularprogrammering indeholder funktioner til at skjule formularfelter, så brugere ikke kan få vist eller opdatere objektdata, men det repræsenterer ikke en komplet løsning til håndhævelse af sikkerhedskrav. En bruger kan se objektdata, der ikke er synlige i formularen, ved hjælp af en række forskellige metoder, som Avanceret søgning.Flere oplysninger:Sikkerhedsmodellen for Microsoft Dynamics 365
Administrer biblioteksafhængigheder
For optimering af ydeevnen indlæser Microsoft Dynamics 365 formularer JavaScript-ressourcer asynkront og parallelt. Det betyder, at den rækkefølge, bibliotekerne konfigureres i til en formular, ikke er nogen garanti for, at et bibliotek overføres og initialiseres fuldstændigt, før et andet bibliotek kan forsøge at bruge et af de objekter, der er defineret i det.
Hvis du har en kode, der afhænger af, at et andet bibliotek er downloadet og initialiseret fuldstændigt, er den enkleste metode at kombinere begge biblioteker i en enkelt JavaScript webressource med koden placeret under bibliotekskoden. En mere avanceret metode er at bruge biblioteker som f.eks. head.js eller require.js til at styre, hvordan de forskellige biblioteker indlæses.
Skrive formularscripts, som fungerer godt
Når du skriver scripts til formularer, kan du bruge følgende fremgangsmåder til at opnå den bedste ydeevne:
Medtag ikke unødvendige JavaScript-webressourcebiblioteker
Jo flere scripts, du føjer til formularen, jo længere tid vil det tage at hente. Normalt cachelagres scripts i din browser, når de indlæses første gang, men ydeevnen, første gang en formular vises, gør ofte et stort indtryk.For et specifikt eksempel skal du ikke medtage jQuery i dine formularscripts, blot fordi du vil bruge XMLHttpRequests. JQuery har $.ajax-funktionen, som mange mennesker kender, til at udføre disse anmodninger, men det er en udviklerpræference, ikke en nødvendighed. Det er muligt at udføre disse anmodninger ved hjælp af det indbyggede XMLHttpRequest-objekt, der findes i alle browsere, og som understøttes af Microsoft Dynamics 365.Flere oplysninger:Brug af jQuery
Undgå at indlæse alle scripts i Onload-hændelsen
Hvis du har kode, der kun understøtter OnChange-hændelser for felter eller OnSave-hændelsen, skal du sørge for at angive hændelseshandleren til scriptbiblioteket for disse hændelser i stedet for OnLoad-hændelsen. På denne måde kan indlæsning af disse biblioteker udskydes, så ydeevnen ved indlæsning af formularen øges.Vi anbefaler ikke brug af metoden addOnChange inden for OnLoad-hændelseshandleren for blot at gøre det praktisk. Mens dette kan reducere antallet af trin, der er nødvendige for at tilføje dine hændelseshandlere, medfører det, at formularen indlæses langsommere.
Brug skjulte faner til at udskyde indlæsningen af webressourcer
Når der findes webressourcer eller IFRAMES i sektioner i en skjult fane, vil de ikke blive indlæst, hvis fanen er skjult. De indlæses, når fanen udvides. Når fanens tilstand ændres, indtræffer hændelsen TabStateChange. Enhver kode, der kræves for at understøtte webressourcer eller IFRAMES i skjulte faner, kan bruge hændelseshandlere for hændelsen TabStateChange og reducere kode, der ellers kan forekomme i hændelsen OnLoad.Angiv standardsynlighedsindstillinger
Undgå at bruge formularscripts i OnLoad-hændelsen, der skjuler formularelementer. Angiv i stedet standardsynlighedsindstillingerne for formularelementer, der kan være skjult, til ikke at være synlige som standard, når formularen indlæses. Brug derefter scripts i OnLoad-hændelsen til at vise de formularelementer, du ønsker at vise.
Forskellige formularpræsentationer
Der er flere forskellige måder, som præsenteres af formularer. Disse påvirker typen af kode eller tilgængelige hændelser, som du kan bruge til hver.
Ældre formulargengivelse
I Opdatering 1 til Microsoft Dynamics CRM Online 2015 og Dynamics 365 (på stedet) blev en ny systemindstilling: Brug ældre form gengivelse indført. I denne udgivelse er gengivelse af formularen blevet forbedret, og den interne struktur af siden er ændret. Derfor kan formularscripter, der tidligere brugte ikke-understøttede metoder, ikke få adgang til de elementer i DOM, der var tilgængelige i tidligere versioner. Hvis du får nye fejl efter opgradering til disse udgivelser, kan du prøve at anvende denne indstilling til at se, om fejlene forsvinder. Hvis de gør det, er der en god chance for, at de scripts, der er forårsager disse fejl, bruger ikke-understøttede metoder.
Du kan indstille Brug den ældre formulargengivelse til at give tid til at løse disse problemer, men du vil ikke få de forbedringer af ydeevnen, den nye formulargengivelsesinfrastruktur leverer.
Bemærk
Indstillingen Brug den ældre formulargengivelse er fjernet i den næste store udgivelse. Til den tid skal alle formularscripts bruge den nye formulargengivelse.
Opdaterede objekter
Alle brugerdefinerede objekter og visse systemobjekter har en opdateret brugergrænseflade, der omfatter brug af kommandolinjen og nye formular API'er. De opdaterede systemobjekter vises i den følgende tabel:
Konto |
Aftale |
Kampagne |
Kampagneaktivitet |
Kampagnerespons |
Sag |
Konkurrent |
Kontaktperson |
Kontrakt |
Kontraktlinje (ContractDetail) |
Berettigelse |
|
Berettigelsesskabelon |
Fax |
Faktura |
Fakturaprodukt (InvoiceDetail) * |
Potentiel kunde |
Brev |
Marketingliste |
Salgsmulighed |
Salgsmulighedsprodukt |
Ordre |
Ordreprodukt (SalesOrderDetail) * |
Telefonopkald |
Placering |
Prislisteelement |
Produkt |
Produkttilknytning |
Produktrelation (ProductSubstitute) |
Kø |
Lynkampagne (massehandling) |
Tilbud |
Tilbudsprodukt (QuoteDetail) * |
Tilbagevendende aftale (RecurringAppointmentMaster) |
Salgsmateriale |
SLA |
SLA-nøgletalsforekomst |
Social aktivitet |
Social profil |
Opgave |
Gruppe |
Bruger |
* Disse objekter er blevet opdateret i Opdatering 1 til CRM Online 2016 og Dynamics 365 Service Pack 1 (til det lokale miljø).
Bemærk
Nogle opdaterede objekter indeholder sammensatte attributter. Disse kræver særlige hensyn at tage.Flere oplysninger:Skrive scripts for sammensatte attributter.
Opdaterede objektformularer kan også omfatte et samarbejdskontrolelement, der giver adgang til noter, aktiviteter og poster, hvis de er aktiveret for objektet. Objektet samt Xrm.Page giver ikke adgang til samarbejdskontrolelementet. Du kan få adgang til sektionselementet, der indeholder samarbejdskontrolelementet, hvis du vil vise eller skjule det ved hjælp af scripts.
Metoder til formularprogrammering og PreSearch-hændelse for opdaterede objekter
I følgende tabel vises de nye metoder til formularprogrammering, som kun er tilgængelige for opdaterede objekter.
Metode |
Beskrivelse |
---|---|
Returnerer en værdi for at angive, hvilken klient scriptet kører på. |
|
Xrm.Page.context.klient.getClientState |
Returnerer en værdi, der angiver tilstanden for klienten. |
Xrm.Page.context.getUserName |
Returnerer navnet på den aktuelle bruger. |
Xrm.Page.data.entity.getPrimaryAttributeValue |
Henter en streng til værdien af den primære attribut for objektet. |
Xrm.Page.data.opdater |
Opdaterer dataene i formularen asynkront uden genindlæsning af siden. |
Xrm.Page.data.Gem |
Gemmer posten asynkront med mulighed for at angive tilbagekaldsfunktioner, der skal udføres, efter lagring af handlingen er fuldført. |
Xrm.Page.data.entity attribute.getIsPartyList |
Bestemmer, om en opslagsattribut repræsenterer et partylist opslag. |
Xrm.Page.ui control.clearNotification |
Fjerner en meddelelse, der allerede vises for et kontrolelement. |
Xrm.Page.ui control.setNotification |
Viser en meddelelse ved at angive, at data ikke er gyldig. |
Xrm.Page.ui.clearFormNotification |
Brug denne metode for at fjerne meddelelser for formularniveau. |
Xrm.Page.ui.setFormNotification |
Brug denne metode for at vise meddelelser for formularniveau. |
Xrm.Page.ui control.addCustomFilter |
Brug fetchXml til at føje flere filtre til de resultater, der vises i opslaget. Hvert filter kan kombineres med alle de filtre, der tidligere er tilføjet som en 'AND'-betingelse. |
Xrm.Page.ui control.setShowTime |
Angiver, om et kontrolelement til dato skal vise klokkeslætsdelen af datoen. |
Xrm.Utility.alertDialog |
Viser en ikke-blokerende beskeddialogboks med en tilbagekaldsfunktion. |
Xrm.Utility.confirmDialog |
Viser en ikke-blokerende bekræft dialogboks med forskellige tilbagekald afhængigt af den knap, som brugeren klikker på. |
Hændelsen PreSearch
Den nye Hændelsen PreSearch forekommer, lige før dialogboksen til søgningen åbnes, når du angiver en opslagsværdi. Denne hændelse har ikke en brugergrænseflade til at angive en hændelseshandler i programmet, den kan kun angives ved hjælp af metoden Xrm.Page.ui control.addPreSearch. Brug denne hændelse med metoderne addCustomFilter, addCustomView og setDefaultView til kontrol af visningerne, der åbnes, når brugerne søger efter en post til at angive som værdi for et opslagsfelt.
Objekter, der benytter klassiske formularer
Ved systemobjekter, der ikke blev opdateret, skal du bruge klassisk formularpræsentation. Formularerne til disse objekter fortsætter med at bruge båndet, hvis de gjorde i CRM 2011, og har ikke adgang til formular API'er, der er tilføjet i denne version. Disse objekter vises i den følgende tabel:
Adresse |
Artikel |
Artikelkommentar |
Massesletningshandling |
Afdeling |
Forbindelse |
Rabat |
Rabatoversigt |
Dokumentplacering |
Vedhæftet fil i mail |
Følg |
Mål |
Målmetrikværdi |
Importkildefil |
Fakturaprodukt |
Ordreprodukt |
Prisliste |
Køelement |
Tilbudsprodukt |
Akkumuleringsfelt |
Akkumuler forespørgsel |
Gemt visning |
Tjeneste |
Serviceaktivitet |
SharePoint-websted |
Sted |
Distrikt |
Enhed |
Enhedsgruppe |
Objekter, der er aktiveret for Dynamics 365 til tablets
Det er kun udvalgte systemobjekter og brugerdefinerede objekter, der kan vises ved hjælp af Microsoft Dynamics 365 til tablets. Følgende systemobjekter kan have redigerbare formularer i Dynamics 365 til tablets.
Konto |
Aktivitet |
Aftale |
Sag |
Konkurrent |
Forbindelse |
Kontaktperson |
Kundeemne |
Bemærk! |
Salgsmulighed |
Salgsmulighedsprodukt |
Telefonopkald |
Køelement |
Social aktivitet |
Social profil |
Opgave |
Da Dynamics 365 til tablets ikke har samme funktionsmåde som formularer i webprogrammet, er visse API'er ikke tilgængelige. I Dynamics 365 til tablets kan faner f.eks. ikke udvides eller skjules, så TabStateChange-hændelse på fane forekommer ikke, og Xrm.Page.ui tab.setDisplayState kan ikke bruges til at udvide eller skjule fanerne.Flere oplysninger:Skrive eller rette fejl i scripts til Dynamics 365 til telefoner og tablets.
Udviklingsværktøjer
Din oplevelse med at skrive JavaScript til Dynamics 365 formularer vil blive bedre, når du bruger gode værktøjer.
Brug gode redigeringsværktøjer
Da JavaScript er et fortolket sprog, kræves der ikke særlige udviklingsværktøjer.JavaScript er kun tekst, så den kan redigeres i programmet eller i en teksteditor, som f.eks. Notepad. Dog kan du opnå en betydelig øget produktivitet, når du bruger redigeringsværktøjer, der indeholder funktioner, der særligt understøtter redigering af JavaScript-filer som Microsoft Visual Studio og Microsoft Visual Studio Express. Du kan få Visual Studio Community 2013 gratis.
Brug browserens udviklingsværktøjer
Alle moderne browsere indeholder indbyggede værktøjer til fejlfinding af scripts. Disse værktøjer kan også være en kæmpe hjælp, når du skriver scripts i Dynamics 365-formularer. Disse udviklingsværktøjer kaldes ofte F12 funktioner, fordi det er den tast, der bruges til at åbne dem. Se W3Schools fejlfinding af JavaScript for oplysninger om brugen af disse værktøjer.
Brug udviklerværktøjerne til at kontrollere syntaksen i scripts, som du vil overføre som scriptwebressourcer. Med disse værktøjer kan du også få en bedre forståelse af objektmodellen, du programmerer i forhold til. For eksempel når du skriver kode for at få adgang til bestemte objekter i en formular, har du ofte brug for at få adgang til dem efter navn. I stedet for at søge efter navnet på objektet i formulareditoren, skal du bruge konsollen i udviklingsværktøjerne til at søge i Xrm.Page-objektmodellen efter navnene på de attributter eller objekter, som du vil have adgang til. Hvis du vil have adgang til et bestemt undergitterkontrolelement efter navn, kan du bruge browserens udviklerværktøjskonsol til at skrive følgende kode.
Xrm.Page.ui.controls.get(
function(ctrl,i){
if(ctrl.getControlType() == "subgrid")
console.log(ctrl.getName()
);
});
Navnene på alle kontrolelementerne i et undergitter skrives til konsollens outputrude. Dette script udnytter muligheden for at overføre en anonym stedfortræderfunktion til den get-metode, der er fundet i samlinger, samt andre metoder, der er fundet i objekter, til at filtrere efter type og returnere objektnavnet, f.eks. Xrm.Page.ui control.getControlType og Xrm.Page.ui control.getName, som er brugt i dette eksempel.
Vigtigt
Dynamics 365 formularer er sammensat af flere billeder. Hvis koden skal fungere i konsollen, skal du vælge den højre rude. For Dynamics 365-webkientformularer skal du vælge billedet med navnet ClientApiWrapper.aspx. For de nye interaktive klientformularer til servicehub skal du vælge billedet med navnet engagementhub.aspx.
Her er nogle flere eksempler.
Vis navnene på alle attributter i en formular efter deres type
Xrm.Page.getAttribute( function (att, i) { console.log(att.getName() + " : " + att.getAttributeType()) });
Vis de gyldige indstillingsværdier for optionset-attributter
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) } } });
Se også
Udvide Microsoft Dynamics 365 på klienten
Åbne formularer, visninger, dialoger og rapporter med en URL-adresse
Formularscripter - hurtig henvisning
Bruge JavaScript med Microsoft Dynamics 365
JavaScript-biblioteker til Microsoft Dynamics 365
Tilpasse Microsoft Dynamics 365-programmer
Bruge formular- og felthændelser
Bruge Xrm.Page-objektmodel
Skrive eller rette fejl i scripts til Dynamics 365 til telefoner og tablets
Skrive scripts for sammensatte attributter
Skrive scripts til forretningsprocesforløb
Skrive scripts til undergitre
Bruge konteksten for udførelse og formularens hændelsespipeline
Bruge IFRAME- og webressourceobjekter i en formular
Introduktion til Microsoft Dynamics 365-web-API'en (JavaScript på klientsiden)
Microsoft Dynamics 365
© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret