Scrivere script per gli attributi compositi

 

Data di pubblicazione: gennaio 2017

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

Alcuni campi aggiunti a un modulo possono rappresentare più elementi di dati. Tali attributi composti si comportano in modo diverso da altri attributi quando vengono visualizzati nell'applicazione Web ed è necessario scrivere script in modo diverso per utilizzarli correttamente.

In questo argomento

Attributi composti

Attributi composti nell'applicazione Web

Attributi composti in Dynamics 365 per tablet

Ridurre le differenze

Attributi composti

Nella tabella seguente sono elencati gli attributi composti:

Entità

Nome visualizzato

Nome logico

Contact

Nome completo

fullname

Indirizzo 1

address1_composite

Indirizzo 2

address2_composite

Lead

Nome completo

fullname

Indirizzo 1

address1_composite

Indirizzo 2

address2_composite

User

Nome completo

fullname

Indirizzo

address1_composite

Altro indirizzo

address2_composite

Account

Indirizzo 1

address1_composite

Indirizzo 2

address2_composite

Quote

Indirizzo di fatturazione

billto_composite

Indirizzo di spedizione

shipto_composite

Order

Indirizzo di fatturazione

billto_composite

Indirizzo di spedizione

shipto_composite

Invoice

Indirizzo di fatturazione

billto_composite

Indirizzo di spedizione

shipto_composite

Attributi composti nell'applicazione Web

Se i campi degli attributi composti vengono aggiunti a un modulo principale, l'applicazione Web mostrerà solo l'attributo composto. Quando qualcuno modifica il campo, appare un riquadro a comparsa che mostra i singoli attributi che costituiscono l'attributo composto. Sebbene non aggiunto in modo esplicito al modulo nell'editor di moduli, ognuno degli attributi che fanno parte dell'attributo è disponibile nel modulo. Sebbene sia possibile leggere il valore del valore composto tramite getValue, non è possibile utilizzare setValue per modificare direttamente il valore dell'attributo composto; è necessario impostare uno o più attributi a cui viene fatto riferimento dall'attributo composto.

È possibile accedere ai singoli controlli costituenti visualizzati nel riquadro a comparsa in base al nome. Questi controlli utilizzano la seguente convenzione di denominazione: <composite control name>_compositionLinkControl_<constituent attribute name>. Per accedere solo al controllo address_line1 nel controllo address1_composite è possibile utilizzare: Xrm.Page.getControl("address1_composite_compositionLinkControl_address1_line1").

Attributi composti in Dynamics 365 per tablet

Microsoft Dynamics 365 per tablet utilizza le stesse definizioni del modulo utilizzate per le entità con attributi composti, ma le interpreta in modo diverso. Se un attributo composto è disponibile nella definizione del modulo, visualizzerà tutti gli attributi che fanno parte dell'attributo composto in quella sezione del modulo. Non è necessario un riquadro a comparsa poiché tutti i campi sono visibili. È possibile scrivere script per il modulo accedendo a ognuno dei singoli attributi come se fossero stati aggiunti singolarmente al modulo.

Tuttavia, l'effettivo controllo composto non sarà presente nella pagina Dynamics 365 per tablet.

Ridurre le differenze

Se si desidera accedere al campo fullname per le entità Contact, Lead o User, è possibile recuperare facilmente il valore per questo attributo senza farvi riferimento direttamente mediante il metodo **Xrm.Page.data.entity.**fbaf2e7a-db2f-448f-bd24-6b3ca1ccb28e#BKMK_getPrimaryAttributeValue. Questo metodo funziona sia per l'applicazione Web che per Dynamics 365 per tablet.

Se si ha un codice che deve leggere il valore di uno degli attributi composti di indirizzo, per lavorare con entrambi i client, sarà necessario separare il codice utilizzando Xrm.Page.context.client.getClient come illustrato nella funzione seguente che visualizzerà l'indirizzo formattato utilizzando **Xrm.Utility.**72a66f93-92df-42b9-a8fd-b6125c7fe83b#BKMK_alertDialog nell'applicazione Web principale o nella versione Dynamics 365 per tablet dello stesso modulo.

function showAddressDialog() {
 var address1_compositeValue;
 if (Xrm.Page.context.client.getClient() != "Mobile") {
  address1_compositeValue = Xrm.Page.getAttribute("address1_composite").getValue();
 }
 else {
  var address1_line1 = Xrm.Page.getAttribute("address1_line1").getValue();
  var address1_line2 = Xrm.Page.getAttribute("address1_line2").getValue();
  var address1_line3 = Xrm.Page.getAttribute("address1_line3").getValue();
  var address1_city = Xrm.Page.getAttribute("address1_city").getValue();
  var address1_stateorprovince = Xrm.Page.getAttribute("address1_stateorprovince").getValue();
  var address1_postalcode = Xrm.Page.getAttribute("address1_postalcode").getValue();
  var address1_country = Xrm.Page.getAttribute("address1_country").getValue();

  // Achieve equivalent formatting
  //address1_line1
  //address1_line2
  //address1_line3
  //address1_city, address1_stateorprovince address1_postalcode
  //address1_country

  var addressText = "";
  if (address1_line1 != null) {
   addressText += address1_line1 + "\n";
  }
  if (address1_line2 != null) {
   addressText += address1_line2 + "\n";
  }
  if (address1_line3 != null) {
   addressText += address1_line3 + "\n";
  }
  if (address1_city != null) {
   addressText += address1_city + ", ";
  }
  if (address1_stateorprovince != null) {
   addressText += address1_stateorprovince + " ";
  }
  if (address1_postalcode != null) {
   addressText += address1_postalcode + "\n";
  }
  addressText += address1_country;

  address1_compositeValue = addressText;
 }
 Xrm.Utility.alertDialog(address1_compositeValue);
}

Vedere anche

Creare il codice per moduli 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
Utilizzare il contesto di esecuzione e la pipeline per gli eventi dei moduli
Utilizzare controlli IFRAME e di risorsa Web in un modulo
Riferimento rapido dello scripting dei moduli
Riferimento programmazione sul lato client
Attributo Xrm.Page.data.entity (riferimento lato client)

Microsoft Dynamics 365

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright