Colonnes composites
Certaines colonnes ajoutées à un formulaire peuvent représenter plusieurs éléments de données. Ces colonnes composites se comportent différemment des autres colonnes lorsqu′elles sont affichées dans l′application Web et les scripts doivent être écrits différemment pour être utilisés correctement.
La table suivante répertorie les colonnes composites disponibles dans les applications pilotées par modèle :
Tableau |
Nom d′affichage |
Nom logique |
---|---|---|
Compte |
Adresse 1 |
address1_composite |
Adresse 2 |
address2_composite |
|
Contact |
Nom complet |
fullname |
Adresse 1 |
address1_composite |
|
Adresse 2 |
address2_composite |
|
Prospect |
Nom complet |
fullname |
Adresse 1 |
address1_composite |
|
Adresse 2 |
address2_composite |
|
Utilisateur |
Nom complet |
fullname |
Adresse |
address1_composite |
|
Autre adresse |
address2_composite |
|
Devis |
Facturation : Adresse |
billto_composite |
Envoi : Adresse |
shipto_composite |
|
Ordre |
Facturation : Adresse |
billto_composite |
Envoi : Adresse |
shipto_composite |
|
Facture |
Facturation : Adresse |
billto_composite |
Adresse d’expédition |
shipto_composite |
Colonnes composites dans l′application Web
Lorsque des colonnes composites sont ajoutées à un formulaire principal, l′application Web n′affichera que la colonne composite. Lorsqu′un utilisateur modifie la colonne, une icône déroulante apparaît, affichant la colonne individuelle qui comprend la colonne composite.
Par exemple, la colonne Adresse d′un formulaire de contact est une colonne composite. La sélection de la colonne Adresse affiche une icône déroulante avec des colonnes individuelles qui composent la colonne composite.
Bien qu′elle ne soit pas explicitement ajoutée au formulaire dans l′éditeur de formulaires, chacune des colonnes qui font partie de la colonne est disponible pour le formulaire. Bien que vous puissiez lire la valeur de la valeur composite en utilisant getValue, vous ne pouvez pas utiliser setValue pour changer directement la valeur de la colonne composite ; vous devez définir une ou plusieurs colonnes référencées par la colonne composite.
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 column name>.
Pour n′accéder qu′au contrôle address_line1 dans le contrôle address1_composite, vous utiliserez :
formContext.getControl("address1_composite_compositionLinkControl_address1_line1")
Colonnes composites dans les clients mobiles
Le client mobile pour les applications pilotées par modèle utilise les mêmes définitions de formulaire que celles utilisées pour les tables qui ont des colonnes composites, mais il les interprète différemment. Si une colonne composite se trouve dans la définition de formulaire, elle affichera toutes les colonnes qui font partie de la colonne composite dans cette section du formulaire. Il n′est pas nécessaire de créer une icône déroulante, car toutes les colonnes sont visibles. Vous pouvez écrire des scripts pour le formulaire en accédant à chacune des colonnes individuelles comme si elles avaient été ajoutées individuellement au formulaire. Toutefois, le contrôle composé effectif n′est pas présent sur la page des clients mobiles des applications basées sur un modèle.
Atténuer les différences
Si vous souhaitez accéder à la colonne de nom complet pour les tables Contact, Lead ou User, à l′aide de la méthode formContext.data.entity. getPrimaryAttributeValue est un moyen simple d′obtenir la valeur de cette colonne sans la référencer directement. Cette méthode fonctionne pour l′application Web et les clients mobiles des applications basées sur un modèle.
Si du code doit lire la valeur de l′une des colonnes composites d′adresse, pour travailler avec les deux clients, vous devez séparer le code à l′aide de getClient comme indiqué dans la fonction suivante qui affichera l′adresse formatée à l′aide de la méthode Xrm.Navigation. openAlertDialog dans l′application Web principale ou dans la version des applications mobiles du même formulaire.
function showAddressDialog(executionContext) {
var address1_compositeValue;
var formContext = executionContext.getFormContext();
if (Xrm.Utility.getGlobalContext().client.getClient() != "Mobile") {
address1_compositeValue = formContext.getAttribute("address1_composite").getValue();
}
else {
var address1_line1 = formContext.getAttribute("address1_line1").getValue();
var address1_line2 = formContext.getAttribute("address1_line2").getValue();
var address1_line3 = formContext.getAttribute("address1_line3").getValue();
var address1_city = formContext.getAttribute("address1_city").getValue();
var address1_stateorprovince = formContext.getAttribute("address1_stateorprovince").getValue();
var address1_postalcode = formContext.getAttribute("address1_postalcode").getValue();
var address1_country = formContext.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.Navigation.openAlertDialog({ text: address1_compositeValue });
console.log(address1_compositeValue);
}
Rubriques connexes
Notes
Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)
Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).