Partage via


Personnaliser des formulaires dans des applications basées sur des modèles

Les formulaires dans les applications basées sur des modèles fournissent l’interface utilisateur que les utilisateurs utilisent pour créer, afficher ou modifier des enregistrements de table. Cet article explique comment créer ou modifier des formulaires par programmation à l’aide de la table et du SystemForm concepteur de formulaires dans les outils de personnalisation. Vous apprenez à accéder aux définitions de formulaires, à comprendre les propriétés de formulaire et à implémenter des formulaires par le biais d’exemples de code.

Accès aux définitions de formulaire

La SystemForm table stocke les formulaires ainsi que les tableaux de bord et les visualisations. Vous pouvez inspecter les définitions de formulaire d’une table de deux façons :

  • Incluez la table dans une solution non gérée et exportez la solution.

  • Interrogez la table SystemForm.

Afficher FormXML à partir d’une table exportée

Une solution managée exportée inclut uniquement les définitions des formulaires système que vous personnalisez. Pour afficher la définition d’un formulaire système, vous devez modifier le formulaire ou créer un formulaire en enregistrant le formulaire existant avec un nouveau nom.

Après avoir exporté la solution, extrayez le contenu et affichez le customizations.xml fichier. Vous trouvez la définition des formulaires dans ImportExportXml>Entities>Entity>FormXml. Dans le <FormXml> nœud, chaque type de formulaire est regroupé dans un <forms> élément avec le type paramètre spécifiant le type de formulaire.

Propriétés du formulaire

Le tableau suivant décrit les colonnes de table SystemForm clés et les données correspondantes incluses dans les éléments XML exportés avec la solution.

Propriété SystemForm Élément FormXML Description
AncestorFormId <ancestor> Identificateur unique du formulaire parent. Définissez cette propriété lorsque vous créez un nouveau formulaire en utilisant Enregistrer sous pour un formulaire existant ou en utilisant le SDK .NET pour la classe CopySystemFormRequest ou l'action CopySystemForm de l'API Web.
CanBeDeleted <CanBeDeleted> Informations qui spécifient si ce composant peut être supprimé. Cette propriété gérée s’applique uniquement si vous créez le formulaire en important une solution managée.
Description <Descriptions> Description représente une chaîne et <Descriptions> contient les étiquettes localisées de la description du formulaire.

Vous pouvez récupérer les étiquettes localisées à l’aide de RetrieveLocLabelsRequest.
FormActivationState <FormActivationState> Spécifie l′état du formulaire.

Seuls les formulaires du type « principal » peuvent être désactivés.

Valeurs valides :

-0 : Inactive
-1 : Active
FormId <formid> Identificateur unique du formulaire
FormPresentation <FormPresentation> Indique si ce formulaire figure dans la disposition d′interface utilisateur mise à jour dans Microsoft Dataverse.
FormXml <form> Représentation XML de la disposition du formulaire.
IntroducedVersion <IntroducedVersion> Version de la solution à laquelle le formulaire a été ajouté.
IsAIRMerged Sans objet Indique si ce formulaire est fusionné avec la disposition d′interface utilisateur mise à jour dans Dataverse.
IsCustomizable <IsCustomizable> Information indiquant si ce composant est personnalisable.

Cette propriété gérée s’applique uniquement si vous créez le formulaire en important une solution managée.
IsDefault N/D Information indiquant si le formulaire ou le tableau de bord est le système par défaut.
Name <LocalizedNames> Name est une chaîne de caractères et <LocalizedNames> contient les étiquettes localisées du nom du formulaire.

Vous pouvez récupérer les étiquettes localisées à l’aide du RetrieveLocLabelsRequest.
ObjectTypeCode Le formulaire est un descendant de l’élément Entity . La valeur ObjectTypeCode est le nom logique de la table.
Type Élément <forms> paramètre type Les valeurs valides pour les formulaires sont :

- 2 : main
-5 : mobile
-6 : quick
-7 : quickCreate

Créer et modifier des formulaires

Vous ne pouvez créer de formulaires que pour les tables où EntityMetadata.CanCreateForms l’autorise .

