Creare il codice per moduli di Microsoft Dynamics 365

 

Data di pubblicazione: gennaio 2017

Si applica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

La programmazione dei moduli offre delle modalità per interagire con i moduli dell'entità tramite JavaScript che viene eseguito per gli eventi che si verificano nel modulo.

In questo argomento

Quando utilizzare la programmazione dei moduli

Fattori da considerare quando si utilizza la programmazione dei moduli

Gestire le dipendenze delle librerie

Scrivere gli script dei moduli con ottime prestazioni

Diverse presentazioni dei moduli

Strumenti di sviluppo

Quando utilizzare la programmazione dei moduli

Microsoft Dynamics 365 include molte opzioni per controllare i processi aziendali. La programmazione dei moduli è un'opzione. Ma occorre ricordare che è possibile un'altra opzione: regole business. Le regole di business offrono la possibilità a un utente che non conosce JavaScript e che non è uno sviluppatore di applicare la logica del processo aziendale in un modulo. Per ulteriori informazioni, vedi l'argomento della guida alla personalizzazione TechNet: Creare e modificare le regole di business.

Il vantaggio principale della programmazione dei moduli e delle regole di business è che sono immediati. Non richiedono l'invio di dati al server e, pertanto, consentono le migliori prestazioni per molti scenari. Poiché consentono l'interazione umana, costituiscono inoltre l'opzione più flessibile.

Sebbene le regole di business presentino un vantaggio perché possono essere create e gestite da un utente che non sia uno sviluppatore, comportano alcune limitazioni e non intendono sostituire gli script dei moduli. La programmazione dei moduli consente di realizzare attività che non possono essere ancora eseguite utilizzando le regole di business.

Le attività che vengono di frequente eseguite utilizzando la programmazione dei moduli includono:

  • Convalidazione dati: ogni volta che è possibile, devi eseguire la convalida dei dati mentre i dati vengono modificati. La definizione del campo Modulo consentirà di eseguire automaticamente la convalida dei dati più comune. Ad esempio, un campo Single Line of Text formattato per un indirizzo e-mail non consentirà l'inserimento in esso di un valore non valido.

    Utilizzare la programmazione dei moduli per una convalida aggiuntiva dei dati specifici dell'organizzazione. Ad esempio, nell'organizzazione potrebbero esistere regole specifiche su come i numeri di telefono devono essere formattati o una lunghezza minima per il campo Subject in un impegno di tipo servizio.

  • Automazione: puoi ottenere miglioramenti significativi della produttività quando si utilizza lo scripting dei moduli per automatizzare le attività comuni. È possibile impostare i valori dei campi che dipendono dai dati immessi in un modulo; in questo modo si consentirà agli utenti di risparmiare una quantità notevole di tempo nell'immissione dei dati. L'utilizzo della programmazione dei moduli per l'automazione è utile perché consente all'utente di verificare che un processo standard sia valido in un caso specifico. Gli utenti possono apportare le modifiche necessarie prima di salvare un record.

  • Miglioramento e consolidamento dei processi: puoi personalizzare i dati da visualizzare nel modulo o il layout del modulo per ottimizzarlo per attività specifiche eseguite da utenti dell'organizzazione. È possibile utilizzare la programmazione dei moduli per visualizzare o nascondere elementi specifici del modulo oppure per aprire moduli diversi che sono stati definiti per un'entità. È possibile controllare quali campi sono obbligatori in base ai dati presenti nel modulo o nei record correlati.

    Con Aggiornamento di Microsoft Dynamics CRM 2015 e Microsoft Dynamics CRM Online 2015 è possibile scrivere codice per controllare i processi aziendali che vengono visualizzati nella parte superiore dei moduli.Ulteriori informazioni:Scrivere gli script per i processi aziendali.

Fattori da considerare quando si utilizza la programmazione dei moduli

La logica applicata nella programmazione dei moduli può essere eseguita solo nel browser di un utente che interagisce all'interno del modulo dell'entità all'applicazione di Microsoft Dynamics 365. Per questo motivo, non ci si deve basare solamente sulla programmazione dei moduli per avviare o applicare i processi correlati ai dati. I record possono essere creati o aggiornati direttamente mediante le API del servizio Web o tramite i flussi di lavoro all'esterno del contesto del modulo. La programmazione dei moduli è complementare alle regole business applicate tramite i plug-in e i processi in modo che tutti i record creati o aggiornati in qualsiasi modalità siano conformi agli stessi processi.

