Le Message système 6909 - un autre processus a déjà ajouté l’élément


Symptômes


Lors de la libération d’un lot de factures comptes clients, le traitement par lots s’interrompt avec le message système 6909. L’ardebug vous donne le message d’erreur suivant :
Violation de la contrainte de clé primaire 'HistDocSlsTax0'. Impossible d’insérer une clé en double dans l’objet 'HistDocSlsTax'.

Cause


Il existe une autre facture dans la table ardoc avec le même numéro de référence sous la forme d’une des factures de ce lot. Le résultat est que Solomon essaie d’insérer un enregistrement en double dans la table HistDocSlsTax.

Solution de contournement


Pour contourner ce problème, procédez comme suit :
  1. Rechercher les enregistrements dupliqués. Pour ce faire, exécutez l’instruction SQL suivante :
    select refnbr, doctype, batnbr, * from ardoc tablea 
    where doctype='IN' and refnbr IN
    (select refnbr from ardoc tableb where doctype='IN' and tablea.refnbr=tableb.refnbr
    and tablea.tstamp<>tableb.tstamp and (tablea.batnbr='<XXXXXX>' OR tableb.batnbr='<XXXXXX>'))
    order by refnbr, batnbr
    Remarque < XXXXXX > est un espace réservé pour le numéro de lot suspendu.

    Ce script renvoie l’ardoc factures d’enregistrement de deux (ou plus) avec le même numéro de référence.
  2. Mettre à jour la facture dans le lot suspendu à quelque chose de légèrement différents, par exemple en ajoutant un « A » à la fin. Voici un exemple des instructions de mise à jour nécessaire :
    update ardoc set refnbr='01013A' where refnbr='010130' and batnbr='<XXXXXX>'
    update artran set refnbr='01013A' where refnbr='010130' and batnbr='<XXXXXX>'

Plus d'informations


Lorsque vous sélectionnez un nouveau numéro de référence, assurez-vous que le nouveau numéro de référence n’a pas été déjà utilisé. Essayez également de conserver le numéro de facture de la même longueur que les autres numéros de référence.