Sistema netikėtai užregistruoja bendrą pelno ir nuostolio sumą vienoje sąskaitoje po to, kai įvykdote paketinę užduotį Koreguoti valiutų kursus "„Microsoft“ Dynamics NAV 2009 R2" Rytų Europos versijoje

Taikoma
Microsoft Dynamics NAV 2009 R2

Šis straipsnis taikomas "„Microsoft“ Dynamics NAV", skirtai Rytų Europos (EE) regionui.

Požymiai

Tarkime, kad turite dvi banko sąskaitas, kuriose nustatyta ta pati užsienio valiuta Rytų Europos "„Microsoft“ Dynamics NAV 2009 R2" versijoje. Įvykdžius dviejų banko sąskaitų paketinę užduotį Koreguoti valiutų kursus , sistema netikėtai užregistruoja bendrą pelno ir nuostolio sumą vienoje sąskaitoje, pelną arba nuostolį, bendrojoje įrašų knygoje.

Sprendimas

Karštųjų pataisų informacija

Dabar palaikomas karštąsias pataisas galima gauti iš "„Microsoft“". Tačiau juo siekiama tik išspręsti šiame straipsnyje aprašytą problemą. Taikyti ją tik sistemoms, kuriose kilo ši konkreti problema. Ši karštoji pataisa gali būti papildomai patikrinta. Todėl, jei jūsų ši problema stipriai nepaveikė, rekomenduojame palaukti kito "„Microsoft“ Dynamics NAV" pakeitimų paketo arba kitos "„Microsoft“ Dynamics NAV" versijos, kurioje yra ši karštoji pataisa.

Pastaba Ypatingais atvejais mokesčiai, kurie paprastai taikomi už palaikymo skambučius, gali būti atšaukti, jei "„Microsoft“ Dynamics" ir susijusių produktų techninio palaikymo specialistas nustato, kad konkretus naujinimas išspręs jūsų problemą. Įprastos palaikymo išlaidos bus taikomos papildomiems palaikymo klausimams ir problemoms, kurios neatitinka atitinkamo konkretaus naujinimo reikalavimų.

            
          

Diegimo informacija

"„Microsoft“" pateikia programavimo pavyzdžių tik iliustracijai, be išreikštų ar numanomų garantijų. Tai apima, bet neapsiriboja, numanomas tinkamumo parduoti arba tinkamumo konkrečiam tikslui garantijas. Straipsnyje laikomasi nuomonės, kad esate susipažinę su demonstruojama programavimo kalba ir įrankiais, naudojamais kuriant ir derinant procedūras. "„Microsoft“" palaikymo inžinieriai gali padėti paaiškinti konkrečios procedūros funkcionalumą, bet jie nemodifikuos šių pavyzdžių, kad suteiktų papildomų funkcinių galimybių, ir nesukurs procedūrų, atitinkančių jūsų konkrečius reikalavimus.

Pastaba Prieš diegdami šią karštąją pataisą patikrinkite, ar visi "„Microsoft“ Navision" kliento vartotojai yra atsijungę nuo sistemos. Tai apima "„Microsoft“ Navision" programų tarnybų (NAS) kliento vartotojus. Turite būti vienintelis kliento vartotojas, kuris yra prisijungęs, kai įdiegiate šią karštąją pataisą.

Norėdami įdiegti šią karštąją pataisą, privalote turėti kūrėjo licenciją.

Rekomenduojame vartotojo paskyrai "Windows" prisijungimų lange arba duomenų bazės prisijungimų lange priskirti "SUPER" vaidmens ID. Jei vartotojo paskyrai negalima priskirti "SUPER" vaidmens ID, turite patikrinti, ar vartotojo paskyra turi šias teises:

  • Objekto, kurį keisite, modifikavimo teisė.
  • Sistemos objekto ID 5210 ir sistemos objekto ID 9015 objekto vykdymo teisės.

                
Pastaba: neturite turėti teisių į duomenų saugyklas, nebent turite atlikti duomenų taisymą.

Kodo keitimai

Pastaba Visada išbandykite kodo pataisas kontroliuojamoje aplinkoje prieš taikydami jas gamybos kompiuteriuose.
Norėdami išspręsti šią problemą, pakeiskite kodą ataskaitoje Koreguoti valiutų kursus (595). Norėdami tai padaryti, atlikite toliau aprašytus veiksmus.

  1. Pakeiskite kodą banko sąskaitoje – OnPreDataItem paleidiklyje taip:
    Esamas kodas

    ...
    CurrReport.CREATETOTALS(AdjBase,AdjBaseLCY,AdjAmount);
    SETRANGE("Date Filter",StartDate,EndDate); 
    
    // Delete the following line. 
    TempEntryNoAmountBuf.DELETEALL;
    ...
    

    Pakeitimo kodas

    ...
    CurrReport.CREATETOTALS(AdjBase,AdjBaseLCY,AdjAmount);
    SETRANGE("Date Filter",StartDate,EndDate);
    ...
    
  2. Pakeiskite kodą banko sąskaitoje – OnAfterGetRecord paleidiklyje taip:
    Esamas kodas 1

    ...
    AdjCredit := 0;
    AdjDebit := 0;
    
    BankAccNo := BankAccNo + 1;
    ...
    

    Pakeitimo kodas 1

    ...
    
    // Add the following line.
    TempEntryNoAmountBuf.DELETEALL;
    
    AdjCredit := 0;
    AdjDebit := 0;
    
    BankAccNo := BankAccNo + 1;
    ...
    

    Esamas kodas 2

    ...
    IF AdjAmount > 0 THEN
    GainOrLoss := Text26501
    ELSE
    GainOrLoss := Text26502;
    SetAdjDebitCredit(Amount,AdjCredit,AdjDebit);
    END;
    
    // Delete the following line. 
    END;
    
    ...
    

    Pakeitimo kodas 2

    ...
    IF AdjAmount > 0 THEN
    GainOrLoss := Text26501
    ELSE
    GainOrLoss := Text26502;
    SetAdjDebitCredit(Amount,AdjCredit,AdjDebit);
    END;
    
    // Add the following lines.
    IF (TempEntryNoAmountBuf.Amount <> 0) AND (NOT TestMode) THEN BEGIN
    TempJnlLineDim.RESET;
    TempJnlLineDim.DELETEALL;
    TempDimBuf.RESET;
    TempDimBuf.DELETEALL;
    DimBufMgt.GetDimensions(TempEntryNoAmountBuf."Entry No.",TempDimBuf);
    DimMgt.CopyDimBufToJnlLineDim(
    TempDimBuf,TempJnlLineDim,GenJnlLine."Journal Template Name",
    GenJnlLine."Journal Batch Name",GenJnlLine."Line No.");
    IF TempEntryNoAmountBuf.Amount > 0 THEN BEGIN
    Currency.TESTFIELD("Realized Gains Acc.");
    PostAdjmt(
    Currency."Realized Gains Acc.",-TempEntryNoAmountBuf.Amount,TempEntryNoAmountBuf.Amount2,
    "Currency Code",TempJnlLineDim,PostingDate,'');
    END ELSE BEGIN
    Currency.TESTFIELD("Realized Losses Acc.");
    PostAdjmt(
    Currency."Realized Losses Acc.",-TempEntryNoAmountBuf.Amount,TempEntryNoAmountBuf.Amount2,
    "Currency Code",TempJnlLineDim,PostingDate,'');
    END;
    END;
    END;
    // End of the added lines. 
    
    ...
    
  3. Panaikinkite kodą banko sąskaitoje – OnPostDataItem paleidiklyje taip:

    ...
    
    // Delete the following lines.
    IF TempEntryNoAmountBuf.FINDSET THEN
    REPEAT
    IF (TempEntryNoAmountBuf.Amount <> 0) AND (NOT TestMode) THEN BEGIN
    TempJnlLineDim.RESET;
    TempJnlLineDim.DELETEALL;
    TempDimBuf.RESET;
    TempDimBuf.DELETEALL;
    DimBufMgt.GetDimensions(TempEntryNoAmountBuf."Entry No.",TempDimBuf);
    DimMgt.CopyDimBufToJnlLineDim(
    TempDimBuf,TempJnlLineDim,GenJnlLine."Journal Template Name",
    GenJnlLine."Journal Batch Name",GenJnlLine."Line No.");
    IF TempEntryNoAmountBuf.Amount > 0 THEN BEGIN
    Currency.TESTFIELD("Realized Gains Acc.");
    PostAdjmt(
    Currency."Realized Gains Acc.",-TempEntryNoAmountBuf.Amount,TempEntryNoAmountBuf.Amount2,
    "Currency Code",TempJnlLineDim,PostingDate,'');
    END ELSE BEGIN
    Currency.TESTFIELD("Realized Losses Acc.");
    PostAdjmt(
    Currency."Realized Losses Acc.",-TempEntryNoAmountBuf.Amount,TempEntryNoAmountBuf.Amount2,
    "Currency Code",TempJnlLineDim,PostingDate,'');
    END;
    END;
    UNTIL TempEntryNoAmountBuf.NEXT = 0;
    TempEntryNoAmountBuf.DELETEALL;
    // End of the deleted lines.
    
    ...
    

Būtinosios sąlygos

Norėdami taikyti šią karštąją pataisą, turite įdiegti Rytų Europos "„Microsoft“ Dynamics NAV 2009 R2" versiją.

Pašalinimo informacija

Šios karštosios pataisos pašalinti negalite.

Būsena

„„Microsoft““ patvirtino, kad tai yra „„Microsoft““ produktų, išvardytų dalyje „Taikoma“, problema.

Pastaba: tai "SPARČIOJO PUBLIKAVIMO" straipsnis, sukurtas tiesiogiai iš "„Microsoft“" palaikymo organizacijos. Čia pateikta informacija pateikiama tokia, kokia yra, reaguojant į kylančias problemas. Dėl greito jos pateikimo medžiagoje gali būti spausdinimo klaidų ir ji gali būti peržiūrėta bet kuriuo metu be išankstinio įspėjimo. Dėl kitų aplinkybių žr. Naudojimo sąlygas .