Puoi definire le regole di business in modo da eseguirle nell'ambito dell'entità. La stessa logica può in questo modo essere applicata al server indipendentemente dal modo in cui è stata originata l'azione.Ulteriori informazioni:TechNet: Creare e modificare le regole di business

Sebbene la programmazione dei moduli offra funzionalità per nascondere i campi del modulo in modo da impedire agli utenti di visualizzare o aggiornare alcuni dati dell'entità, non rappresenta una soluzione completa per applicare i requisiti di sicurezza. Gli utenti possono visualizzare i dati dell'entità che non sono visibili nel modulo mediante diversi metodi, ad esempio Ricerca avanzata.Ulteriori informazioni:Modello di sicurezza di Microsoft Dynamics 365

Gestire le dipendenze delle librerie

Per ottimizzare le prestazioni, i moduli Microsoft Dynamics 365 caricano le risorse Web JavaScript in modalità asincrona e in parallelo. Pertanto l'ordine in cui le librerie vengono configurate per un modulo non garantisce che una libreria venga completamente scaricata e inizializzata prima che un'altra libreria possa tentare di utilizzare uno degli oggetti in essa definiti.

Se il tuo codice dipende da un'altra libreria che deve essere completamente scaricata e inizializzata, l'approccio più chiaro consiste nel combinare entrambe le librerie in una singola risorsa Web JavaScript con il codice sotto il codice della libreria. Un approccio più sofisticato consiste nell'utilizzo delle librerie, ad esempio head.js o require.js per controllare come vengono caricate le librerie separate.

Scrivere gli script dei moduli con ottime prestazioni

Quando si scrivono gli script per i moduli, utilizzare le seguenti procedure per ottenere prestazioni ottimali:

  • Evitare di includere librerie di risorse Web JavaScript non necessarie
    Maggiore è il numero di script aggiunti al voto, maggiore è la quantità di tempo necessario per scaricarli. In genere gli script vengono memorizzati nella cache nel browser dopo che sono stati caricati la prima volta, ma le prestazioni relative alla prima volta che un modulo viene visualizzato spesso generano una significativa impressione.

    Per un esempio specifico, non includere jQuery negli script dei moduli semplicemente perché si desidera utilizzare XMLHttpRequests. Sebbene jQuery disponga della funzione $.ajax con cui la maggior parte degli utenti ha familiarità per eseguire tali richieste, si tratta di una preferenza per gli sviluppatori, non di una necessità. È possibile eseguire tali richieste utilizzando l'oggetto XMLHttpRequest nativo disponibile in tutti i browser supportati da Microsoft Dynamics 365.Ulteriori informazioni:Utilizzare jQuery

  • Evitare di caricare eventuali script in un evento Onload
    Se si utilizza codice che supporta solo eventi OnChange per i campi o l'evento OnSave, assicurarsi di impostare la libreria di script con il gestore eventi per tali eventi per l'evento OnLoad. In questo modo il caricamento di tali librerie può essere rinviato con un conseguente aumento delle prestazioni quando il modulo viene caricato.

    Non è consigliabile utilizzare il metodo addOnChange nel gestore eventi OnLoad semplicemente per comodità. Sebbene questo potrebbe ridurre il numero di passaggi necessari per aggiungere i gestori eventi, comporta un caricamento più lento del modulo.

  • Utilizzare le schede compresse per rinviare il caricamento delle risorse Web
    Quando le risorse Web o gli IFRAME vengono inclusi in sezioni in una scheda compressa, non verranno caricati se la scheda è compressa. ma solo quando la scheda è espansa. Quando lo stato della scheda cambia, si verifica l'evento TabStateChange. Qualsiasi codice necessario per supportare le risorse Web o gli IFRAME in schede compresse può utilizzare i gestori eventi per l'evento TabStateChange e ridurre il codice che potrebbe altrimenti essere generato nell'evento OnLoad.

  • Impostare opzioni di visibilità predefinite
    Evitare di utilizzare script del modulo nell'evento OnLoad che nasconde gli elementi del modulo, ma impostare le opzioni di visibilità predefinite per gli elementi del modulo che potrebbero essere nascosti in modo che siano visibili per impostazione predefinita quando il modulo viene caricato. Utilizzare quindi gli script nell'evento OnLoad per visualizzare gli elementi del modulo che si desidera visualizzare.

