Del via


Skrive kode til Microsoft Dynamics CRM 2015-formularer

 

Udgivet: november 2016

Gælder for: Dynamics CRM 2015

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

  • Automatisering

  • Forbedring af processen og håndhævelse

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.

Med Microsoft Dynamics CRM 2015 og opdatering til Microsoft Dynamics CRM Online 2015 kan forretningsregler 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 CRM 2015

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

Der findes en ny systemindstilling i Opdatering 1 til Microsoft Dynamics CRM Online 2015: Brug den ældre formulargengivelse. I denne version er gengivelsen 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 denne version, 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

E-mail

Berettigelse

Berettigelsesskabelon

Fax

Faktura

Kundeemne

Brev

Marketingliste

Salgsmulighed

Salgsmulighedsprodukt

Ordre

Telefonopkald

Placering

Prislisteelement

Produkt

Produkttilknytning

Produktrelation

Lynkampagne

Tilbud

Gentaget aftale

Salgsmateriale

SLA

SLA-nøgletalsforekomst

Social aktivitet

Social profil

Opgave

Gruppe

Bruger

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

Xrm.Page.context.klient.getClient

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

Websted

Distrikt

Enhed

Enhedsgruppe

Objekter, der er aktiveret for CRM til tablets

Det er kun udvalgte systemobjekter og brugerdefinerede objekter, der kan vises ved hjælp af Microsoft Dynamics CRM til tablets. Følgende systemobjekter kan have redigerbare formularer i CRM til tablets.

Konto

Aktivitet

Aftale

Sag

Konkurrent

Forbindelse

Kontaktperson

Kundeemne

Bemærk!

Salgsmulighed

Salgsmulighedsprodukt

Telefonopkald

Køelement

Social aktivitet

Social profil

Opgave

Da CRM til tablets ikke har samme funktionsmåde som formularer i webprogrammet, er visse API'er ikke tilgængelige. I CRM 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:Skriv og foretag fejlfinding i scripts til CRM til tabletter.

Udviklingsværktøjer

Din oplevelse med at skrive JavaScript til CRM 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 Opdatering 1 til CRM Online 2015 skal du vælge rammen ClientApiWrapper.aspx. I tidligere versioner skal du bruge den rammen main.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å

Skrive klientprogramudvidelser
Åbne formularer, visninger, dialogbokse og rapporter med en URL-adresse
Formularscripter - hurtig henvisning
Bruge JavaScript med Microsoft Dynamics CRM 2015
JavaScript-biblioteker til Microsoft Dynamics CRM 2015
Udviklervejledning til tilpasning til Microsoft Dynamics CRM 2015
Bruge formular- og felthændelser
Bruge Xrm.Page-objektmodel
Skriv og foretag fejlfinding i scripts til CRM til tabletter
Skrive scripts for sammensatte attributter
Skrive scripts til forretningsprocesforløb
Skrive scripts til undergitre
Bruge konteksten for udførelse og formularens hændelsespipeline
Brug en IFRAME og webressourceobjekter i en formular
Brug OData-slutpunktet med Ajax og JScript-webressourcer

© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret