"Client. Registru intrare intrare No. [Number] există deja"mesaj de eroare când încercați să publicați o comandă de vânzări care utilizează o plată în avans avans literă în est europene versiunea de Microsoft Dynamics NAV 2009


Acest articol se aplică la Microsoft Dynamics NAV pentru setările regionale de limbă Europa de Est (EE).

Simptome


Să luăm în considerare următorul scenariu în est europene versiunea de Microsoft Dynamics NAV 2009 R2 și Microsoft Dynamics NAV 2009 Service Pack 1 (SP1):
  • Setați valoarea Adv. factură corecție tip absolută sau Complet facturată.
  • Aveți o comandă de vânzări care utilizează o literă în avans suma plătită în avans.
  • Când publicați și jumătate din suma plătită în avans valoarea factură.
  • Publicați parțială a livrărilor din comanda de vânzare.
  • Când publicați și factură suma rămasă de plată în avans.
  • Publicați livrărilor finale ale comenzilor de vânzări.
În acest scenariu, primiţi următorul mesaj de eroare:
Client. Registru intrare intrare No. 'număr' există deja.

Rezolvare


Informații despre remedierea rapidă

Un hotfix acceptat este acum disponibil de la Microsoft. Cu toate acestea, acesta este destinat numai corectării problemei descrise în acest articol. Aplicați-o numai pe sistemele care întâmpină această problemă anume. Această remediere rapidă poate să necesite testare suplimentară. De aceea, dacă nu sunteți grav afectat de această problemă, vă recomandăm să așteptați următorul pachet service pack Microsoft Dynamics NAV 2009 sau versiunea Microsoft Dynamics NAV următoare, care conține această remediere rapidă.

Notă În cazuri speciale, costurile implicate de obicei pentru asistență apeluri pot fi anulate dacă un specialist în asistență tehnică pentru Microsoft Dynamics și produse asociate stabilește că o anumită actualizare va rezolva problema. Se vor aplica costurile uzuale de asistenţă pentru întrebări suplimentare de asistență și pentru probleme ce nu fac obiectul actualizării în cauză.



Informaţii despre instalare

Microsoft furnizează exemple de programare scop ilustrativ, fără nicio garanţie explicită sau implicită. Aceasta include, dar nu se limitează la, garanţiile implicite de vandabilitate sau de potrivire pentru un anumit scop. Acest articol presupune că sunteţi familiarizat cu limbajul de programare care este prezentat şi cu instrumentele utilizate pentru a crea şi a depana proceduri. Specialiștii în asistență Microsoft pot ajuta la explicarea funcționalității unei anumite proceduri, dar nu vor modifica aceste exemple pentru a furniza funcționalitate suplimentară sau pentru a construi proceduri pentru a răspunde cerințelor dvs. specifice.

Notă Înainte de a instala această remediere rapidă, Verificați că toate Microsoft Navision client utilizatorii au făcut Log off sistemul. Aceasta include utilizatorii de client Microsoft Navision Application Services (NAS). Ar trebui să fie singurul client utilizatorului care este conectat când implementați această remediere rapidă.

Pentru a implementa această remediere rapidă, trebuie să aveți o licență de dezvoltare.

Vă recomandăm că contul de utilizator în fereastra Conectări Windows sau în fereastra Conectări bază de date se atribuie "SUPER" rolul ID-ul. În cazul în care contul de utilizator nu poate fi atribuit ID-ul "SUPER" rolul, trebuie să verificați că contul de utilizator are următoarele permisiuni:
  • Modify permisiunea pentru obiectul care se va schimba.
  • Permisiunea de executare pentru obiectul de sistem obiect ID 5210 și pentru obiectul de sistem obiect ID 9015 .


Notă Nu trebuie să aveți drepturi de la magazine de date decât dacă trebuie să efectuați o reparare de date.

Modificări de cod

Notă Întotdeauna test cod remediază într-un mediu controlat înainte de a aplica remedieri pentru computerele de producție.
Pentru a rezolva această problemă, urmați acești pași:
  1. Modificați codul din funcția PostPaymentCorrection în codeunit face un pas înainte vânzări-Post (26585) după cum urmează:
    Cod existent
    ...      LedgEntryDim.SETRANGE("Entry No.",LinkedAdvanceEntry."Entry No.");
    DimMgt.CopyLedgEntryDimToJnlLineDim(LedgEntryDim,TempJnlLineDim);
    GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim);

    // Delete the following line.
    UNTIL LinkedAdvanceEntry.NEXT = 0;

    // Post Payment
    GenJnlLine.INIT;
    ...
    Cod de înlocuire
    ...      LedgEntryDim.SETRANGE("Entry No.",LinkedAdvanceEntry."Entry No.");
    DimMgt.CopyLedgEntryDimToJnlLineDim(LedgEntryDim,TempJnlLineDim);
    GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim);

    // Add the following line.
    UNTIL (LinkedAdvanceEntry.NEXT = 0) OR (InvoiceAmount = 0);

    // Post Payment
    GenJnlLine.INIT;
    ...
  2. Modificați codul din funcția CalcLinkedPmtAmountToApply în codeunit face un pas înainte vânzări-Post (26585) după cum urmează:
    Cod existent
    ...      AmountToApply := ROUND(TotAmt,Currency."Amount Rounding Precision") - TotAmtRnded;
    TotAmtRnded := TotAmtRnded + AmountToApply;

    // Delete the following lines.
    IF LinkedAdvanceEntry.GET(CustLedgEntry."Entry No.") THEN BEGIN
    LinkedAdvanceEntry."Amount to Apply" := LinkedAdvanceEntry."Amount to Apply" + AmountToApply;
    LinkedAdvanceEntry.MODIFY;
    END ELSE BEGIN
    LinkedAdvanceEntry := CustLedgEntry;
    LinkedAdvanceEntry."Amount to Apply" := AmountToApply;
    LinkedAdvanceEntry."Currency Code" := Link."Currency Code";
    LinkedAdvanceEntry.INSERT;
    // End of the deleted lines.

    END;
    END;
    UNTIL Link.NEXT = 0;
    ...
    Cod de înlocuire
    ...      AmountToApply := ROUND(TotAmt,Currency."Amount Rounding Precision") - TotAmtRnded;
    TotAmtRnded := TotAmtRnded + AmountToApply;

    // Add the following lines.
    IF AmountToApply <> 0 THEN
    IF LinkedAdvanceEntry.GET(CustLedgEntry."Entry No.") THEN BEGIN
    LinkedAdvanceEntry."Amount to Apply" := LinkedAdvanceEntry."Amount to Apply" + AmountToApply;
    LinkedAdvanceEntry.MODIFY;
    END ELSE BEGIN
    LinkedAdvanceEntry := CustLedgEntry;
    LinkedAdvanceEntry."Amount to Apply" := AmountToApply;
    LinkedAdvanceEntry."Currency Code" := Link."Currency Code";
    LinkedAdvanceEntry.INSERT;
    //End of the added lines.

    END;
    END;
    UNTIL Link.NEXT = 0;
    ...
  3. Modificați codul din funcția PostPaymentCorrection în codeunit Post-cumpărare face un pas înainte (26586) după cum urmează:
    Cod existent
    ...      LedgEntryDim.SETRANGE("Entry No.",LinkedAdvanceEntry."Entry No.");
    DimMgt.CopyLedgEntryDimToJnlLineDim(LedgEntryDim,TempJnlLineDim);
    GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim);

    // Delete the following line.
    UNTIL LinkedAdvanceEntry.NEXT = 0;

    // Post Payment
    GenJnlLine.INIT;
    ...
    Cod de înlocuire
    ...      LedgEntryDim.SETRANGE("Entry No.",LinkedAdvanceEntry."Entry No.");
    DimMgt.CopyLedgEntryDimToJnlLineDim(LedgEntryDim,TempJnlLineDim);
    GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim);

    // Add the following line.
    UNTIL (LinkedAdvanceEntry.NEXT = 0) OR (InvoiceAmount = 0);

    // Post Payment
    GenJnlLine.INIT;
    ...
  4. Modificați codul din funcția CalcLinkedPmtAmountToApply în codeunit Post-cumpărare face un pas înainte (26586) după cum urmează:
    Cod existent
    ...      AmountToApply := ROUND(TotAmt,Currency."Amount Rounding Precision") - TotAmtRnded;
    TotAmtRnded := TotAmtRnded + AmountToApply;

    // Delete the following lines.
    IF LinkedAdvanceEntry.GET(VendLedgEntry."Entry No.") THEN BEGIN
    LinkedAdvanceEntry."Amount to Apply" := LinkedAdvanceEntry."Amount to Apply" + AmountToApply;
    LinkedAdvanceEntry.MODIFY;
    END ELSE BEGIN
    LinkedAdvanceEntry := VendLedgEntry;
    LinkedAdvanceEntry."Amount to Apply" := AmountToApply;
    LinkedAdvanceEntry."Currency Code" := Link."Currency Code";
    LinkedAdvanceEntry.INSERT;
    // End of the deleted lines.

    END;
    END;
    UNTIL Link.NEXT = 0;
    ...
    Cod de înlocuire
    ...      AmountToApply := ROUND(TotAmt,Currency."Amount Rounding Precision") - TotAmtRnded;
    TotAmtRnded := TotAmtRnded + AmountToApply;

    // Add the following lines.
    IF AmountToApply <> 0 THEN
    IF LinkedAdvanceEntry.GET(VendLedgEntry."Entry No.") THEN BEGIN
    LinkedAdvanceEntry."Amount to Apply" := LinkedAdvanceEntry."Amount to Apply" + AmountToApply;
    LinkedAdvanceEntry.MODIFY;
    END ELSE BEGIN
    LinkedAdvanceEntry := VendLedgEntry;
    LinkedAdvanceEntry."Amount to Apply" := AmountToApply;
    LinkedAdvanceEntry."Currency Code" := Link."Currency Code";
    LinkedAdvanceEntry.INSERT;
    //End of the added lines.

    END;
    END;
    UNTIL Link.NEXT = 0;
    ...

Cerințe preliminare

Trebuie să aveți unul dintre următoarele produse instalate pentru a aplica această remediere rapidă:
  • Est europene versiunea de Microsoft Dynamics NAV 2009 R2
  • Est europene versiunea de Microsoft Dynamics NAV 2009 Service Pack 1
În plus, trebuie să aveți remedierea rapidă 2543219 și remedieri rapide 2546451 instalat pentru a aplica această remediere rapidă.
Pentru mai multe informații, faceți clic pe următoarele numere de articol pentru a vedea articolele în baza de cunoștințe Microsoft:
2543219 nu poate procesa plătită în avans așa cum vă așteptați în est europene versiunea de Microsoft Dynamics NAV 2009 R2
2546451 "nu există nici un client. Registru de intrare în filtrul"mesaj de eroare când încercați să publicați rămasă unei comenzi vânzări în est europene versiunea de Microsoft Dynamics NAV 2009

Eliminare informaţii

Nu se poate elimina această remediere rapidă.

Stare


Microsoft a confirmat că aceasta este o problemă cu produsele Microsoft enumerate în secţiunea „Se aplică la".
Notă Acesta este un articol "rapid publicat" creat direct în cadrul organizației de asistență Microsoft. Informațiile conținute în acest document sunt furnizate ca răspuns la problemele care apar. Ca rezultat al vitezei în a-l face disponibil, materialele pot include erori tipografice și pot fi revizuite în orice moment, fără notificare. Consultați Termenii de utilizare pentru alte considerații.