Écrire des scripts pour les attributs composés

 

Date de publication : janvier 2017

S’applique à : Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Certains champs ajoutés à un formulaire peuvent représenter plusieurs éléments des données. Ces attributs composés se comportent différemment des autres attributs lorsqu’ils sont affichés dans l’application Web, et vous devez écrire les scripts différemment pour les utiliser correctement.

Contenu de la rubrique

Attributs composés

Attributs composés dans l’application Web

Attributs composés dans Dynamics 365 pour tablettes

Atténuer les différences

Attributs composés

Le tableau suivant répertorie les attributs composés :

Entité

Nom complet

Nom logique

Contact

Nom complet

fullname

Adresse 1

address1_composite

Adresse 2

address2_composite

Lead

Nom complet

fullname

Adresse 1

address1_composite

Adresse 2

address2_composite

User

Nom complet

fullname

Adresse

address1_composite

Autre adresse

address2_composite

Account

Adresse 1

address1_composite

Adresse 2

address2_composite

Quote

Adresse de facturation

billto_composite

Adresse d'expédition

shipto_composite

Order

Adresse de facturation

billto_composite

Adresse d'expédition

shipto_composite

Invoice

Adresse de facturation

billto_composite

Adresse d'expédition

shipto_composite

Attributs composés dans l’application Web

Lorsque des champs pour attributs composés sont ajoutés à un formulaire principal, l’application Web montre uniquement l’attribut composé. Lorsqu’un utilisateur modifie le champ, un flyout s’affiche indiquant les attributs qui composent l’attribut composé. Bien qu’il ne soit pas ajouté explicitement au formulaire dans l’éditeur de formulaires, chaque attribut qui compose l’attribut est disponible pour le formulaire. Bien que vous puissiez lire la valeur de la valeur composée avec getValue, vous ne pouvez pas utiliser setValue pour modifier la valeur de l’attribut composé directement ; vous devez définir un ou plusieurs des attributs référencés par l’attribut composé.

Vous pouvez accéder aux différents contrôles constitutifs affichés dans le flyout par nom. Ces contrôles utilisent la convention d’appellation suivante : <composite control name>_compositionLinkControl_<constituent attribute name>. Pour n’accéder qu’au contrôle address_line1 dans le contrôle address1_composite, vous utiliserez : Xrm.Page.getControl("address1_composite_compositionLinkControl_address1_line1").

Attributs composés dans Dynamics 365 pour tablettes

Microsoft Dynamics 365 pour tablettes utilise les mêmes définitions de formulaire utilisées pour les entités qui ont des attributs composé mais il les interprète différemment. Si un attribut composé est trouvé dans la définition de formulaire, elle affichera tous les attributs qui font partie de l’attribut composé dans cette section du formulaire. Un flyout est inutile car tous les champs sont visibles. Vous pouvez écrire des scripts pour le formulaire en accédant à chacun des différents attributs simplement comme s’ils avaient été ajoutés individuellement au formulaire.

Toutefois, le contrôle composé effectif ne sera pas présent dans la page Dynamics 365 pour tablettes.

Atténuer les différences

Si vous voulez accéder au champ fullname des entités Contact, Lead ou User, l’utilisation de la méthode **Xrm.Page.data.entity.**fbaf2e7a-db2f-448f-bd24-6b3ca1ccb28e#BKMK_getPrimaryAttributeValue est un moyen simple d’obtenir la valeur de cet attribut sans le référencer directement. Cette méthode fonctionne pour l’application Web et Dynamics 365 pour tablettes.

Si vous avez du code qui doit lire la valeur de l’un des attributs composés d’adresse, pour utiliser les deux clients, vous devez diviser le code avec Xrm.Page.context.client.getClient, comme le montre la fonctionnalité suivante qui affiche l’adresse formatée avec **Xrm.Utility.**72a66f93-92df-42b9-a8fd-b6125c7fe83b#BKMK_alertDialog dans l’application Web principale ou la version Dynamics 365 pour tablettes du même formulaire.

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

Voir aussi

Écrire du code pour les formulaires Microsoft Dynamics 365
Utiliser des événements de formulaire et de champ
Utiliser le modèle d’objet Xrm.Page
Écrire et déboguer des scripts pour Dynamics 365 pour téléphones et tablettes
Utiliser le contexte d’exécution et le pipeline d’événements de formulaire
Utiliser les contrôles IFRAME et de ressource Web dans un formulaire
Référence rapide des scripts de formulaires
Référence par programmation côté client
Attribut Xrm.Page.data.entity (référence côté client)

Microsoft Dynamics 365

© 2017 Microsoft. Tous droits réservés. Copyright