Créez des formulaires en les créant directement ou en utilisant le CopySystemForm message. Utilisez le Kit de développement logiciel (SDK) pour la classe .NET CopySystemFormRequest ou l’action CopySystemForm de l’API web. Lorsque vous utilisez le CopySystemForm message ou Enregistrer sous dans l’éditeur de formulaires, il n’existe aucun héritage entre les formulaires. Par conséquent, les modifications apportées au formulaire de base ne s’appliquent pas automatiquement aux formulaires créés à partir de celui-ci.

Vous pouvez modifier les définitions de formulaire en exportant une solution gérée, en modifiant les définitions de formulaire, puis en réimportant la solution. Lorsque vous modifiez manuellement des formulaires, utilisez un éditeur XML qui prend en charge la validation de schéma. Pour plus d’informations, consultez Modifier le fichier XML des personnalisations avec la validation du schéma.

Ouvrir le formulaire principal dans une boîte de dialogue à l’aide de l’API cliente

Pour ouvrir le formulaire principal dans une boîte de dialogue à l’aide de l’API cliente, appelez la méthode Xrm.Navigation.navigateTo . La méthode API Xrm.Navigation.navigateTo ouvre la boîte de dialogue avec plusieurs options, notamment la taille et la position.

Note

La méthode Xrm.Navigation.openForm ne prend pas en charge l’ouverture d’un formulaire principal en tant que boîte de dialogue.

Exemple : Ouvrir un nouvel enregistrement

Dans cet exemple, la boîte de dialogue ouvre un nouveau formulaire de compte pour créer un nouvel enregistrement. La boîte de dialogue s’affiche au centre en utilisant jusqu’à 50 % de l’espace disponible de la fenêtre comme modale au-dessus du formulaire à partir duquel elle a été appelée.

var pageInput = {
    pageType: "entityrecord",
    entityName: "account",
    formType: 2,
};
var navigationOptions = {
    target: 2,
    width: {value: 50, unit:"%"},
    position: 1
};
Xrm.Navigation.navigateTo(pageInput, navigationOptions);

Ouvrez un nouvel enregistrement.

Exemple : Ouvrir un enregistrement existant

Dans cet exemple, la boîte de dialogue ouvre un enregistrement de compte existant à l’aide de la valeur d’ID de compte sur le formulaire de contact. Remplacez l’ID par n’importe quelle valeur d’ID d’enregistrement pour ouvrir l’enregistrement dans la boîte de dialogue.

var pageInput = {
    pageType: "entityrecord",
    entityName: "account",
    formType: 2,
    entityId: "00aa00aa-bb11-cc22-dd33-44ee44ee44ee" //replace with actual ID
};
var navigationOptions = {
    target: 2,
    width: {value: 80, unit:"%"},
    position: 1
};
Xrm.Navigation.navigateTo(pageInput, navigationOptions);

Ouvrez un enregistrement existant.

Exemple : Ouvrir un nouvel enregistrement dans le volet latéral

Dans cet exemple, la boîte de dialogue ouvre un nouvel enregistrement dans le coin droit de la fenêtre. Vous pouvez obtenir ce comportement à l’aide des options de pixel.

var pageInput = {
    pageType: "entityrecord",
    entityName: "account",
    formType: 2,
};
var navigationOptions = {
    target: 2,
    width: {value: 500, unit:"px"},
    position: 2
};
Xrm.Navigation.navigateTo(pageInput, navigationOptions);

Ouvrez un enregistrement existant dans le volet latéral.

Exemple : Ouvrir un formulaire principal dans une boîte de dialogue avec la méthode de rappel

Cet exemple montre comment appeler une boîte de dialogue de formulaire principale avec une méthode de rappel après avoir enregistré un enregistrement et fermé la boîte de dialogue.

var pageInput = {
    pageType: "entityrecord",
    entityName: "account",
    formType: 2
};
var navigationOptions = {
    target: 2,
    width: {value: 80, unit:"%"},
    position: 2  
};
Xrm.Navigation.navigateTo(pageInput, navigationOptions).then(
    function success(result) {
            console.log("Record created with ID: " + result.savedEntityReference[0].id + 
            " Name: " + result.savedEntityReference[0].name)
            // Handle dialog closed
    },
    function error() {
            // Handle errors
    }
);

Voir aussi

Créer et concevoir des formulaires
Table SystèmeForm
Schéma XML du formulaire
Xrm.Navigation.navigateTo