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.

Exemple de 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

Colonnes

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é).