Écrire des scripts pour les attributs composés
Date de publication : novembre 2016
S’applique à : Dynamics CRM 2015
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 CRM 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 CRM pour tablettes
Microsoft Dynamics CRM 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 CRM 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.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 CRM 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.alertDialog dans l’application Web principale ou la version CRM 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 CRM 2015
Utiliser des événements de formulaire et de champ
Utiliser le modèle d’objet Xrm.Page
Écrire et déboguer des scripts pour CRM pour 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)
© 2017 Microsoft. Tous droits réservés. Copyright