Rapid articole publicate furnizează informații direct din interiorul organizației de asistență Microsoft. Informațiile care sunt conținute aici sunt create ca răspuns la subiecte subiecte viitoare sau unice sau este destinat să completeze alte informații în baza de cunoștințe.
Acest articol se aplică la Microsoft Dynamics NAV 2009 pentru toate țările și toate limbi regionale.
Simptome
Dacă un sold furnizor este negativă în Microsoft Dynamics NAV 2009 Service Pack 1, raportul "Sugerează distribuitorul plăţi" (393) sugerează soldul negativ ca o plată.
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 magazine de date decât dacă trebuie să efectuați o reparare de date.
Modificări de cod
Notă Întotdeauna de testare codul 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:
-
Modificați codul din declanşa furnizor - OnPostDataItem din raportul "Sugerează distribuitorul plăţi" (393) după cum urmează:
Cod existent... IF FIND('-') THEN
REPEAT
Window.UPDATE(1,"No.");
PayableVendLedgEntry.SETRANGE("Vendor No.","No.");
GetVendLedgEntries(TRUE,TRUE);
GetVendLedgEntries(FALSE,TRUE);
CheckAmounts(TRUE);
UNTIL (NEXT = 0) OR StopPayments;
END;
ClearNegative;
JnlLineDim.LOCKTABLE;
...Cod de înlocuire
... IF FIND('-') THEN
REPEAT
Window.UPDATE(1,"No.");
PayableVendLedgEntry.SETRANGE("Vendor No.","No.");
GetVendLedgEntries(TRUE,TRUE);
GetVendLedgEntries(FALSE,TRUE);
CheckAmounts(TRUE);
ClearNegative;
UNTIL (NEXT = 0) OR StopPayments;
END ELSE
IF FIND('-') THEN
REPEAT
ClearNegative;
UNTIL NEXT = 0;
JnlLineDim.LOCKTABLE;
... -
Modificați codul din procedura GetVendLedgEntries din raportul "Sugerează distribuitorul plăţi" (393) după cum urmează:
Cod existent... VendLedgEntry.RESET;
VendLedgEntry.SETCURRENTKEY("Vendor No.",Open,Positive,"Due Date");
VendLedgEntry.SETRANGE("Vendor No.",Vendor."No.");
VendLedgEntry.SETRANGE(Open,TRUE);
VendLedgEntry.SETRANGE(Positive,Positive);
IF Future THEN BEGIN
...Cod de înlocuire
... VendLedgEntry.RESET;
VendLedgEntry.SETCURRENTKEY("Vendor No.",Open,Positive,"Due Date");
VendLedgEntry.SETRANGE("Vendor No.",Vendor."No.");
VendLedgEntry.SETRANGE(Open,TRUE);
VendLedgEntry.SETRANGE(Positive,Positive);
VendLedgEntry.SETRANGE("Applies-to ID",'');
IF Future THEN BEGIN
... -
Modificați codul din procedura MakeGenJnlLines din raportul "Sugerează distribuitorul plăţi" (393) după cum urmează:
Cod existent... Window.UPDATE(1,VendLedgEntry."Vendor No.");
TempPaymentBuffer.INSERT;
END;
VendLedgEntry.TESTFIELD("Applies-to ID",'');
VendLedgEntry."Applies-to ID" := TempPaymentBuffer."Document No.";
END ELSE BEGIN
...Cod de înlocuire
... Window.UPDATE(1,VendLedgEntry."Vendor No.");
TempPaymentBuffer.INSERT;
END;
VendLedgEntry."Applies-to ID" := TempPaymentBuffer."Document No.";
END ELSE BEGIN
... -
Modificați codul din procedura ClearNegative din raportul "Sugerează distribuitorul plăţi" (393) după cum urmează:
Cod existent... WHILE PayableVendLedgEntry.NEXT <> 0 DO BEGIN
TempCurrency.Code := PayableVendLedgEntry."Currency Code";
CurrencyBalance := 0;
PayableVendLedgEntry2 := PayableVendLedgEntry;
IF TempCurrency.INSERT THEN BEGIN
PayableVendLedgEntry.SETRANGE("Currency Code",PayableVendLedgEntry."Currency Code");
REPEAT
CurrencyBalance := CurrencyBalance + PayableVendLedgEntry."Amount (LCY)"
UNTIL PayableVendLedgEntry.NEXT = 0;
IF CurrencyBalance < 0 THEN
PayableVendLedgEntry.DELETEALL;
END;
PayableVendLedgEntry.SETRANGE("Currency Code");
PayableVendLedgEntry := PayableVendLedgEntry2;
END;
...Cod de înlocuire
... WHILE PayableVendLedgEntry.NEXT <> 0 DO BEGIN
TempCurrency.Code := PayableVendLedgEntry."Currency Code";
CurrencyBalance := 0;
IF TempCurrency.INSERT THEN BEGIN
PayableVendLedgEntry2 := PayableVendLedgEntry;
PayableVendLedgEntry.SETRANGE("Currency Code",PayableVendLedgEntry."Currency Code");
REPEAT
CurrencyBalance := CurrencyBalance + PayableVendLedgEntry."Amount (LCY)"
UNTIL PayableVendLedgEntry.NEXT = 0;
IF CurrencyBalance < 0 THEN
PayableVendLedgEntry.DELETEALL;
PayableVendLedgEntry.SETRANGE("Currency Code");
PayableVendLedgEntry := PayableVendLedgEntry2;
END;
END;
...
Cerințe preliminare
Trebuie să aveți Microsoft Dynamics NAV 2009 instalat Service Pack 1 pentru a aplica această remediere rapidă.
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".
MICROSOFT ȘI/SAU FURNIZORII SĂI FACE NICI O REPREZENTARE SAU GARANȚIILE PRIVIND CALITATEA, FIABILITATEA SAU ACURATEȚEA INFORMAȚIILOR CONȚINUTE ÎN DOCUMENTE ȘI ELEMENTE GRAFICE ASOCIATE PUBLICATE PE ACEST SITE WEB ("MATERIALE") PENTRU ORICE SCOP.
MATERIALELE POT INCLUDE IMPRECIZII TEHNICE SAU ERORI TIPOGRAFICE ȘI POT FI REVIZUITE ORICÂND, FĂRĂ NOTIFICARE PREALABILĂ. LIMITELE MAXIME PERMISE DE LEGILE, MICROSOFT ȘI/SAU FURNIZORII SĂI EXLCUD ȘI EXCLUDE TOATE REFERIRILE, GARANȚIILE ȘI CONDIȚIILE EXPRESE, IMPLICITE SAU STATUTARE, INCLUSIV, DAR NU LIMITA LA REPREZENTĂRI, GARANȚII ȘI CONDIȚII DE TITLU, STAREA NEÎNCĂLCARE, SATISFĂCĂTOARE SAU CALITATE, VANDABILITATE ŞI POTRIVIRE PENTRU UN ANUMIT SCOP, CU PRIVIRE LA MATERIALE.