Dimensions financières en X++ : DimensionDefault et bons EDT
Dimensions financières en X++ dans D365 F&O : choisir le bon EDT (DimensionDefault, LedgerDimensionAccount…), stockage, immutabilité et erreurs.
La réponse courte
Pour stocker des dimensions financières sur une table personnalisée de Dynamics 365 Finance & Operations, ajoutez un champ dont le type est l'EDT adapté, avec sa relation de clé étrangère : DimensionDefault (vers DimensionAttributeValueSet) pour un ensemble de dimensions sans compte principal, comme sur un client ou un en-tête de document ; LedgerDimensionAccount (vers DimensionAttributeValueCombination) pour un compte général complet. Microsoft insiste : un mauvais EDT empêche les outils du framework de détecter l'usage des dimensions et peut corrompre les données lors des opérations de maintenance.
Deuxième règle : les données de dimensions sont immuables. On ne les met jamais à jour ni ne les supprime en SQL ; on crée un nouvel ensemble de valeurs par le framework et on fait pointer le document dessus.
Quel EDT choisir ?
D'après la matrice de décision de Microsoft Learn :
- Dimensions seules, sans compte principal : DimensionDefault → DimensionAttributeValueSet.
- Compte multisegment (compte principal + dimensions) : LedgerDimensionAccount → DimensionAttributeValueCombination.
- Compte principal seul, pour un profil de comptabilisation ou des paramètres : LedgerDimensionDefaultAccount.
- Lignes de journal dont le type de compte est donné par LedgerJournalACType (compte général, client, fournisseur…) : DimensionDynamicAccount.
- Compte principal par défaut ou compte non général : DimensionDynamicDefaultAccount.
Ne stockez pas dans les tables de dimensions des scénarios propres à un module qui n'entrent dans aucune de ces catégories.
Comment les valeurs sont-elles stockées ?
Un champ DimensionDefault contient une clé vers un enregistrement DimensionAttributeValueSet ; chaque valeur de dimension est une ligne de DimensionAttributeValueSetItem rattachée à cet ensemble. On peut les lire via la vue DimensionAttributeValueSetItemView. Seules les dimensions renseignées sont stockées : une valeur vide n'est pas enregistrée.
Sur les formulaires, l'affichage et la saisie passent par le contrôleur DimensionDefaultingController, qui détermine les dimensions applicables à la société. Pour copier ou fusionner des dimensions (par exemple du fournisseur vers l'en-tête de commande), chaque processus définit sa propre priorité : le framework ne l'impose pas.
Pour rendre une table personnalisée utilisable comme source de valeurs de dimension, Microsoft décrit la création d'une vue DimAttribute[NomTable] (champs Key, Value, Name) et de son privilège de lecture.
Erreurs fréquentes
- Typer le champ avec RefRecId ou un EDT générique au lieu de DimensionDefault : les scanners de références ne le voient pas.
- Corriger une dimension erronée par un UPDATE SQL sur DimensionAttributeValueSet ou une table « Dimension… » : toutes les autres références partagées sont modifiées. Microsoft recommande de recréer le bon ensemble via un document temporaire, puis de recopier la clé.
- Utiliser une dimension pour des valeurs très variables (numéro de commande, de série, de ticket) : les tables de dimensions grossissent sans fin ; utilisez plutôt les financial tags.
- Oublier les dimensions « fixes » du compte principal, qui écrasent la valeur saisie lors de la validation.
Faire générer ce développement
Ajouter des dimensions à une table personnalisée, les afficher et les reporter dans la comptabilisation est un développement fréquent côté finance. Skalp AI rédige la spécification, génère le code X++ et les tests unitaires, compile en contrôlant les bonnes pratiques, puis livre par pull request dans votre Azure DevOps : rien n'est fusionné sans la validation de votre architecte technique. Voir rapports et finance D365 et extensions D365 F&O sur mesure, le cadre général dans développer en X++ sans consultant en 2026, et les offres Basic, Pro et Max (1 crédit, ≈ 400 € en Basic, 200 € en Pro, consommé seulement à la génération du code).
À lire aussi : requêtes Query et QueryBuildDataSource.
Sources
- Microsoft Learn, « Dimension foreign key reference EDT usage », mise à jour du 02/03/2026, consultée le 18/10/2026.
- Microsoft Learn, « Default financial dimensions », mise à jour du 27/03/2026, consultée le 18/10/2026.
- Microsoft Learn, « Modifying financial dimension data », mise à jour du 30/03/2026, consultée le 18/10/2026.
- Microsoft Learn, « Make backing tables consumable as financial dimensions », mise à jour du 27/03/2026, consultée le 18/10/2026.
Questions fréquentes
Quel EDT pour des dimensions par défaut sur une table personnalisée ?
DimensionDefault, avec une relation vers DimensionAttributeValueSet.
Peut-on corriger une dimension directement en base ?
Non. Les tables de dimensions sont immuables et partagées. Créez le bon ensemble de valeurs par l'application, puis faites pointer le document dessus.
Dimension financière ou financial tag ?
Dimension pour des valeurs réutilisables (centre de coûts, département…). Financial tag pour des valeurs très variables comme un numéro de document.
Prêt à transformer votre D365 ?
Rejoignez les DSI qui développent leurs tickets D365 en 2 à 4 h pour 1 crédit (≈ 400 € en Basic, 200 € en Pro).