Inspectez le composant ER configuré pour éviter les problèmes d’exécution
Chaque composant de format État électronique (ER)et de composant modèle de mappage peut être validé au moment de la conception. Au cours de cette validation, une vérification de la cohérence est exécutée pour éviter les problèmes d’exécution susceptibles de se produire, tels que les erreurs d’exécution et la dégradation des performances. Pour chaque problème détecté, la vérification donne le chemin d’un élément problématique. Pour certains problèmes, un correctif automatique est disponible.
Par défaut, la validation est automatiquement appliquée dans les cas suivants pour une configuration ER contenant les composants ER mentionnés précédemment :
- Vous importez une nouvelle version d’une configuration ER dans votre instance de Microsoft Dynamics 365 Finance.
- Vous modifiez le statut de la configuration de l’ER modifiable, mis à jour de Brouillon à Terminé.
- Vous redéfinissez une configuration d’ER modifiable en appliquant une nouvelle version de base.
Vous pouvez exécuter explicitement cette validation. Sélectionnez l’une des trois options suivantes et suivez les étapes fournies :
Option 1 :
- Accédez à Administration d’organisation > États électroniques > Configurations.
- Dans l’arborescence des configurations du volet gauche, sélectionnez la configuration d’ER souhaitée qui contient le format d’ER ou le composant de mappage de modèle d’ER.
- Dans le raccourci Versions, sélectionnez la version souhaitée de la configuration ER sélectionnée.
- Dans le volet Action, sélectionnez Valider.
Option 2, pour un format ER :
- Accédez à Administration d’organisation > États électroniques > Configurations.
- Dans l’arborescence des configurations du volet gauche, sélectionnez la configuration d’ER souhaitée qui contient le format d’ER ou le composant de format d’ER.
- Dans le raccourci Versions, sélectionnez la version souhaitée de la configuration ER sélectionnée.
- Dans le volet Actions, sélectionnez Concepteur.
- Sur la page Concepteur de formats, sur le volet Actions, sélectionnez Valider.
Option 3, pour un modèle de mappage ER :
- Accédez à Administration d’organisation > États électroniques > Configurations.
- Dans l’arborescence des configurations du volet gauche, sélectionnez la configuration d’ER souhaitée qui contient le composant de modèle de mappage d’ER.
- Dans le raccourci Versions, sélectionnez la version souhaitée de la configuration ER sélectionnée.
- Dans le volet Actions, sélectionnez Concepteur.
- Sur la page Mise en correspondance de modèles à la source de données, sur le volet Action, sélectionnez Concepteur.
- Sur la page Concepteur de mappage de modèles, sur le volet Action, sélectionnez Valider.
Pour ignorer la validation lors de l’importation de la configuration, procédez comme suit.
- Accédez à Administration d’organisation > États électroniques > Configurations.
- Dans la page Configurations, dans le volet Actions, sous l’onglet Configurations, dans le groupe Paramètres avancés, sélectionnez Paramètres utilisateur.
- Définissez l’option Valider la configuration après l’importation sur Non.
Pour ignorer la validation lorsque vous modifiez ou redéfinissez le statut de la version, procédez comme suit.
- Accédez à Administration d’organisation > États électroniques > Configurations.
- Dans la page Configurations, dans le volet Actions, sous l’onglet Configurations, dans le groupe Paramètres avancés, sélectionnez Paramètres utilisateur.
- Définissez l’option Ignorer la validation lors du changement de statut de la configuration et de la redéfinition sur Oui.
ER utilise les catégories suivantes pour regrouper les inspections des contrôles de cohérence :
- Capacité d’exécution – Inspections qui détectent les problèmes critiques pouvant survenir lors du runtime. Ces problèmes sont pour la plupart à un niveau Erreur.
- Performance – Inspections qui détectent les problèmes susceptibles d’entraîner une exécution inefficace des composants ER configurés. Ces problèmes sont pour la plupart à un niveau Avertissement.
- Intégrité des données – Inspections qui détectent les problèmes pouvant entraîner une perte de données ou des problèmes de runtime. Ces problèmes sont pour la plupart à un niveau Avertissement.
Liste des inspections
Le tableau suivant offre une vue d’ensemble des inspections fournies par ER. Pour plus d’informations sur ces inspections, utilisez les liens de la première colonne pour accéder aux sections pertinentes de cet article. Ces sections expliquent les types de composants pour lesquels ER fournit des inspections et comment vous pouvez reconfigurer les composants ER pour éviter les problèmes.
Nom | Catégorie | Niveau | Message |
---|---|---|---|
Conversion de type | Capacité d’exécution | Erreur |
Impossible de convertir l’expression de type <type> au champ de type <type>. Erreur de runtime : Exception pour type |
Compatibilité de type | Capacité d’exécution | Erreur |
L’expression configurée ne peut pas être utilisée comme liaison de l’élément de format actuel à une source de données, car cette expression renvoie la valeur du type de données <type> qui dépasse la portée des types de données pris en charge par l’élément de format actuel de type <type>. Erreur de runtime : Exception de type |
Élément de configuration manquant | Capacité d’exécution | Erreur |
Chemin d’accès introuvable <chemin>. Erreur de runtime : Élément de la configuration <chemin d’accès> introuvable |
Capacité d’exécution d’une expression avec la fonction FILTER | Capacité d’exécution | Erreur |
L’expression de liste de la fonction FILTER n’est pas utilisable dans une requête. Erreur de runtime : Le filtrage n’est pas pris en charge. Validez la configuration pour obtenir plus de détails à ce sujet. |
Capacité d’exécution d’une source de données GROUPBY | Capacité d’exécution | Erreur | Le chemin d’accès <chemin d’accès> ne prend pas en charge les requêtes. |
Capacité d’exécution | Erreur |
La fonction Grouper par ne peut pas être exécutée avec une requête. Erreur de runtime : La fonction Grouper par ne peut pas être exécutée avec une requête. |
|
Capacité d’exécution d’une source de données JOIN | Capacité d’exécution | Erreur |
Impossible de joindre une liste <chemin d’accès> qui n’est pas un filtre dans la requête. Erreur de runtime : La source de données jointe à la fonction doit être un champ calculé d’expression de filtre qui n’a pas été correctement appelé. |
Préférence de la fonction FILTER comparée à WHERE | Performances | Avertissement | L’utilisation de la fonction FILTER pour l’expression est préférable à WHERE du point de vue des performances. Sélectionnez Corriger pour la remplacer automatiquement. |
Préférence de la fonction ALLITEMSQUERY comparée à ALLITEMS | Performances | Avertissement | L’utilisation de la fonction ALLITEMSQUERY pour l’expression est préférable à ALLITEMS du point de vue des performances. Sélectionnez Corriger pour la remplacer automatiquement. |
Prise en compte des cas de liste vide | Capacité d’exécution | Avertissement |
La liste <chemin d’accès> n’a pas de vérification de cas de liste vide, cela peut entraîner une erreur au moment du runtime. Ajoutez un contrôle pour le cas de liste vide. Erreur de runtime : La liste est vide dans le <chemin d’accès> Problème potentiel : La ligne est remplie une fois tandis qu’une source de données à partir de laquelle elle est remplie contient plusieurs enregistrements |
Capacité d’exécution d’une expression avec la fonction FILTER (mise en cache) | Capacité d’exécution | Erreur |
La fonction FILTER ne peut pas être appliquée au type de source de données sélectionné. Une source de données du type Enregistrements de la table est applicable uniquement lorsqu’elle n’est pas mise en cache et n’a pas de sources de données imbriquées ajoutées manuellement. Erreur de runtime : Le filtrage n’est pas pris en charge. Validez la configuration pour obtenir plus de détails à ce sujet. |
Liaison manquante | Capacité d’exécution | Avertissement |
Le chemin <chemin d’accès> n’a aucune liaison avec aucune source de données lors de l’utilisation du mappage du modèle. Erreur de runtime : Le Chemin <chemin d’accès> n’est pas lié |
Modèle non lié | Intégrité des données | Avertissement | Le fichier <nom> n’est lié à aucun composant de fichier et sera supprimé après le changement de statut de la version de configuration. |
Format non synchronisé | Intégrité des données | Avertissement | Le nom défini <nom du composant> n’existe pas dans la feuille Excel <nom de la feuille> |
Format non synchronisé | Intégrité des données | Avertissement |
La balise de <contrôle de contenu Word balisé> n’existe pas dans le fichier de modèle Word Erreur de runtime : La balise de <contrôle de contenu Word balisé> n’existe pas dans le fichier de modèle Word. |
Pas de mappage par défaut | Intégrité des données | Erreur |
Il existe plusieurs mappages de modèles pour le modèle de données <nom du modèle (descripteur racine)> dans les configurations <noms de configuration séparés par une virgule>. Définir l’une des configurations par défaut Erreur de runtime : Il existe plusieurs mappages de modèles pour le modèle de données <nom du modèle (descripteur racine)> dans les configurations <noms de configuration séparés par une virgule>. Définissez l’une des configurations par défaut. |
Paramétrage incohérent des composants d’en-tête ou de pied de page | Intégrité des données | Erreur |
Les en-têtes/pieds de page (<type de composant : en-tête ou pied de page>) sont incohérents Runtime : Le dernier composant configuré est utilisé lors du runtime si la version provisoire du format ER configuré est exécutée. |
Paramètre incohérent du composant Page | Intégrité des données | Erreur | Il existe plus de deux composants de plage sans réplication. Veuillez supprimer les composants inutiles. |
Capacité d’exécution d’une expression avec la fonction ORDERBY | Capacité d’exécution | Erreur |
L’expression de liste de la fonction ORDERBY n’est pas utilisable dans une requête. Erreur de runtime : Le tri n’est pas pris en charge. Validez la configuration pour obtenir plus de détails à ce sujet. |
Artefact d’application obsolète | Intégrité des données | Avertissement |
L’élément <chemin d’accès> est marqué comme obsolète. Exemple d’erreur d’exécution : Classe « <chemin d’accès> » introuvable. |
Conversion de type
ER vérifie si le type de données d’un champ de modèle de données est compatible avec le type de données d’une expression qui est configurée comme liaison de ce champ. Si les types de données sont incompatibles, une erreur de validation se produit dans le concepteur de mappage de modèle ER. Le message que vous recevez indique que ER ne peut pas convertir une expression de type A en un champ de type B.
Les étapes suivantes montrent comment ce problème peut se produire.
Commencez à configurer simultanément le modèle de données ER et les composants de mappage du modèle ER.
Dans l’arborescence du modèle de données, ajoutez un champ nommé X et sélectionnez Entier comme type de données.
Dans le concepteur de la mise en correspondance des modèles, dans le volet Sources de données, ajoutez une source de données de type Champ calculé.
Nommez la nouvelle source de données Y et configurez-la pour qu’elle contienne l’expression
INTVALUE(100)
.Liez X à Y.
Dans le concepteur de modèle de données, modifiez le type de données du champ X du camp Entier à Int64.
Sélectionnez Valider pour inspecter le composant de mappage de modèle modifiable sur le Concepteur de modèle de mappage.
Sélectionnez Valider pour inspecter le composant de modèle de mappage de la configuration ER sélectionnée sur la page Configurations.
Notez qu’une erreur de validation se produit. Le message indique que la valeur du type Entier que l’expression
INTVALUE(100)
des résultats de la source de données Y ne peuvent pas être stockés dans le champ de modèle de données X du type Int64.
L’illustration suivante montre l’erreur de runtime qui se produit si vous ignorez l’avertissement et sélectionnez Exécuter pour exécuter un format configuré pour utiliser le modèle de mappage.
Résolution automatique
Aucune option pour résoudre automatiquement ce problème n’est disponible.
Résolution manuelle
Option 1
Mettez à jour la structure du modèle de données en modifiant le type de données du champ de modèle de données afin qu’il corresponde au type de données de l’expression qui est configurée pour la liaison de ce champ. Pour l’exemple précédent, le type de données du champ X doit être remplacé par Entier.
Option 2
Mettez à jour le modèle de mappage en modifiant l’expression de la source de données liée au champ de modèle de données. Pour l’exemple précédent, l’expression de la source de données Y doit être remplacée par INT64VALUE(100)
.
Compatibilité de type
ER vérifie si le type de données d’un élément de format de type de données est compatible avec le type de données d’une expression qui est configurée comme liaison de cet élément de format. Si les types de données sont incompatibles, une erreur de validation se produit dans le concepteur d’opérations ER. Le message que vous recevez indique que l’expression configurée ne peut pas être utilisée comme liaison de l’élément de format actuel à une source de données, car l’expression renvoie une valeur du type de données A qui dépasse la portée des types de données pris en charge par l’élément de format actuel de type B.
Les étapes suivantes montrent comment ce problème peut se produire.
Commencez à configurer simultanément le modèle de données ER et les composants de format ER.
Dans l’arborescence du modèle de données, ajoutez un champ nommé X et sélectionnez Entier comme type de données.
Dans l’arborescence de la structure de format, ajoutez un élément de format du type Numérique.
Nommez le nouvel élément de format Y. Dans le champ Type numérique, sélectionnez Entier comme type de données.
Liez X à Y.
Dans l’arborescence de la structure des formats, modifiez le type de données de l’élément de format Y de Entier à Int64.
Sélectionnez Valider pour inspecter le composant de format modifiable sur la page Concepteur de format.
Notez qu’une erreur de validation se produit. Le message indique que l’expression configurée ne peut accepter que des valeurs Int64. Par conséquent, la valeur du champ de modèle de données X de type Entier ne peut pas être entré dans l’élément de format Y.
Résolution automatique
Aucune option pour résoudre automatiquement ce problème n’est disponible.
Résolution manuelle
Option 1
Mettez à jour la structure du format en modifiant le type de données de l’élément de format Numérique afin qu’il corresponde au type de données de l’expression qui est configurée pour la liaison de cet élément. Dans l’exemple précédent, la valeur du type de données Numérique de l’élément de format X doit être remplacé par Entier.
Option 2
Mettez à jour le mappage de format de l’élément de format X en modifiant l’expression de model.X
à INT64VALUE(model.X)
.
Élément de configuration manquant
ER vérifie si les expressions de liaison contiennent uniquement des sources de données configurées dans le composant ER modifiable. Pour chaque liaison qui contient une source de données manquante dans le composant ER modifiable, une erreur de validation se produit dans le concepteur d’opérations ER ou le concepteur de mappage de modèle ER.
Les étapes suivantes montrent comment ce problème peut se produire.
Commencez à configurer simultanément le modèle de données ER et les composants de mappage du modèle ER.
Dans l’arborescence du modèle de données, ajoutez un champ nommé X et sélectionnez Entier comme type de données.
Dans le concepteur de la mise en correspondance des modèles, dans le volet Sources de données, ajoutez une source de données de type Champ calculé.
Nommez la nouvelle source de données Y et configurez-la pour qu’elle contienne l’expression
INTVALUE(100)
.Liez X à Y.
Dans le concepteur de la mise en correspondance des modèles, dans le volet Sources de données, supprimez la source de données Y.
Sélectionnez Valider pour inspecter le composant de mappage de modèle modifiable sur le Concepteur de modèle de mappage.
Notez qu’une erreur de validation se produit. Le message indique que la liaison du champ du modèle de données X contient le chemin d’accès qui fait référence à la source de données Y, mais cette source de données est introuvable.
Résolution automatique
Sélectionnez Délier pour résoudre automatiquement ce problème en supprimant la liaison de source de données manquante.
Résolution manuelle
Option 1
Déliez le champ de modèle de données X pour arrêter de faire référence à la source de données Y inexistante.
Option 2
Dans le concepteur de la mise en correspondance des modèles, dans le volet Sources de données, supprimez la source de données Y à nouveau.
Capacité d’exécution d’une expression avec la fonction FILTER
La fonction ER FILTER intégrée est utilisée pour accéder aux tables et aux vues d’application, ou aux entités de données en effectuant un seul appel SQL pour obtenir les données requises sous forme de liste d’enregistrements. Une source de données de type Liste des enregistrements est utilisée comme argument de cette fonction et spécifie la source de l’application pour l’appel. ER vérifie si une requête SQL directe peut être établie vers une source de données référencée dans la fonction FILTER
. Si une requête directe ne peut pas être établie, une erreur de validation se produit dans le concepteur de modèle de mappage ER. Le message que vous recevez indique que l’expression ER qui inclut la fonction FILTER
ne peut pas être exécutée au moment de l’exécution.
Les étapes suivantes montrent comment ce problème peut se produire.
Commencez à configurer le composant de modèle de mappage ER.
Ajoutez une source de données du type Dynamics 365 for Operations \ Enregistrements de la table.
Nommez la nouvelle source de données Vendor (fournisseur). Dans le champ Table, sélectionnez VendTable (table fournisseur) pour spécifier que cette source de données demandera la table VendTable.
Ajoutez une source de données du type Champ calculé.
Nommez la nouvelle source de données FilteredVendor (fournisseur filtré) et configurez-la pour qu’elle contienne l’expression
FILTER(Vendor, Vendor.AccountNum="US-101")
.Sélectionnez Valider pour inspecter le composant de modèle de mappage modifiable sur la page Concepteur de modèle de mappage et vérifiez que l’expression
FILTER(Vendor, Vendor.AccountNum="US-101")
dans la source de données Vendor peut être interrogée.Modifiez la source de données Vendor en ajoutant un champ imbriqué de type Champ calculé pour obtenir le numéro de compte du fournisseur tronqué.
Nommez le nouveau champ imbriqué $AccNumber et configurez-le pour qu’il contienne l’expression
TRIM(Vendor.AccountNum)
.Sélectionnez Valider pour inspecter le composant de modèle de mappage modifiable sur la page Concepteur de modèle de mappage et vérifiez que l’expression
FILTER(Vendor, Vendor.AccountNum="US-101")
dans la source de données Vendor peut être interrogée.Notez qu’une erreur de validation se produit, car la source de données Vendor contient un champ imbriqué du type Champ calculé qui n’autorise pas l’expression de la source de données FilteredVendor à convertir dans l’instruction SQL directe.
L’illustration suivante montre l’erreur de runtime qui se produit si vous ignorez l’avertissement et sélectionnez Exécuter pour exécuter un format configuré pour utiliser le modèle de mappage.
Résolution automatique
Aucune option pour résoudre automatiquement ce problème n’est disponible.
Résolution manuelle
Option 1
Au lieu d’ajouter un champ imbriqué du type Champ calculé à la source de données Vendor, ajoutez le champ imbriqué $AccNumber à la source de données FilteredVendor et configurez-le pour qu’il contienne l’expression TRIM(FilteredVendor.AccountNum)
. De cette façon, l’expression FILTER(Vendor, Vendor.AccountNum="US-101")
peut être exécutée au niveau de SQL et calculer le champ imbriqué $AccNumber par la suite.
Option 2
Changez l’expression de la source de données FilteredVendor de FILTER(Vendor, Vendor.AccountNum="US-101")
en WHERE(Vendor, Vendor.AccountNum="US-101")
. Nous vous déconseillons de modifier l’expression d’une table contenant un grand volume de données (table transactionnelle), car tous les enregistrements seront récupérés et la sélection des enregistrements requis sera effectuée en mémoire. Par conséquent, cette approche peut entraîner de mauvaises performances. Pour plus d’informations, consultez Fonction ER WHERE.
Capacité d’exécution d’une source de données GROUPBY
La source de données GROUPBY divise le résultat de la requête en groupes d’enregistrements, généralement dans le but d’effectuer une ou plusieurs agrégations sur chaque groupe. Chaque source de données GROUPBY peut être configurée pour être exécutée au niveau de la base de données ou en mémoire. Lorsqu’une source de données GROUPBY est configurée de manière à être exécutée au niveau de la base de données, ER vérifie si une requête SQL directe peut être établie vers une source de données référencée dans cette source de données. Si une requête directe ne peut pas être établie, une erreur de validation se produit dans le concepteur de modèle de mappage ER. Le message que vous recevez indique que la source de données GROUPBY ne peut pas être exécutée au moment du runtime.
Les étapes suivantes montrent comment ce problème peut se produire.
Commencez à configurer le composant de modèle de mappage ER.
Ajoutez une source de données du type Dynamics 365 for Operations \ Enregistrements de la table.
Nommez la nouvelle source de données Trans. Dans le champ Table, sélectionnez VendTrans pour spécifier que cette source de données demandera la table VendTrans.
Ajoutez une source de données du type Grouper par.
Nommez la nouvelle source de données GroupedTrans, et configurez-la de la manière suivante :
- Sélectionnez la source de données Trans comme source des enregistrements à regrouper.
- Dans le champ Lieu d’exécution, sélectionnez Requête pour indiquer que vous souhaitez exécuter cette source de données au niveau de la base de données.
Sélectionnez Valider pour inspecter le composant de modèle de mappage modifiable sur la page Concepteur de modèle de mappage et vérifiez que la source de données GroupedTrans configurée peut être interrogée.
Modifiez la source de données Trans en ajoutant un champ imbriqué de type Champ calculé pour obtenir le numéro de compte du fournisseur tronqué.
Nommez la nouvelle source de données $AccNumber et configurez-la pour qu’elle contienne l’expression
TRIM(Trans.AccountNum)
.Sélectionnez Valider pour inspecter le composant de modèle de mappage modifiable sur la page Concepteur de modèle de mappage et vérifiez que la source de données GroupedTrans configurée peut être interrogée.
Notez qu’une erreur de validation se produit, car la source de données Trans contient un champ imbriqué du type Champ calculé qui n’autorise pas l’appel de la source de données GroupedTrans à convertir dans l’instruction SQL directe.
L’illustration suivante montre l’erreur de runtime qui se produit si vous ignorez l’avertissement et sélectionnez Exécuter pour exécuter un format configuré pour utiliser le modèle de mappage.
Résolution automatique
Aucune option pour résoudre automatiquement ce problème n’est disponible.
Résolution manuelle
Option 1
Au lieu d’ajouter un champ imbriqué du type Champ calculé à la source de données Trans, ajoutez le champ imbriqué $AccNumber de l’élément GroupedTrans.lines de la source de données GroupedTrans et configurez-le pour qu’il contienne l’expression TRIM(GroupedTrans.lines.AccountNum)
. De cette façon, la source de données GroupedTrans peut être exécutée au niveau de SQL et calculer le champ imbriqué $AccNumber par la suite.
Option 2
Changer la valeur du champ Emplacement d’exécution pour la source de données GroupedTrans de Requête à En mémoire. Nous vous déconseillons de modifier la valeur d’une table contenant un grand volume de données (table transactionnelle), car tous les enregistrements seront récupérés et le groupement et l’agrégation seront effectués en mémoire. Par conséquent, cette approche peut entraîner de mauvaises performances.
Capacité d’exécution d’une source de données JOIN
La source de données JOINDRE combine les enregistrements de deux ou plusieurs tables de base de données, en fonction des champs associés. Chaque source de données JOIN peut être configurée pour être exécutée au niveau de la base de données ou en mémoire. Lorsqu’une source de données JOIN est configurée de manière à être exécutée au niveau de la base de données, ER vérifie si une requête SQL directe peut être établie vers des sources de données référencées dans cette source de données. Si une requête SQL directe ne peut pas être établie avec au moins une source de données référencée, une erreur de validation se produit dans le concepteur de modèle de mappage ER. Le message que vous recevez indique que la source de données JOIN ne peut pas être exécutée au moment du runtime.
Les étapes suivantes montrent comment ce problème peut se produire.
Commencez à configurer le composant de modèle de mappage ER.
Ajoutez une source de données du type Dynamics 365 for Operations \ Enregistrements de la table.
Nommez la nouvelle source de données Vendor (fournisseur). Dans le champ Table, sélectionnez VendTable (table fournisseur) pour spécifier que cette source de données demandera la table VendTable.
Ajoutez une source de données du type Dynamics 365 for Operations \ Enregistrements de la table.
Nommez la nouvelle source de données Trans. Dans le champ Table, sélectionnez VendTrans pour spécifier que cette source de données demandera la table VendTrans.
Ajoutez une source de données du type Champ calculé comme champ imbriqué de la source de données Vendor.
Nommez la nouvelle source de données FilteredTrans (conversion filtrée) et configurez-la pour qu’elle contienne l’expression
FILTER(Trans, Trans.AccountNum=Vendor.AccountNum)
.Ajoutez une source de données du type Joindre.
Nommez la nouvelle source de données JoinedList, et configurez-la de la manière suivante :
- Ajouter la source de données Vendor comme premier ensemble d’enregistrements à joindre.
- Ajouter la source de données Vendor.FilteredTrans comme second ensemble d’enregistrements à joindre. Sélectionnez INNER comme type.
- Dans le champ Exécuter, sélectionnez Requête pour indiquer que vous souhaitez exécuter cette source de données au niveau de la base de données.
Sélectionnez Valider pour inspecter le composant de modèle de mappage modifiable sur la page Concepteur de modèle de mappage et vérifiez que la source de données JoinedList configurée peut être interrogée.
Changez l’expression de la source de données Vendor.FilteredTrans de
FILTER(Trans, Trans.AccountNum=Vendor.AccountNum)
enWHERE(Trans, Trans.AccountNum=Vendor.AccountNum)
.Sélectionnez Valider pour inspecter le composant de modèle de mappage modifiable sur la page Concepteur de modèle de mappage et vérifiez que la source de données JoinedList configurée peut être interrogée.
Notez qu’une erreur de validation se produit, car l’expression de la source de données Vendor.FilteredTrans ne peut pas être convertie en appel SQL direct. De plus, l’appel SQL direct n’autorise pas l’appel de la source de données JoinedList à convertir en instruction SQL directe.
L’illustration suivante montre l’erreur de runtime qui se produit si vous ignorez l’avertissement et sélectionnez Exécuter pour exécuter un format configuré pour utiliser le modèle de mappage.
Résolution automatique
Aucune option pour résoudre automatiquement ce problème n’est disponible.
Résolution manuelle
Option 1
Changez de nouveau l’expression de la source de données Vendor.FilteredTrans de WHERE(Trans, Trans.AccountNum=Vendor.AccountNum)
en FILTER(Trans, Trans.AccountNum=Vendor.AccountNum)
, comme le conseille l’avertissement.
Option 2
Changez la valeur du champ Exécuter pour la source de données JoinedList de Requête à En mémoire. Nous vous déconseillons de modifier la valeur d’une table contenant un grand volume de données (table transactionnelle), car tous les enregistrements seront récupérés et la jonction sera effectuée en mémoire. Par conséquent, cette approche peut entraîner de mauvaises performances. Un avertissement de validation s’affiche pour vous informer de ce risque.
Préférence de la fonction FILTER comparée à WHERE
La fonction ER FILTER intégrée est utilisée pour accéder aux tables et aux vues d’application, ou aux entités de données en effectuant un seul appel SQL pour obtenir les données requises sous forme de liste d’enregistrements. La fonction WHERE récupère tous les enregistrements de la source donnée et enregistre la sélection en mémoire. Une source de données de type Liste des enregistrements est utilisée comme argument des deux fonctions et spécifie une source pour obtenir des enregistrements. ER vérifie si un appel SQL direct peut être établie vers une source de données référencée dans la fonction WHERE. Si un appel direct ne peut pas être établie, un avertissement de validation se produit dans le concepteur de modèle de mappage ER. Le message que vous recevez vous recommande d’utiliser la fonction FILTER au lieu de la fonction WHERE pour aider à améliorer l’efficacité.
Les étapes suivantes montrent comment ce problème peut se produire.
Commencez à configurer le composant de modèle de mappage ER.
Ajoutez une source de données du type Dynamics 365 for Operations \ Enregistrements de la table.
Nommez la nouvelle source de données Trans. Dans le champ Table, sélectionnez VendTrans pour spécifier que cette source de données demandera la table VendTrans.
Ajoutez une source de données du type Champ calculé comme champ imbriqué de la source de données Vendor.
Nommez la nouvelle source de données FilteredTrans (conversion filtrée) et configurez-la pour qu’elle contienne l’expression
WHERE(Trans, Trans.AccountNum="US-101")
.Ajoutez une source de données du type Dynamics 365 for Operations \ Enregistrements de la table.
Nommez la nouvelle source de données Vendor (fournisseur). Dans le champ Table, sélectionnez VendTable (table fournisseur) pour spécifier que cette source de données demandera la table VendTable.
Ajoutez une source de données du type Champ calculé.
Nommez la nouvelle source de données FilteredVendor (fournisseur filtré) et configurez-la pour qu’elle contienne l’expression
WHERE(Vendor, Vendor.AccountNum="US-101")
.Sélectionnez Valider pour inspecter le composant de mappage de modèle modifiable sur le Concepteur de modèle de mappage.
Notez que les avertissements de validation vous recommandent d’utiliser la fonction FILTER au lieu de la fonction WHERE pour les sources de données FilteredVendor et FilteredTrans.
Résolution automatique
Sélectionnez Corriger pour remplacer automatiquement la fonction WHERE par la fonction FILTER dans l’expression de toutes les sources de données qui apparaissent dans la grille de l’onglet Avertissements pour ce type d’inspection.
Sinon, vous pouvez sélectionner la ligne pour un seul avertissement dans la grille, puis sélectionner Corriger la sélection. Dans ce cas, l’expression est automatiquement modifiée uniquement dans la source de données mentionnée dans l’avertissement sélectionné.
Résolution manuelle
Vous pouvez ajuster manuellement les expressions de toutes les sources de données mentionnées dans la grille de validation en remplaçant la fonction WHERE par la fonction FILTER.
Préférence de la fonction ALLITEMSQUERY comparée à ALLITEMS
Les fonctions d’ER ALLITEMS et ALLITEMSQUERY intégrées sont utilisées pour obtenir une valeur Liste des enregistrements aplatie qui consiste en une liste d’enregistrements représentant tous les éléments qui correspondent au chemin d’accès spécifié. ER vérifie si un appel SQL direct peut être établie vers une source de données référencée dans la fonction ALLITEMS. Si un appel direct ne peut pas être établie, un avertissement de validation se produit dans le concepteur de modèle de mappage ER. Le message que vous recevez vous recommande d’utiliser la fonction ALLITEMSQUERY au lieu de la fonction ALLITEMS pour aider à améliorer l’efficacité.
Les étapes suivantes montrent comment ce problème peut se produire.
Commencez à configurer le composant de modèle de mappage ER.
Ajoutez une source de données du type Dynamics 365 for Operations \ Enregistrements de la table.
Nommez la nouvelle source de données Vendor (fournisseur). Dans le champ Table, sélectionnez VendTable (table fournisseur) pour spécifier que cette source de données demandera la table VendTable.
Ajoutez une source de données paramétrée du type Champ calculé pour obtenir les enregistrements de plusieurs fournisseurs.
Nommez la nouvelle source de données FilteredVendor (fournisseur filtré) et configurez-la pour qu’elle contienne l’expression
FILTER(Vendor, OR(Vendor.AccountNum="US-101",Vendor.AccountNum="US-102"))
.Ajoutez une source de données du type Champ calculé pour obtenir les transactions de tous les fournisseurs filtrés.
Nommez la nouvelle source de données FilteredVendorTrans (conversion du fournisseur filtré) et configurez-la pour qu’elle contienne l’expression
ALLITEMS(FilteredVendor.'<Relations'.'VendTrans.VendTable_AccountNum')
.Sélectionnez Valider pour inspecter le composant de mappage de modèle modifiable sur le Concepteur de modèle de mappage.
Notez qu’un avertissement de validation se produit. Le message vous recommande d’utiliser la fonction ALLITEMSQUERY au lieu de la fonction ALLITEMS pour la source de données FilteredVendorTrans.
Résolution automatique
Sélectionnez Corriger pour remplacer automatiquement la fonction ALLITEMS par la fonction ALLITEMSQUERY dans l’expression de toutes les sources de données qui apparaissent dans la grille de l’onglet Avertissements pour ce type d’inspection.
Sinon, vous pouvez sélectionner la ligne pour un seul avertissement dans la grille, puis sélectionner Corriger la sélection. Dans ce cas, l’expression est automatiquement modifiée uniquement dans la source de données mentionnée dans l’avertissement sélectionné.
Résolution manuelle
Vous pouvez ajuster manuellement les expressions de toutes les sources de données mentionnées dans la grille de validation en remplaçant la fonction ALLITEMS par la fonction ALLITEMSQUERY.
Prise en compte des cas de liste vide
Vous pouvez configurer votre format ER ou votre composant de modèle de mappage pour obtenir la valeur de champ d’une source de données de type Liste des enregistrements. ER vérifie si votre conception prend en compte le cas où une source de données appelée ne contient aucun enregistrement (c’est-à-dire qu’elle est vide), pour éviter les erreurs de runtime lorsqu’une valeur est extraite d’un champ d’un enregistrement inexistant.
Les étapes suivantes montrent comment ce problème peut se produire.
Commencez à configurer simultanément le modèle de données ER, le modèle de mappage d’ER et les composants de format ER.
Dans l’arborescence du modèle de données, ajoutez un élément racine nommé Root3.
Modifiez l’élément Root3 en ajoutant un élément imbriqué de type Liste des enregistrements.
Nommez le nouvel élément imbriqué Vendor.
Modifier l’élément Vendor de la manière suivante :
- Ajoutez un champ imbriqué du type Chaîne et nommez-le Nom.
- Ajoutez un champ imbriqué du type Chaîne et nommez-le AccountNumber.
Dans le concepteur de la mise en correspondance des modèles, dans le volet Sources de données, ajoutez une source de données de type Dynamics 365 for Operations \ Enregistrements de la table.
Nommez la nouvelle source de données Vendor (fournisseur). Dans le champ Table, sélectionnez VendTable (table fournisseur) pour spécifier que cette source de données demandera la table VendTable.
Ajoutez une source de données du type Général \ Paramètre d’entrée utilisateur pour rechercher un compte fournisseur dans la boîte de dialogue de runtime.
Nommez la nouvelle source de données RequestedAccountNum. Dans le champ Étiquette, entrez le numéro de compte fournisseur. Dans le champ Nom du type de données des opérations, laissez la valeur par défaut, Description.
Ajoutez une source de données paramétrée du type Champ calculé pour le fournisseur filtré qui fait l’objet de l’interrogation.
Nommez la nouvelle source de données FilteredVendor (fournisseur filtré) et configurez-la pour qu’elle contienne l’expression
FILTER(Vendor, Vendor.AccountNum=RequestedAccountNum)
.Liez les éléments de modèle de données aux sources de données configurées de la manière suivante :
- Liez FilteredVendor à Vendor.
- Lierz FilteredVendor.AccountNum à Vendor.AccountNumber.
- Liez FilteredVendor.’name()’ à Vendor.Name.
Dans l’arborescence de la structure du format, ajoutez les éléments suivants pour générer un document sortant au format XML contenant les détails du fournisseur :
Ajoutez l’élément XML racine Instruction.
Pour l’élément XML Instruction, ajoutez l’élément XML Tiers.
Pour l’élément XML Tiers, ajoutez les attributs XML imbriqués suivants :
- Nom
- AccountNum
Liez les éléments de format aux sources de données fournies de la manière suivante :
- Liez l’élément de format Instruction\Tiers\Nom au champ de source de données model.Vendor.Name.
- Liez l’élément de format Instruction\Tiers\AccountNum au champ de source de données model.Vendor.AccountNumber.
Sélectionnez Valider pour inspecter le composant de format modifiable sur la page Concepteur de format.
Notez qu’une erreur de validation se produit. Le message indique qu’une erreur peut être générée pour les composants de format Instruction\Tiers\Nom et Instruction\Tiers\AccountNum lors du runtime si la liste
model.Vendor
est vide.
L’illustration suivante montre l’erreur de runtime qui se produit si vous ignorez l’avertissement et sélectionnez Exécuter pour exécuter le format et sélectionnez le numéro de compte d’un fournisseur non existant. Comme le fournisseur demandé n’existe pas, la liste model.Vendor
sera vide (c’est-à-dire qu’elle ne contiendra aucun enregistrement).
Résolution automatique
Pour la ligne sélectionnée dans la grille sur l’onglet Avertissements, vous pouvez sélectionner Délier. La liaison pointée vers la colonne Chemin d’accès est automatiquement supprimée des éléments de format.
Résolution manuelle
Option 1
Vous pouvez lier l’élément de format Instruction\Tiers\Nom à l’élément de source de données model.Vendor
. Au moment du runtime, cette liaison appelle la source de données model.Vendor
en premier. Quand model.Vendor
renvoie une liste d’enregistrements vide, les éléments de format imbriqués ne sont pas exécutés. Par conséquent, aucun avertissement de validation ne se produit pour cette configuration de format.
Option 2
Changez la liaison de l’élément de format Instruction\Tiers\Nom entre model.Vendor.Name
et FIRSTORNULL(model.Vendor).Name
. La liaison mise à jour convertit de manière conditionnelle le premier enregistrement de la source de données model.Vendor
de type Liste des enregistrements en une nouvelle source de données de type Enregistrement. Cette nouvelle source de données contient le même ensemble de champs.
- Si au moins un enregistrement est disponible dans la source de données
model.Vendor
, les champs de cet enregistrement sont remplis avec les valeurs des champs du premier enregistrement de la source de donnéesmodel.Vendor
. Dans ce cas, la liaison mise à jour renvoie le nom du fournisseur. - Sinon, chaque champ de l’enregistrement créé est rempli avec la valeur par défaut du type de données de ce champ. Dans ce cas, la chaîne vide est renvoyée comme valeur par défaut du type de données Chaîne.
Par conséquent, aucun avertissement de validation n’apparaît pour l’élément de format Instruction\Tiers\Nom lorsqu’il est lié à l’expression FIRSTORNULL(model.Vendor).Name
.
Option 3
Si vous souhaitez spécifier explicitement les données entrées dans un document généré lorsque la source de données model.Vendor
de type Liste des enregistrements ne renvoie aucun enregistrement (le texte Indisponible dans cet exemple), modifiez la liaison de l’élément de format Instruction\Tiers\Nom entre model.Vendor.Name
et IF(NOT(ISEMPTY(model.Vendor)), model.Vendor.Name, "Not available")
. Vous pouvez également utiliser l’expression IF(COUNT(model.Vendor)=0, model.Vendor.Name, "Not available")
.
Considération supplémentaire
L’inspection vous avertit également d’un autre problème potentiel. Par défaut, lorsque vous liez les éléments de format Instruction\Tiers\Nom et Instruction\Tiers\AccountNum aux champs appropriés de la source de donnéesmodel.Vendor
de type Liste des enregistrements, ces liaisons seront exécutées et prendront les valeurs des champs appropriés du premier enregistrement de la source de données model.Vendor
, si cette liste n’est pas vide.
Comme vous n’avez pas lié l’élément de format Instruction\Tiers avec la source de données model.Vendor
, l’élément Instruction\Tiers ne sera pas répété pour chaque enregistrement de la source de données model.Vendor
pendant l’exécution du format. Au lieu de cela, un document généré sera rempli avec des informations provenant uniquement du premier enregistrement de la liste d’enregistrements, si cette liste contient plusieurs enregistrements. Par conséquent, il peut y avoir un problème si le format est destiné à remplir un document généré avec des informations sur tous les fournisseurs de la source de données model.Vendor
. Pour résoudre ce problème, liez l’élément Instruction\Tiers à la source de données model.Vendor
.
Capacité d’exécution d’une expression avec la fonction FILTER (mise en cache)
Plusieurs fonctions ER intégrées, notamment FILTER et ALLITEMSQUERY, sont utilisées pour accéder aux tables et aux vues d’application, ou aux entités de données en effectuant un seul appel SQL pour obtenir les données requises sous forme de liste d’enregistrements. Une source de données de type Liste des enregistrements est utilisée comme argument de chacune de ces fonctions et spécifie la source de l’application pour l’appel. ER vérifie si un appel SQL direct peut être établie vers une source de données référencée dans l’une de ces fonctions. Si un appel direct ne peut pas être établi, car la source de données a été marquée comme mise en cache, une erreur de validation se produit dans le concepteur de modèle de mappage ER. Le message que vous recevez indique que l’expression ER qui inclut l’une de ces fonctions ne peut pas être exécutée au moment du runtime.
Les étapes suivantes montrent comment ce problème peut se produire.
Commencez à configurer le composant de modèle de mappage ER.
Ajoutez une source de données du type Dynamics 365 for Operations \ Enregistrements de la table.
Nommez la nouvelle source de données Vendor (fournisseur). Dans le champ Table, sélectionnez VendTable (table fournisseur) pour spécifier que cette source de données demandera la table VendTable.
Ajoutez une source de données du type Général \ Paramètre d’entrée utilisateur pour rechercher un compte fournisseur dans la boîte de dialogue de runtime.
Nommez la nouvelle source de données RequestedAccountNum. Dans le champ Étiquette, entrez le numéro de compte fournisseur. Dans le champ Nom du type de données des opérations, laissez la valeur par défaut, Description.
Ajoutez une source de données paramétrée du type Champ calculé pour le fournisseur filtré qui fait l’objet de l’interrogation.
Nommez la nouvelle source de données FilteredVendor (fournisseur filtré) et configurez-la pour qu’elle contienne l’expression
FILTER(Vendor, Vendor.AccountNum=RequestedAccountNum)
.Marquez la source de données Vendor configurée comme mise en cache.
Sélectionnez Valider pour inspecter le composant de mappage de modèle modifiable sur le Concepteur de modèle de mappage.
Notez qu’une erreur de validation se produit. Le message indique que la fonction FILTER ne peut pas être appliquée à la source de données Vendor mise en cache.
L’illustration suivante montre l’erreur de runtime qui se produit si vous ignorez l’avertissement et sélectionnez Exécuter pour exécuter le format.
Résolution automatique
Aucune option pour résoudre automatiquement ce problème n’est disponible.
Résolution manuelle
Option 1
Supprimez l’indicateur Cache de la source de données Fournisseur. La source de données FilteredVendor deviendra alors exécutable, mais la source de données Fournisseur référencée dans la table VendTable sera accédée chaque fois que la source de données FilteredVendor est appelée.
Option 2
Changez l’expression de la source de données FilteredVendor de FILTER(Vendor, Vendor.AccountNum="US-101")
en WHERE(Vendor, Vendor.AccountNum="US-101")
. Dans ce cas, la source de données Fournisseur mentionnée dans la table VendTable ne sera accessible que lors du premier appel de la source de données Fournisseur. Cependant, la sélection des enregistrements se fera en mémoire. Par conséquent, cette approche peut entraîner de mauvaises performances.
Liaison manquante
Lorsque vous configurez un composant de format ER, le modèle de données ER de base est proposé comme source de données par défaut pour le format ER. Lorsque le format ER configuré est exécuté, le mappage de modèle par défaut pour le modèle de base est utilisé pour remplir le modèle de données avec des données d’application. Le concepteur de format ER affiche un avertissement si vous liez un élément de format à un élément de modèle de données qui n’est lié à aucune source de données dans le mappage de modèle actuellement sélectionné comme mappage de modèle par défaut pour le format modifiable. Ce type de liaison ne peut pas être exécuté au moment de l’exécution, car le format qui s’exécute ne peut pas remplir un élément lié avec des données d’application. Par conséquent, une erreur se produit lors du runtime.
Les étapes suivantes montrent comment ce problème peut se produire.
Commencez à configurer simultanément le modèle de données ER, le modèle de mappage d’ER et les composants de format ER.
Dans l’arborescence du modèle de données, ajoutez un élément racine nommé Root3.
Modifiez l’élément Root3 en ajoutant un nouvel élément imbriqué de type Liste des enregistrements.
Nommez le nouvel élément imbriqué Vendor.
Modifier l’élément Vendor de la manière suivante :
- Ajoutez un champ imbriqué du type Chaîne et nommez-le Nom.
- Ajoutez un champ imbriqué du type Chaîne et nommez-le AccountNumber.
Dans le concepteur de la mise en correspondance des modèles, dans le volet Sources de données, ajoutez une source de données de type Dynamics 365 for Operations \ Enregistrements de la table.
Nommez la nouvelle source de données Vendor (fournisseur). Dans le champ Table, sélectionnez VendTable (table fournisseur) pour spécifier que cette source de données demandera la table VendTable.
Ajoutez une source de données du type Général \ Paramètre d’entrée utilisateur pour interroger sur un compte fournisseur dans la boîte de dialogue de runtime.
Nommez la nouvelle source de données RequestedAccountNum. Dans le champ Étiquette, entrez le numéro de compte fournisseur. Dans le champ Nom du type de données des opérations, laissez la valeur par défaut, Description.
Ajoutez une source de données paramétrée du type Champ calculé pour le fournisseur filtré qui fait l’objet de l’interrogation.
Nommez la nouvelle source de données FilteredVendor (fournisseur filtré) et configurez-la pour qu’elle contienne l’expression
FILTER(Vendor, Vendor.AccountNum=RequestedAccountNum)
.Liez les éléments de modèle de données aux sources de données configurées de la manière suivante :
- Liez FilteredVendor à Vendor.
- Lierz FilteredVendor.AccountNum à Vendor.AccountNumber.
Note
Le champ du modèle de données Vendor.Name reste non lié.
Dans l’arborescence de la structure du format, ajoutez les éléments suivants pour générer un document sortant au format XML contenant les détails du fournisseur interrogés :
Ajoutez l’élément XML racine Instruction.
Pour l’élément XML Instruction, ajoutez l’élément XML Tiers.
Pour l’élément XML Tiers, ajoutez les attributs XML imbriqués suivants :
- Nom
- AccountNum
Liez les éléments de format aux sources de données fournies de la manière suivante :
- Liez l’élément de format Instruction\Tiers à l’élément de source de données
model.Vendor
. - Liez l’élément de format Instruction\Tiers\Nom au champ de source de données model.Vendor.Name.
- Liez l’élément de format Instruction\Tiers\AccountNum au champ de source de données model.Vendor.AccountNumber.
- Liez l’élément de format Instruction\Tiers à l’élément de source de données
Sélectionnez Valider pour inspecter le composant de format modifiable sur la page Concepteur de format.
Notez qu’un avertissement de validation se produit. Le message indique que le champ de source de données model.Vendor.Name n’est lié à aucune source de données dans le mappage de modèle configuré pour être utilisé par le format. Par conséquent, l’élément de format Déclaration\Tiers\Nom peut ne pas être rempli lors du runtime et une exception de runtime peut se produire.
L’illustration suivante montre l’erreur de runtime qui se produit si vous ignorez l’avertissement et sélectionnez Exécuter pour exécuter le format.
Résolution automatique
Aucune option pour résoudre automatiquement ce problème n’est disponible.
Résolution manuelle
Option 1
Modifiez le mappage de modèle configuré en ajoutant une liaison pour le champ de source de données model.Vendor.Name.
Option 2
Modifiez le format configuré en supprimant la liaison pour l’élément de format Déclaration\Tiers\Nom.
Modèle non lié
Lorsque vous configurez manuellement un composant de format ER pour utiliser un modèle pour générer un document sortant, vous devez ajouter manuellement l’élément Excel\Fichier, ajouter le modèle requis en tant que pièce jointe du composant modifiable et sélectionner cette pièce jointe dans l’élément Excel\ Fichier ajouté. De cette manière, vous indiquez que l’élément ajouté remplira le modèle sélectionné au runtime. Lorsque vous configurez une version de composant de format dans le statut Brouillon, vous pouvez ajouter plusieurs modèles au composant modifiable, puis sélectionner chaque modèle dans l’élément Excel\Fichier pour exécuter le format ER. De cette façon, vous pouvez voir comment les différents modèles sont remplis au moment du runtime. Si vous avez des modèles qui ne sont sélectionnés dans aucun élément Excel\Fichier, le concepteur de format ER vous avertit que ces modèles seront supprimés de la version modifiable du composant de format ER lorsque son statut passe de Brouillon à Terminé.
Les étapes suivantes montrent comment ce problème peut se produire.
Commencez à configurer le composant de format ER.
Dans l’arborescence de la structure des formats, ajoutez l’élément Excel\Fichier.
Pour l’élément Excel\Fichier que vous venez d’ajouter, ajoutez un fichier de classeur Excel, A.xlsx, en pièce jointe. Utilisez le type de document configuré dans les paramètres ER pour spécifier le stockage des modèles au format ER.
Pour l’élément Excel\Fichier que vous venez d’ajouter, ajoutez un autre fichier de classeur Excel, B.xlsx, en pièce jointe. Utilisez le même type de document que celui utilisé pour le fichier de classeur A.
Dans l’élément Excel\Fichier, sélectionnez le fichier de classeur A.
Sélectionnez Valider pour inspecter le composant de format modifiable sur la page Concepteur de format.
Notez qu’un avertissement de validation se produit. Le message indique que le fichier de classeur B.xlsx n’est lié à aucun composant, et qu’il sera supprimé une fois le statut de la version de configuration modifié.
Résolution automatique
Aucune option pour résoudre automatiquement ce problème n’est disponible.
Résolution manuelle
Modifiez le format configuré en supprimant tous les modèles qui ne sont liés à aucun élément Excel\Fichier.
Format non synchronisé
Lorsque vous configurez un composant de format ER pour utiliser un modèle Excel pour générer un document sortant, vous devez ajouter manuellement l’élément Excel\Fichier, ajouter le modèle requis en tant que pièce jointe du composant modifiable et sélectionner cette pièce jointe dans l’élément Excel\Fichier ajouté. De cette manière, vous indiquez que l’élément ajouté remplira le modèle sélectionné au runtime. Étant donné que le modèle Excel ajouté a été conçu en externe, le format ER modifiable peut contenir des noms Excel qui manquent dans le modèle ajouté. Le concepteur de format ER vous avertit de toute incohérence entre les propriétés des éléments de format ER qui font référence à des noms qui ne sont pas inclus dans le modèle Excel ajouté.
Les étapes suivantes montrent comment ce problème peut se produire.
Commencez à configurer le composant de format ER.
Dans l’arborescence de la structure des formats, ajoutez l’élément Excel\FicherRapport.
Pour l’élément Excel\Fichier que vous venez d’ajouter, ajoutez un fichier de classeur Excel, A.xlsx, en pièce jointe. Utilisez le type de document configuré dans les paramètres ER pour spécifier le stockage des modèles au format ER.
Important
Assurez-vous que le classeur Excel ajouté ne contient pas le nom ReportTitle.
Ajoutez l’élément Excel\CelluleTitre en tant qu’élément imbriqué de l’élément Rapport. Dans le champ Plage Excel, entrez ReportTitle.
Sélectionnez Valider pour inspecter le composant de format modifiable sur la page Concepteur de format.
Notez qu’un avertissement de validation se produit. Le message indique que le nom ReportTitle n’existe pas sur la feuille Feuille1 du modèle Excel que vous utilisez.
Résolution automatique
Aucune option pour résoudre automatiquement ce problème n’est disponible.
Résolution manuelle
Option 1
Modifiez le format configuré en supprimant tous les éléments qui font référence à des noms Excel manquants dans le modèle.
Option 2
Mettez à jour le format ER modifiable en important un modèle Excel. La structure du format ER modifiable sera synchronisé avec la structure du modèle Excel importé.
Considération supplémentaire
Pour savoir comment la structure de format peut être synchronisée avec un modèle ER dans l’éditeur de modèle de Gestion des documents commerciaux, voir Mettre à jour la structure d’un modèle de document commercial.
Non synchronisé avec un format de modèle Word
Lorsque vous configurez un composant de format ER pour utiliser un modèle Word pour générer un document sortant, vous devez ajouter manuellement l’élément Excel\Fichier, ajouter le modèle Word requis en tant que pièce jointe du composant modifiable et sélectionner cette pièce jointe dans l’élément Excel\Fichier ajouté.
Note
Lorsque le document Word est joint, le concepteur de format ER présente l’élément modifiable comme Word\Fichier.
De cette manière, vous indiquez que l’élément ajouté remplira le modèle sélectionné au runtime. Étant donné que le modèle Word ajouté a été conçu en externe, le format ER modifiable peut contenir des références à des contrôles de contenu Word qui manquent dans le modèle ajouté. Le concepteur de format ER vous avertit de toute incohérence entre les propriétés des éléments de format ER qui font référence à des contrôles de contenu qui ne sont pas inclus dans le modèle Word ajouté.
Pour consulter un exemple qui montre comment ce problème peut se produire, voir Configurer le format modifiable pour supprimer la section récapitulative.
Résolution automatique
Aucune option pour résoudre automatiquement ce problème n’est disponible.
Résolution manuelle
Option 1
Modifiez le format configuré en supprimant la formule Supprimé de l’élément de format mentionné dans l’avertissement de validation.
Option 2
Modifiez le modèle Word en ajoutant la balise requise au contrôle de contenu Word concerné.
Pas de mise en correspondance par défaut
Quand l’inspection Liaison manquante est effectuée, les liaisons de format inspectées sont évaluées par rapport aux liaisons du composant de mise en correspondance des modèles concerné. Étant donné que vous pouvez importer plusieurs configurations de mise en correspondance des modèles ER dans votre instance Finance et que chaque configuration peut contenir le composant de mise en correspondance des modèles applicable, une configuration doit être sélectionnée comme configuration par défaut. Sinon, lorsque vous essayez d’exécuter, de modifier ou de valider le format ER inspecté, une exception se produit et vous recevez le message suivant : « Il existe plusieurs mises en correspondance des modèles pour le modèle de données < model name (root descriptor)> dans les configurations <configuration names separated by comma>. Définir l’une des configurations par défaut. »
Pour obtenir un exemple qui montre comment ce problème peut se produire et comment il peut être résolu, voir Gérer plusieurs mappages dérivés pour une seule racine de modèle.
Paramétrage incohérent des composants d’en-tête ou de pied de page
Lorsque vous configurez un composant de format ER pour utiliser un modèle Excel pour générer un document sortant, vous pouvez ajouter le composant Excel\En-tête pour remplir les en-têtes en haut d’une feuille de calcul dans un classeur Excel. Vous pouvez également ajouter le composant Excel\Pied de page pour remplir les pieds de page au bas d’une feuille de calcul. Pour chaque composant Excel\En-tête ou Excel\Pied de page que vous ajoutez, vous devez définir la propriété Apparence en-tête/pied de page pour spécifier les pages pour lesquelles le composant est exécuté. Comme vous pouvez configurer plusieurs composants Excel\En-tête ou Excel\Pied de page pour un seul composant Feuille et comme vous pouvez générer différents en-têtes ou pieds de page pour différents types de pages dans une feuille de calcul Excel, vous devez configurer un seul composant Excel\En-tête ou Excel\Pied de page pour une valeur spécifique de la propriété Apparence en-tête/pied de page. Si plusieurs composants Excel\En-tête ou Excel\Pied de page sont configurés pour une valeur spécifique de la propriété Apparence en-tête/pied de page, une erreur de validation se produit et le message d’erreur suivant s’affiche : « Les en-têtes/pieds de page (<type de composant : en-tête ou pied de page>) sont incohérents. »
Résolution automatique
Aucune option pour résoudre automatiquement ce problème n’est disponible.
Résolution manuelle
Option 1
Modifiez le format configuré en supprimant l’un des composants Excel\En-tête ou Excel\Pied de page incohérent.
Option 2
Modifiez la valeur de la propriété Apparence en-tête/pied de page pour l’un des composants Excel\En-tête ou Excel\Pied de page incohérents.
Paramètre incohérent du composant Page
Lorsque vous configurez un composant au format ER pour utiliser un modèle Excel pour générer un document sortant, vous pouvez ajouter le composant Excel\Page pour paginer un document généré à l’aide de formules ER. Pour chaque composant Excel\Page que vous ajoutez, vous pouvez ajouter de nombreux composants Plage tout en restant conforme à la structure suivante :
- Le premier composant Plage imbriqué peut être configuré de sorte que la propriété Direction de réplication est définie sur Pas de réplication. Cette plage est utilisée pour créer des en-têtes de page dans les documents générés.
- Vous pouvez ajouter de nombreux autres composants Plage imbriqués où la propriété Direction de réplication est définie sur Verticale. Ces plages sont utilisées pour remplir les documents générés.
- Le dernier composant Plage imbriqué peut être configuré de sorte que la propriété Direction de réplication est définie sur Pas de réplication. Cette plage permet de créer des pieds de page dans les documents générés et d’ajouter les sauts de page requis.
Si vous ne suivez pas cette structure pour un format ER dans le concepteur de format ER au moment du design, une erreur de validation se produit et vous recevez le message d’erreur suivant : « Il existe plus de deux composants de plage sans réplication. Veuillez supprimer les composants inutiles. »
Résolution automatique
Aucune option pour résoudre automatiquement ce problème n’est disponible.
Résolution manuelle
Option 1
Modifiez le format configuré en changeant la propriété Direction de réplication pour tous les composants Excel\Plage incompatibles.
Capacité d’exécution d’une expression avec la fonction ORDERBY
La fonction d’ER ORDERBY intégrée est utilisée pour trier les enregistrements d’une source de données ER du type Liste des enregistrements spécifié comme argument de la fonction.
Les arguments de la fonction ORDERBY
peuvent être spécifiés pour trier les enregistrements des entités de tables, vues ou données en effectuant un seul appel de base de données pour obtenir les données triées sous forme de liste d’enregistrements. Une source de données de type Liste des enregistrements est utilisée comme argument de cette fonction et spécifie la source de l’application pour l’appel.
ER vérifie si une requête de base de données directe peut être établie vers une source de données référencée dans la fonction ORDERBY
. Si une requête directe ne peut pas être établie, une erreur de validation se produit dans le concepteur de modèle de mappage ER. Le message que vous recevez indique que l’expression ER qui inclut la fonction ORDERBY
ne peut pas être exécutée au moment de l’exécution.
Les étapes suivantes montrent comment ce problème peut se produire.
Commencez à configurer le composant de modèle de mappage ER.
Ajoutez une source de données du type Dynamics 365 for Operations \ Enregistrements de la table.
Nommez la nouvelle source de données Vendor (fournisseur). Dans le champ Table, sélectionnez VendTable (table fournisseur) pour spécifier que cette source de données demandera la table VendTable.
Ajoutez une source de données du type Champ calculé.
Nommez la nouvelle source de données OrderedVendors (fournisseur filtré) et configurez-la pour qu’elle contienne l’expression
ORDERBY("Query", Vendor, Vendor.AccountNum)
.Sélectionnez Valider pour inspecter le composant de modèle de mappage modifiable sur la page Concepteur de modèle de mappage et vérifiez que l’expression dans la source de données OrderedVendors peut être interrogée.
Modifiez la source de données Vendor en ajoutant un champ imbriqué de type Champ calculé pour obtenir le numéro de compte du fournisseur tronqué.
Nommez le nouveau champ imbriqué $AccNumber et configurez-le pour qu’il contienne l’expression
TRIM(Vendor.AccountNum)
.Sélectionnez Valider pour inspecter le composant de modèle de mappage modifiable sur la page Concepteur de modèle de mappage et vérifiez que l’expression dans la source de données Vendor peut être interrogée.
Notez qu’une erreur de validation se produit, car la source de données Vendor contient un champ imbriqué du type Champ calculé qui n’autorise pas l’expression de la source de données OrderedVendors à convertir dans l’instruction de base de données directe. La même erreur se produit lors de l’exécution si vous ignorez l’erreur de validation et sélectionnez Exécuter pour exécuter ce mappage de modèle.
Résolution automatique
Aucune option pour résoudre automatiquement ce problème n’est disponible.
Résolution manuelle
Option 1
Au lieu d’ajouter un champ imbriqué du type Champ calculé à la source de données Fournisseur, ajoutez le champ imbriqué $AccNumber à la source de données FilteredVendors et configurez le champ pour qu’il contienne l’expression TRIM(FilteredVendor.AccountNum)
. De cette façon, l’expression ORDERBY("Query", Vendor, Vendor.AccountNum)
peut être exécutée au niveau de la base de données et calculer le champ imbriqué $AccNumber par la suite.
Option 2
Changez l’expression de la source de données FilteredVendors de ORDERBY("Query", Vendor, Vendor.AccountNum)
en ORDERBY("InMemory", Vendor, Vendor.AccountNum)
. Nous vous déconseillons de modifier l’expression d’une table contenant un grand volume de données (table transactionnelle), car tous les enregistrements seront récupérés et l’organisation des enregistrements requis sera effectuée en mémoire. Par conséquent, cette approche peut entraîner de mauvaises performances.
Artefact d’application obsolète
Lorsque vous concevez un composant de mappage de modèle ER ou un composant de format ER, vous pouvez configurer une expression ER pour appeler un artefact d’application dans ER, tel qu’une table de base de données, une méthode d’une classe, etc. Dans Finance version 10.0.30 et versions ultérieures, vous pouvez forcer ER à vous avertir que l’artefact d’application référencé est marqué dans le code source comme obsolète. Cet avertissement peut être utile, car généralement, les artefacts obsolètes sont finalement supprimés du code source. Être informé de l’état d’un artefact peut vous empêcher d’utiliser l’artefact obsolète dans le composant ER modifiable avant sa suppression du code source, ce qui permet d’éviter les erreurs d’appel d’artefacts d’application inexistants à partir d’un composant ER lors de l’exécution.
Activez la fonctionnalité Valider les éléments obsolètes des sources de données des états électroniques dans l’espace de travail Gestion des fonctionnalités pour commencer à évaluer l’attribut obsolète des artefacts d’application lors de l’inspection d’un composant ER modifiable. L’attribut obsolète est actuellement évalué pour les types d’artefacts d’application suivants :
- Table de base de données
- Champ d’une table
- Méthode d’une table
- Classe d’application
- Méthode d’une classe
Note
Un avertissement se produit lors de l’inspection du composant ER modifiable pour une source de données qui fait référence à un artefact obsolète uniquement lorsque cette source de données est utilisée dans au moins une liaison de ce composant ER.
Conseil
Quand la classe SysObsoleteAttribute est utilisée pour notifier au compilateur d’émettre des messages d’avertissement au lieu d’erreurs, l’avertissement d’inspection présente l’avertissement spécifié dans le code source au moment de la conception dans le raccourci Détails sur la page Concepteur de mise en correspondance des modèles ou Concepteur de formats.
L’illustration suivante montre l’avertissement de validation qui se produit lorsque le champ DEL_Email
obsolète de la table d’application CompanyInfo
est liée à un champ de modèle de données à l’aide de la source de données company
configurée.
Résolution automatique
Aucune option pour résoudre automatiquement ce problème n’est disponible.
Résolution manuelle
Modifiez le mappage ou le format de modèle configuré en supprimant toutes les liaisons à une source de données qui fait référence à un artefact d’application obsolète.
Ressources supplémentaires
Suivre l’exécution des formats d’état électronique pour résoudre les problèmes de performances
Vue d’ensemble de la gestion de document commercial
Supprimer les contrôles de contenu Word dans les rapports générés
Gérer plusieurs mappages dérivés pour une seule racine de modèle