Diverse presentazioni dei moduli

Esistono diversi modi in cui i moduli vengono presentati. Tali modalità di presentazione influiscono sul tipo di codice e sugli eventi disponibili che è possibile utilizzare per ognuno.

Rendering dei moduli legacy

In Aggiornamento 1 di Microsoft Dynamics CRM Online 2015 e Dynamics 365 (locale) è stata introdotta una nuova impostazione di sistema Usa rendering dei moduli legacy. In queste versioni, il rendering del modulo è stato migliorato e la struttura interna della pagina è stata modificata. Pertanto, gli script dei moduli che utilizzavano metodi non supportati non potranno più accedere agli elementi del DOM disponibili nelle versioni precedenti. Se sono presenti nuovi errori dopo l'aggiornamento a queste versioni, puoi provare ad applicare questa impostazione per vedere se gli errori vengono corretti. In tal caso, probabilmente gli script che causano questi errori utilizzano metodi non supportati.

Puoi impostare Usa rendering dei moduli legacy per avere a disposizione il tempo di risolvere questi problemi, anche se non avvertirai i miglioramenti alle prestazioni che fornisce la nuova infrastruttura di rendering dei moduli.

Nota

L'impostazione Usa rendering dei moduli legacy verrà rimossa nella prossima versione principale. In quel momento, tutti gli script dei moduli devono utilizzare il nuovo rendering dei moduli.

Entità aggiornate

Tutte le entità personalizzate e alcune entità di sistema dispongono di un'interfaccia utente aggiornata che include l'utilizzo della barra dei comandi e nuove API di modulo. Le entità del sistema aggiornate sono elencate nella tabella seguente:

Account

Appuntamento

Campagna

Attività campagna

Risposta campagna

Caso

Concorrente

Contatto

Contratto

Voce di contratto (ContractDetail)

Messaggio e-mail

Diritto

Modello diritto

Fax

Fattura

Prodotto fattura (invoiceDetail) *

Lead

Lettera

Elenco marketing

Opportunità

Prodotto opportunità

Ordine

Prodotto ordine (SalesOrderDetail) *

Telefonata

Posizione

Voce di listino

Prodotto

Associazione prodotto

Relazione prodotto (ProductSubstitute)

Coda

Mini-campagna (Operazione in blocco)

Offerta

Prodotto offerta (QuoteDetail) *

Appuntamento ricorrente (RecurringAppointmentMaster)

Documen. vendita

CONTRATTO DI SERVIZIO

Istanza KPI di contratto di servizio

Impegno social

Profilo social

Attività

Team

User

* Queste entità sono state aggiornate in Aggiornamento 1 di CRM Online 2016 e in Dynamics 365 Service Pack 1 (locale).

Nota

Alcune entità aggiornate includono gli attributi compositi. Tali entità richiedono considerazioni speciali.Ulteriori informazioni:Scrivere script per gli attributi compositi.

I moduli delle entità aggiornate possono inoltre includere un controllo di collaborazione che consente di accedere a Note, Impegni e Post se sono abilitati per l'entità. L'oggetto Xrm.Page non consente di accedere al controllo di collaborazione. È possibile accedere all'elemento della sezione che contiene il controllo di collaborazione se si desidera mostrarlo o nasconderlo tramite gli script.

Metodi di programmazione moduli e evento PreSearch per le entità aggiornate

Nella tabella seguente sono elencati i metodi di programmazione moduli disponibili per le entità aggiornate.

Metodo

Descrizione

Xrm.Page.context.client.getClient

Restituisce un valore per indicare il client in cui viene eseguito lo script.

Xrm.Page.context.client.getClientState

Restituisce un valore per indicare lo stato del client.

Xrm.Page.context.getUserName

Restituisce il nome dell'utente corrente.

