Créer une séquence de numéros personnalisée en X++ (D365 F&O)
Séquence de numéros personnalisée en X++ : EDT, référence dans loadModule, méthode d'accès sur la table de paramètres, configuration et appel de NumberSeq.
La réponse courte
Une séquence de numéros personnalisée suit le framework de séquences de numéros : un type de données étendu (EDT) pour le numéro ; une « référence » déclarée dans la méthode loadModule d'une classe de module de séquences (NumberSeqDatatype + create) ; une méthode statique qui renvoie cette référence, en général sur la table de paramètres du module ; puis, dans le code, NumberSeq::newGetNum(référence).num() pour obtenir le prochain numéro. Côté application, la séquence est ensuite créée et associée à la référence (assistant ou création manuelle).
Dans D365 F&O, on n'over-laye pas la classe de module standard : on ajoute sa référence par extension (Chain of Command sur loadModule) ou on crée sa propre classe de module. Microsoft a ouvert à l'extension des méthodes loadModule de modules standard (par exemple NumberSeqModuleProject en version 8.1.2).
Déclarer la référence
La documentation du framework (Dynamics AX 2012, toujours la référence du modèle) montre la déclaration dans loadModule :
// Dans la méthode loadModule de la classe de module (exemple AX 2012)
NumberSeqDatatype datatype = NumberSeqDatatype::construct();
datatype.parmDatatypeId(extendedTypeNum(WorkOrderNum));
// ... autres propriétés : libellé, portée, longueur, valeurs par défaut
this.create(datatype);Dans une extension D365 F&O, ce code va dans une classe d'extension de la classe de module, après l'appel à next loadModule(). Le chargement des références est une opération ponctuelle : une fois le module chargé, la référence apparaît dans les paramètres du module et dans l'assistant de séquences de numéros.
Configurer puis consommer la séquence
- Dans l'application, générez la séquence avec l'assistant (Administration d'organisation > Séquences de numéros > Séquences de numéros > Générer) ou créez-la manuellement, puis associez-la à la référence et à la portée (partagée, société…).
- Exposez la référence par une méthode statique sur la table de paramètres, sur le modèle des méthodes numRef… standard.
- Dans le code (initValue, insert, service…), obtenez le numéro :
// Obtenir le prochain numéro à partir de la référence
MyWorkOrderNum workOrderNum = NumberSeq::newGetNum(MyParameters::numRefWorkOrderNum()).num();Erreurs fréquentes
- Over-layer la classe de module standard au lieu d'une extension.
- Oublier de recharger les références après déploiement : la référence n'apparaît pas dans les paramètres.
- Ne pas configurer la séquence dans chaque société concernée (portée « société ») : erreur « séquence de numéros non configurée ».
- Prendre le numéro trop tôt (à l'ouverture du formulaire) puis abandonner l'enregistrement : trous dans une séquence continue.
- Utiliser une séquence continue là où ce n'est pas exigé : elle est plus coûteuse.
Faire générer ce développement
EDT, référence, méthode d'accès, initialisation : une séquence personnalisée est un ticket court. 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 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).
Sources
- Microsoft Learn (Dynamics AX 2012), « Number Sequence Framework », consultée le 18/10/2026.
- Microsoft Learn, « Set up number sequences by using a wizard », mise à jour du 10/03/2026, consultée le 18/10/2026.
- Microsoft Learn, « Extensibility changes in Dynamics 365 for Finance and Operations version 8.1.2 », mise à jour du 20/01/2026, consultée le 18/10/2026.
Questions fréquentes
Où déclarer une nouvelle référence de séquence dans D365 F&O ?
Dans la méthode loadModule d'une classe de module de séquences, via une classe d'extension (Chain of Command) ou une classe de module propre à votre solution.
Comment obtenir le prochain numéro en X++ ?
NumberSeq::newGetNum(référence).num(), la référence étant renvoyée par une méthode statique de la table de paramètres.
Pourquoi l'erreur « séquence de numéros non configurée » ?
La référence existe mais aucune séquence ne lui est associée pour la portée ou la société courante. Utilisez l'assistant ou associez une séquence manuellement.
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).