Cet article s’applique à Microsoft Dynamics AX pour toutes les régions.
Symptômes
Lorsque vous validez une commande fournisseur dans Microsoft Dynamics AX 2009, le message d’erreur suivant s’affiche :
Impossible de créer un enregistrement dans l’en-tête de commande fournisseur - table de mise à jour (PurchParmSubTable).
Ce problème se produit si une des conditions suivantes est remplie :
-
Vous activez le paramètre de « installation de piste d’audit sciences de la vie signature électronique » pour toutes les tables.
-
Vous créez un enregistrement de la table commune.
-
Vous définissez la table PurchParmTable dans le journal de la base de données.
Ce problème se produit lorsque vous validez une commande fournisseur, une préparation de réception, un bon de livraison et une facture. Ce problème se produit dans les produits suivants :
-
Microsoft Dynamics AX 2009 avec Service Pack 1
-
Microsoft Dynamics AX 2009
Résolution
Informations sur le correctif
Un correctif pris en charge est désormais disponible auprès de Microsoft. Toutefois, il est conçu uniquement pour corriger le problème décrit dans cet article. Il s’applique uniquement aux systèmes rencontrant ce problème spécifique. Ce correctif peut subir des tests supplémentaires. Par conséquent, si vous n’êtes pas sérieusement concerné par ce problème, nous vous recommandons d’attendre le prochain service pack de Microsoft Dynamics AX 2009 ou la prochaine version qui contiendra ce correctif. Remarque Dans certains cas, les frais généralement encourus pour la prise en charge des appels peuvent être annulés si un technicien du Support technique pour Microsoft Dynamics et les produits associés détermine qu’une mise à jour spécifique peut résoudre votre problème. Les coûts habituels du support technique s’appliqueront aux autres questions et problèmes non directement liés à la mise à jour en question.
Informations sur l’installation
Avant d’installer ce correctif, vérifiez que les utilisateurs du client Microsoft Dynamics AX sont déconnectés sur le système. Vous devez être le seul utilisateur client connecté lors de l’implémentation de ce correctif. Pour appliquer ce correctif, vous devez posséder une licence développeur.Remarque Il est recommandé que le compte d’utilisateur dans la fenêtre Logins Windows ou dans la fenêtre Logins base de données soit un membre du groupe Administrateurs de Microsoft Dynamics AX.
Modifications du code
Microsoft fournit des exemples de programmation à des fins d’illustration uniquement, sans garantie explicite ou implicite. Ceci inclut, de manière non limitative, les garanties implicites de qualité marchande ou d'adéquation à un usage particulier. Cet article suppose que vous connaissez le langage de programmation présenté et les outils utilisés pour créer et déboguer des procédures. Les techniciens du Support technique Microsoft peuvent vous expliquer les fonctionnalités d’une procédure particulière. Toutefois, ils ne modifieront pas ces exemples pour fournir des fonctionnalités supplémentaires ou créer des procédures répondant à vos besoins spécifiques. Toujours tester le code des correctifs dans un environnement contrôlé, avant d'appliquer les correctifs à vos ordinateurs de production.Pour résoudre ce problème, procédez comme suit :
-
Remplacer le code dans la méthode insert de la table PurchParmSubTable comme suit :
public void insert(){ PurchParmSubTable tempPurchParmSubTable; ; select tempPurchParmSubTable where tempPurchParmSubTable.ParmId == this.ParmId && tempPurchParmSubTable.TableRefId == this.TableRefId && tempPurchParmSubTable.OrigPurchId == this.OrigPurchId; if(tempPurchParmSubTable.RecId == 0) { super(); }}
-
Remplacer le code dans la méthode createFromPurchParmTable dans la table PurchParmSubTable comme suit :
static PurchParmSubTable createFromPurchParmTable(PurchParmTable _purchParmTable, boolean _insert = true){ PurchParmSubTable purchParmSubTable; systemSequence systemSequence; ; ttsbegin; purchParmSubTable.clear(); purchParmSubTable.initValue(); purchParmSubTable.initFromPurchParmTable(_purchParmTable); if (_insert) { systemSequence = new systemSequence(); purchParmSubTable.RecId = systemSequence.reserveValues(1, tablenum(PurchParmSubTable)); purchParmSubTable.insert(); } ttscommit; return purchParmSubTable;}
-
Remplacer le code dans la méthode insert de la table SalesParmSubTable comme suit :
public void insert(){ SalesParmSubTable tempSalesParmSubTable; ; select tempSalesParmSubTable where tempSalesParmSubTable.ParmId == this.ParmId && tempSalesParmSubTable.TableRefId == this.TableRefId && tempSalesParmSubTable.OrigSalesId == this.OrigSalesId && tempSalesParmSubTable.subId == this.subId; if(tempSalesParmSubTable.RecId == 0) { super(); }}
Remarque Vous devez fusionner toutes les personnalisations existantes dans ces méthodes.
Conditions préalables
Aucune condition préalable n'est requise.
Nécessité de redémarrer
Vous n’êtes pas obligé de redémarrer l’ordinateur après avoir appliqué ce correctif.
Statut
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.