Xrm.Page.data.entity.getPrimaryAttributeValue

Ottiene una stringa per il valore dell'attributo primario dell'entità.

Xrm.Page.data.refresh

Aggiorna in modo asincrono i dati del modulo senza ricaricare la pagina.

Xrm.Page.data.Salva

Salva il record in modo asincrono con l'opzione per impostare le funzioni di richiamata da eseguire dopo che l'operazione di salvataggio è stata completata.

Xrm.Page.data.entity attribute.getIsPartyList

Determina se un attributo di tipo lookup rappresenta una ricerca di tipo partylist.

Xrm.Page.ui control.clearNotification

Rimuove un messaggi già visualizzato per un controllo.

Xrm.Page.ui control.setNotification

Visualizza un messaggio accanto al controllo per indicare che i dati non sono validi.

Xrm.Page.ui.clearFormNotification

Utilizzare questo metodo per rimuovere le notifiche a livello di modulo.

Xrm.Page.ui.setFormNotification

Utilizzare questo metodo per visualizzare le notifiche a livello di modulo.

Xrm.Page.ui control.addCustomFilter

Utilizzare fetchXml per aggiungere filtri aggiuntivi ai risultati visualizzati nella ricerca. Ogni filtro verrà combinato con tutti i filtri aggiunti in precedenza come condizione "AND".

Xrm.Page.ui control.setShowTime

Specifica se il controllo della data deve visualizzare la porzione di tempo della data.

Xrm.Utility.alertDialog

Visualizza una finestra di dialogo di avviso non bloccante con una funzione di richiamata.

Xrm.Utility.confirmDialog

Visualizza una finestra di dialogo di conferma non bloccante con diverse richiamate in base al pulsante selezionato dall'utente.

Evento PreSearch

Il nuovo Evento PreSearch si verifica appena prima che venga visualizzata la finestra di dialogo di ricerca quando si imposta un valore di ricerca. Questo evento non dispone di un'interfaccia utente per impostare un gestore eventi nell'applicazione; può essere impostato solo utilizzando il metodo Xrm.Page.ui control.addPreSearch. Utilizzare questo evento con i metodi addCustomFilter, addCustomView e setDefaultView per controllare le visualizzazioni aperte quando gli utenti cercano un record da impostare come valore di un campo di ricerca.

Entità che utilizzano i moduli classici

Le entità di sistema che non sono state aggiornate utilizzano la presentazione dei moduli classica. I moduli per queste entità continuano utilizzare la barra multifunzione come facevano in CRM 2011 e non hanno accesso alle API dei moduli aggiunte in questa versione. Tali entità vengono elencate nella tabella seguente:

Indirizzo

Articolo

Commento articolo

Operazione di eliminazione in blocco

Business Unit

Connessione

Sconto

Elenco sconti

Posizione documento

Allegato e-mail

Segui

Obiettivo

Metrica obiettivo

File di origine dell'importazione

Prodotto fattura

Prodotto ordine

Listino prezzi

Elemento coda

Prodotto offerta

Campo di rollup

Query rollup

Visualizzazione salvata

Servizio

Impegno di tipo servizio

Sito di SharePoint

Sito

Area

Unità

Unità di vendita

Entità abilitate per Dynamics 365 per tablet

Solo le entità di sistema selezionate e le entità personalizzate sono disponibili per essere visualizzate con Microsoft Dynamics 365 per tablet. Per le entità di sistema seguenti è possibile impostare moduli modificabili in Dynamics 365 per tablet.

Account

Impegno

Appuntamento

Caso

Concorrente

Connessione

Contatto

Lead

Nota

Opportunità

Prodotto opportunità

Telefonata

Elemento coda

Impegno social

Profilo social

Attività

Poiché Dynamics 365 per tablet non ha gli stessi comportamenti dei moduli nell'applicazione Web, alcune API non sono disponibili. Ad esempio, in Dynamics 365 per tablet le schede non possono essere espanse o compresse, quindi Evento TabStateChange della scheda non si verifica e Xrm.Page.ui tab.setDisplayState non può essere utilizzato per espandere o comprimere le schede.Ulteriori informazioni:Scrivere ed eseguire il debug di script per Dynamics 365 per telefoni e tablet.

