Message d’erreur lorsque vous validez une commande fournisseur dans Microsoft Dynamics AX 2009 : « Impossible de créer un enregistrement dans l’en-tête de commande fournisseur - table de mise à jour (PurchParmSubTable) »

S’applique à : Microsoft Dynamics AX 2009Microsoft Dynamics AX 2009 Service Pack 1

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 :
  1. 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();    }}
  2. 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;}
  3. 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.