Conectați-vă cu Microsoft
Conectați-vă sau creați un cont
Salut,
Selectați un alt cont.
Aveți mai multe conturi
Alegeți contul cu care doriți să vă conectați.

Acest articol se aplică la Microsoft Dynamics NAV pentru toate țările și toate limbi regionale.

Simptome

După ce le aplicați 2292157 și 2764340 pentru Microsoft Dynamics NAV 2009, formularul de Aplicare intrări client și formularul de Aplicare intrări furnizor afișează valori incorecte în câmpul Sold și reducere Disc. Valoarea câmp.

Această problemă se produce în următoarele produse:

  • Microsoft Dynamics NAV 2009 Service Pack 1

  • Microsoft Dynamics NAV 2009 R2

Pentru mai multe informații despre remedierile rapide 2292157 și 2764340, faceți clic pe următoarele numere de articol pentru a vedea articolele în baza de cunoștințe Microsoft:

2292157 câmpul "Echilibru" și "reducere discul. "Câmp în formularul de aplicare intrări client și în formularul de aplicare intrări furnizor Arată valori incorecte dacă aplicați o plată la mai multe documente deschise în Microsoft Dynamics NAV

2764340 intrări furnizor sunt selectate chiar dacă le-ați eliberat intrările furnizor anterior sub forma "Aplicare intrări furnizor" în Microsoft Dynamics NAV 2009

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. Cu toate acestea, nu vor modifica aceste exemple pentru a furniza funcționalitate suplimentară construi proceduri pentru a răspunde cerințelor dvs. specifice.

Notă Înainte de a instala această remediere rapidă, verificați dacă toți utilizatorii de client Microsoft Dynamics NAV sunt log off sistemul. Aceasta include servicii Microsoft Dynamics NAV Server de aplicație (NAS). Ar trebui să fie doar client utilizatorului care este conectat când implementați această remediere rapidă.

Pentru a implementa această remediere rapidă, trebuie să aibă o licență pentru dezvoltatori.

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 sistem obiect ID 9015

    obiect.

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 HandlChosenEntries în theApply intrări client formă (232) după cum urmează:
    Cod existent 1

    ...CurrentAmount := CurrentAmount + AppliedCustLedgEntryTemp."Remaining Amount" -
    AppliedCustLedgEntryTemp."Remaining Pmt. Disc. Possible";
    END ELSE IF (ABS(CurrentAmount) = ABS(AppliedCustLedgEntryTemp."Remaining Amount" -
    AppliedCustLedgEntryTemp."Remaining Pmt. Disc. Possible"))
    THEN BEGIN

    // Delete the following lines.
    PmtDiscAmount := PmtDiscAmount + AppliedCustLedgEntryTemp."Remaining Pmt. Disc. Possible" + PossiblePmtDisc;
    CurrentAmount := CurrentAmount + AppliedCustLedgEntryTemp."Remaining Amount" -
    AppliedCustLedgEntryTemp."Remaining Pmt. Disc. Possible" - PossiblePmtDisc;
    PossiblePmtDisc := 0;
    // End of the deleted lines.

    AppliedAmount := AppliedAmount + CorrectionAmount;
    END ELSE IF (FromZeroGenJnl) THEN BEGIN
    PmtDiscAmount := PmtDiscAmount + AppliedCustLedgEntryTemp."Remaining Pmt. Disc. Possible";
    CurrentAmount := CurrentAmount +
    AppliedCustLedgEntryTemp."Remaining Amount" - AppliedCustLedgEntryTemp."Remaining Pmt. Disc. Possible";
    ...

    Cod de înlocuire 1

    ...CurrentAmount := CurrentAmount + AppliedCustLedgEntryTemp."Remaining Amount" -
    AppliedCustLedgEntryTemp."Remaining Pmt. Disc. Possible";
    END ELSE IF (ABS(CurrentAmount) = ABS(AppliedCustLedgEntryTemp."Remaining Amount" -
    AppliedCustLedgEntryTemp."Remaining Pmt. Disc. Possible"))
    THEN BEGIN

    // Add the following lines.
    PmtDiscAmount := PmtDiscAmount + AppliedCustLedgEntryTemp."Remaining Pmt. Disc. Possible";
    CurrentAmount := CurrentAmount + AppliedCustLedgEntryTemp."Remaining Amount" -
    AppliedCustLedgEntryTemp."Remaining Pmt. Disc. Possible";
    // End of the added lines.

    AppliedAmount := AppliedAmount + CorrectionAmount;
    END ELSE IF (FromZeroGenJnl) THEN BEGIN
    PmtDiscAmount := PmtDiscAmount + AppliedCustLedgEntryTemp."Remaining Pmt. Disc. Possible";
    CurrentAmount := CurrentAmount +
    AppliedCustLedgEntryTemp."Remaining Amount" - AppliedCustLedgEntryTemp."Remaining Pmt. Disc. Possible";
    ...

    Cod existent 2

    ...END;
    CurrentAmount := CurrentAmount + AppliedCustLedgEntryTemp."Remaining Amount" -
    AppliedCustLedgEntryTemp."Remaining Pmt. Disc. Possible";
    END;
    END ELSE BEGIN

    // Delete the following lines.
    PossiblePmtDisc := AppliedCustLedgEntryTemp."Remaining Pmt. Disc. Possible";
    IF (((CurrentAmount - PossiblePmtDisc + AppliedCustLedgEntryTemp."Amount to Apply") * CurrentAmount) <= 0) THEN BEGIN
    PmtDiscAmount := PmtDiscAmount + PossiblePmtDisc;
    CurrentAmount := CurrentAmount - PossiblePmtDisc;
    PossiblePmtDisc := 0;
    AppliedAmount := AppliedAmount + CorrectionAmount;
    END;
    // End of the deleted lines.

    CurrentAmount := CurrentAmount + AppliedCustLedgEntryTemp."Amount to Apply";
    END;
    END ELSE BEGIN
    AppliedCustLedgEntryTemp.SETRANGE(Positive);
    AppliedCustLedgEntryTemp.FINDFIRST;
    ...

    Înlocuirea cod 2

    ...END;
    CurrentAmount := CurrentAmount + AppliedCustLedgEntryTemp."Remaining Amount" -
    AppliedCustLedgEntryTemp."Remaining Pmt. Disc. Possible";
    END;
    END ELSE BEGIN

    // Add the following lines.
    IF (((CurrentAmount + AppliedCustLedgEntryTemp."Amount to Apply") * CurrentAmount) <= 0) THEN
    AppliedAmount := AppliedAmount + CorrectionAmount;
    // End of the added lines.

    CurrentAmount := CurrentAmount + AppliedCustLedgEntryTemp."Amount to Apply";
    END;
    END ELSE BEGIN
    AppliedCustLedgEntryTemp.SETRANGE(Positive);
    AppliedCustLedgEntryTemp.FINDFIRST;
    ...
  2. Modificați codul din funcția HandlChosenEntries în formularul de aplicare intrări furnizor (233) după cum urmează:
    Cod existent 1

    ...CurrentAmount := CurrentAmount + AppliedVendLedgEntryTemp."Remaining Amount" -
    AppliedVendLedgEntryTemp."Remaining Pmt. Disc. Possible";
    END ELSE IF (ABS(CurrentAmount) = ABS(AppliedVendLedgEntryTemp."Remaining Amount" -
    AppliedVendLedgEntryTemp."Remaining Pmt. Disc. Possible"))
    THEN BEGIN

    // Delete the following lines.
    PmtDiscAmount := PmtDiscAmount + AppliedVendLedgEntryTemp."Remaining Pmt. Disc. Possible" + PossiblePmtdisc;
    CurrentAmount := CurrentAmount + AppliedVendLedgEntryTemp."Remaining Amount" -
    AppliedVendLedgEntryTemp."Remaining Pmt. Disc. Possible" - PossiblePmtdisc;
    PossiblePmtdisc := 0;
    // End of the deleted lines.

    AppliedAmount := AppliedAmount + CorrectionAmount;
    END ELSE IF FromZeroGenJnl THEN BEGIN
    PmtDiscAmount := PmtDiscAmount + AppliedVendLedgEntryTemp."Remaining Pmt. Disc. Possible";
    CurrentAmount := CurrentAmount +
    AppliedVendLedgEntryTemp."Remaining Amount" - AppliedVendLedgEntryTemp."Remaining Pmt. Disc. Possible";
    ...

    Cod de înlocuire 1

    ...CurrentAmount := CurrentAmount + AppliedVendLedgEntryTemp."Remaining Amount" -
    AppliedVendLedgEntryTemp."Remaining Pmt. Disc. Possible";
    END ELSE IF (ABS(CurrentAmount) = ABS(AppliedVendLedgEntryTemp."Remaining Amount" -
    AppliedVendLedgEntryTemp."Remaining Pmt. Disc. Possible"))
    THEN BEGIN

    // Add the following lines.
    PmtDiscAmount := PmtDiscAmount + AppliedVendLedgEntryTemp."Remaining Pmt. Disc. Possible";
    CurrentAmount := CurrentAmount + AppliedVendLedgEntryTemp."Remaining Amount" -
    AppliedVendLedgEntryTemp."Remaining Pmt. Disc. Possible";
    // End of the added lines.

    AppliedAmount := AppliedAmount + CorrectionAmount;
    END ELSE IF FromZeroGenJnl THEN BEGIN
    PmtDiscAmount := PmtDiscAmount + AppliedVendLedgEntryTemp."Remaining Pmt. Disc. Possible";
    CurrentAmount := CurrentAmount +
    AppliedVendLedgEntryTemp."Remaining Amount" - AppliedVendLedgEntryTemp."Remaining Pmt. Disc. Possible";
    ...

    Cod existent 2

    ...END;
    CurrentAmount := CurrentAmount + AppliedVendLedgEntryTemp."Remaining Amount" -
    AppliedVendLedgEntryTemp."Remaining Pmt. Disc. Possible";
    END;
    END ELSE BEGIN

    // Delete the following lines.
    PossiblePmtdisc := AppliedVendLedgEntryTemp."Remaining Pmt. Disc. Possible";
    IF (((CurrentAmount - PossiblePmtdisc + AppliedVendLedgEntryTemp."Amount to Apply") * CurrentAmount) >= 0) THEN BEGIN
    PmtDiscAmount := PmtDiscAmount + PossiblePmtdisc;
    CurrentAmount := CurrentAmount - PossiblePmtdisc;
    PossiblePmtdisc := 0;
    AppliedAmount := AppliedAmount + CorrectionAmount;
    END;
    // End of the deleted lines.

    CurrentAmount := CurrentAmount + AppliedVendLedgEntryTemp."Amount to Apply";
    END;
    END ELSE BEGIN
    AppliedVendLedgEntryTemp.SETRANGE(Positive);
    AppliedVendLedgEntryTemp.FINDFIRST;
    ...

    Înlocuirea cod 2

    ...END;
    CurrentAmount := CurrentAmount + AppliedVendLedgEntryTemp."Remaining Amount" -
    AppliedVendLedgEntryTemp."Remaining Pmt. Disc. Possible";
    END;
    END ELSE BEGIN

    // Add the following lines.
    IF (((CurrentAmount + AppliedVendLedgEntryTemp."Amount to Apply") * CurrentAmount) >= 0) THEN
    AppliedAmount := AppliedAmount + CorrectionAmount;
    // End of the added lines.

    CurrentAmount := CurrentAmount + AppliedVendLedgEntryTemp."Amount to Apply";
    END;
    END ELSE BEGIN
    AppliedVendLedgEntryTemp.SETRANGE(Positive);
    AppliedVendLedgEntryTemp.FINDFIRST;
    ...


Cerințe preliminare

Trebuie să aveți unul dintre următoarele produse instalate pentru a aplica această remediere rapidă:

  • Microsoft Dynamics NAV 2009 Service Pack 1

  • Microsoft Dynamics NAV 2009 R2

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 utilizarepentru alte considerații.

Aveți nevoie de ajutor suplimentar?

Doriți mai multe opțiuni?

Explorați avantajele abonamentului, navigați prin cursurile de instruire, aflați cum să vă securizați dispozitivul și multe altele.

Comunitățile vă ajută să adresați întrebări și să răspundeți la întrebări, să oferiți feedback și să primiți feedback de la experți cu cunoștințe bogate.

Au fost utile aceste informații?

Cât de mulțumit sunteți de calitatea limbajului?
Ce v-a afectat experiența?
Apăsând pe Trimitere, feedbackul dvs. va fi utilizat pentru a îmbunătăți produsele și serviciile Microsoft. Administratorul dvs. IT va avea posibilitatea să colecteze aceste date. Angajamentul de respectare a confidențialității.

Vă mulțumim pentru feedback!

×