Strumenti di sviluppo

L'esperienza di scrittura in JavaScript per i moduli Dynamics 365 sarà migliore quando utilizzi strumenti validi.

Utilizzare validi strumenti per la creazione

Poiché JavaScript è un linguaggio interpretato, gli strumenti di sviluppo speciali non sono richiesti.JavaScript è solo testo e pertanto può essere modificato nell'applicazione o in un editor di testo quale Blocco Note. Tuttavia, puoi ottenere profitti significativi in termini di produttività quando utilizzi gli strumenti per la creazione che offrono funzionalità per supportare specificatamente la modifica dei file JavaScript, ad esempio Microsoft Visual Studio e Microsoft Visual Studio Express. Puoi ottenere Visual Studio Community 2013 gratuitamente.

Utilizzare gli strumenti per sviluppatori di browser

Tutti i browser moderni forniscono strumenti incorporati per abilitare gli script di debug. Questi strumenti possono inoltre essere una guida importante per la scrittura degli script per moduli Dynamics 365. Questi strumenti per sviluppatori spesso sono chiamati strumenti F12 per il tasto che si utilizza per aprirli. Per informazioni sull'utilizzo di questi strumenti, vedi le informazioni relative al debug di JavaScript di W3Schools.

Utilizza gli strumenti per sviluppatori per verificare la sintassi degli script che carichi come risorse Web script. Con questi strumenti puoi inoltre ottenere una maggiore comprensione del modello a oggetti utilizzato per la programmazione. Ad esempio, quando scrivi il codice per accedere a oggetti specifici in un modulo, spesso è necessario accedervi in base al nome. Anziché cercare il nome dell'oggetto nell'editor di moduli, utilizza la console degli strumenti per sviluppatori per interrogare il modello a oggetti Xrm.Page per ottenere i nomi degli attributi o dei controlli a cui accedi. Ad esempio, se desideri accedere a un controllo specifico di griglia secondaria in base al nome, puoi utilizzare la console degli strumenti per sviluppatori di browser per scrivere il codice seguente.

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

I nomi di tutti i controlli della griglia secondaria verranno scritti nel riquadro di output della console. Questo script utilizza la funzionalità per passare una funzione di delegato anonimo al metodo get presente nelle raccolte e ad altri metodi presenti negli oggetti da filtrare in base al tipo e per restituire il nome dell'oggetto, come Xrm.Page.ui control.getControlType e Xrm.Page.ui control.getName utilizzati in questo esempio.

Importante

I moduli di Dynamics 365 sono costituiti da diversi frame. Perché il codice funzioni nella console, devi selezionare il frame corretto. Per i moduli del client Web Dynamics 365, seleziona il frame denominato ClientApiWrapper.aspx. Per i moduli client del nuovo hub del servizio interattivo, seleziona il frame denominato engagementhub.aspx.

Di seguito sono riportati altri esempi.

  • Visualizzare i nomi di tutti gli attributi in un modulo con il tipo

    Xrm.Page.getAttribute(
    function (att, i) {
     console.log(att.getName() + " : " + att.getAttributeType())
    });
    
  • Visualizzare i valori di opzione validi per gli attributi optionset

    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)
      }
     }
    });
    

Vedere anche

Estendere Microsoft Dynamics 365 nel client
Aprire moduli, visualizzazioni, interazioni e report con un URL
Riferimento rapido dello scripting dei moduli
Utilizzare JavaScript con Microsoft Dynamics 365
Librerie JavaScript per Microsoft Dynamics 365
Personalizzare le applicazioni di Microsoft Dynamics 365
Utilizzare gli eventi di modulo e di campo
Utilizzare il modello a oggetti Xrm.Page
Scrivere ed eseguire il debug di script per Dynamics 365 per telefoni e tablet
Scrivere script per gli attributi compositi
Scrivere gli script per i processi aziendali
Scrivere script per le griglie secondarie
Utilizzare il contesto di esecuzione e la pipeline per gli eventi dei moduli
Utilizzare controlli IFRAME e di risorsa Web in un modulo
Operazioni preliminari dell'API Web di Microsoft Dynamics 365 (JavaScript lato client)

Microsoft Dynamics 365

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright