Varude hindamise aruandes märgitakse, et kauba kogus on null, samas kui kauba väärtuse summa pole Microsoft Dynamics NAV-is valesti null.

Rakenduskoht
Dynamics NAV 2009 Dynamics NAV 2009 Service Pack 1 Microsoft Dynamics NAV 5.0 Service Pack 1

See artikkel kehtib microsoft Dynamics NAV-i kohta kõigis keele lokaadides.

Sümptomid

Kui käivitate Microsoft Dynamics NAV-is varude hindamise aruande, märkate, et kauba kogus on null, samas kui kauba väärtuse summa pole tulemis null. Eeldate, et kauba väärtuse summa on null. See probleem ilmneb järgmistes toodetes:

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
  • Microsoft Dynamics NAV 2009
  • Microsoft Dynamics NAV 5.0 Service Pack 1

Lahendus

Kiirparanduse teave

Microsoftilt on nüüd saadaval toetatud kiirparandus. Siiski on see mõeldud ainult selles artiklis kirjeldatud probleemi lahendamiseks. Rakendage see ainult süsteemidele, kus esineb see konkreetne probleem. See kiirparandus võib saada täiendavaid katseid. Seega, kui see probleem ei mõjuta teid tõsiselt, soovitame oodata järgmist Microsoft Dynamics NAV 2009 hoolduspaketti või järgmist Microsoft Dynamics NAV versiooni, mis sisaldab seda kiirparandust.

Märkus. Erijuhtudel võidakse tavaliselt tugiteenuse kõnede eest tehtud tasud tühistada, kui Microsoft Dynamicsi ja seotud toodete tehniline tugitöötaja leiab, et konkreetne värskendus lahendab teie probleemi. Tavapärased toetuskulud kehtivad täiendavatele tugiteenustega seotud küsimustele ja probleemidele, mis ei vasta kõnealuse värskenduse tingimustele.

            
          

Installiteave

Microsoft pakub programmeerimise näiteid ainult illustreerimiseks, ilma et garantii oleks väljendatud või kaudselt. See hõlmab kaubastatavuse või kindlaks otstarbeks sobivuse kaudseid garantiisid, kuid mitte ainult. Selles artiklis eeldatakse, et olete tuttav kuvatava programmeerimiskeelega ja tööriistadega, mida kasutatakse protseduuride loomiseks ja silumiseks. Microsofti tugiteenuste insenerid saavad aidata selgitada konkreetse protseduuri funktsionaalsust, kuid nad ei muuda neid näiteid selleks, et pakkuda teie vajadustele vastavaid lisafunktsioone või koostada protseduure.

Märkus. Enne selle kiirparanduse installimist veenduge, et kõik Microsoft Navisioni klientrakenduse kasutajad oleksid süsteemist välja logitud. See hõlmab ka Microsoft Navision Application Servicesi (NAS) klientkasutajaid. Peaksite olema ainus klientkasutaja, kes on sisse logitud, kui rakendate selle kiirparanduse.

Selle kiirparanduse rakendamiseks peab teil olema arendaja litsents.

Soovitame, et aknas Windowsi sisselogimised või aknas Andmebaasi sisselogimised olevale kasutajakontole määrataks "SUPER" rolli ID. Kui kasutajakontole ei saa superrolli ID-d määrata, peate kontrollima, kas kasutajakontol on järgmised õigused.

  • Muudetava objekti muutmisõigus.
  • Süsteemiobjekti ID 5210 ja süsteemiobjekti ID 9015 täitmisõigus.

                
Märkus. Teil pole andmesalvede jaoks õigusi, kui te ei pea tegema andmete parandamist.

Koodi muudatused

Märkus. Enne paranduste rakendamist tööarvutitele testige koodiparandusi alati kontrollitud keskkonnas.
Probleemi lahendamiseks tehke järgmist.

  1. Lisage tabeli funktsiooni IsAvgCostException (5802) järgmised kohalikud muutujad:

    • ItemLedgEntry@1002: kirje 32
    • xItemLedgEntry@1003: Kirje 32
    • TempItemLedgEntry@1004: TEMPORARY Record 32
  2. Muutke tabelis (5802) funktsiooni IsAvgCostException koodi järgmiselt.
    Olemasolev kood

    ...
    IF ItemApplnEntry.AppliedInbndEntryExists("Item Ledger Entry No.",TRUE) THEN
      EXIT(TRUE);
    
    EXIT(FALSE);      
    ...
    

    Asenduskood

    ...
      IF ItemApplnEntry.AppliedInbndEntryExists("Item Ledger Entry No.",TRUE) THEN
      EXIT(TRUE);
    
    // Add the following lines.
    IF "Item Ledger Entry Type" = "Item Ledger Entry Type"::Consumption THEN
      IF ItemApplnEntry.AppliedFromEntryExists("Item Ledger Entry No.") THEN
        REPEAT
          ItemLedgEntry.GET(ItemApplnEntry."Outbound Item Entry No.");
          IF ItemLedgEntry."Entry No." <> xItemLedgEntry."Entry No." THEN BEGIN
            xItemLedgEntry := ItemLedgEntry;
            ItemApplnEntry.GetVisitedEntries(ItemLedgEntry,TempItemLedgEntry);
            TempItemLedgEntry.SETCURRENTKEY("Item No.",Positive,"Location Code","Variant Code");
            TempItemLedgEntry.SETRANGE("Item No.","Item No.");
            TempItemLedgEntry.SETRANGE(Positive,TRUE);
            TempItemLedgEntry.SETRANGE("Location Code","Location Code");
            TempItemLedgEntry.SETRANGE("Variant Code","Variant Code");
            IF NOT TempItemLedgEntry.ISEMPTY THEN
              EXIT(TRUE);
          END;
        UNTIL ItemApplnEntry.NEXT = 0;
    // End of the added lines.
    
    EXIT(FALSE);
    ...
    
  3. Lisage koodiplokis (5895) funktsiooni AvgValueEntriesToAdjustExist järgmised kohalikud muutujad.

    • CurrIsException@1009: kahendmuutuja
    • NextIsException@1010: kahendmuutuja
  4. Muutke koodiuniti (5895) funktsiooni AvgValueEntriesToAdjustExist koodi järgmiselt.
    Olemasolev kood

    ...
           IF "Valued By Average Cost" AND NOT Adjustment AND ("Valued Quantity" < 0) THEN BEGIN
            OutbndValueEntry := ValueEntry;
            OutbndValueEntry.INSERT;
            FindNextRange := FALSE;
          END; 
    
    // Delete the following lines.
          IF IsAvgCostException THEN BEGIN  
            AvgCostExceptionBuf.Number := "Entry No.";  
            AvgCostExceptionBuf.INSERT;  
          END;  
    // End of the deleted lines.
    
          IF ("Entry Type" = "Entry Type"::Revaluation) OR
    ...
    

    Asenduskood

    ...
           IF "Valued By Average Cost" AND NOT Adjustment AND ("Valued Quantity" <0) THEN BEGIN
            OutbndValueEntry := ValueEntry;
            OutbndValueEntry.INSERT;
            FindNextRange := FALSE;
          END;
    
    // Add the following lines.
          IF NOT Adjustment THEN BEGIN
            CurrIsException := NextIsException;
            NextIsException := IsAvgCostException;
            IF NextIsException OR CurrIsException THEN BEGIN
              AvgCostExceptionBuf.Number := "Entry No.";
              AvgCostExceptionBuf.INSERT;
            END;
          END;
    // End of the added lines.
    
          IF ("Entry Type" = "Entry Type"::Revaluation) OR
    ...
    
  5. Muutke koodi varude korrigeerimise koodiplokis (5895) järgmiselt.
    Olemasolev kood

    ...
          CODE
         ...
         LOCAL PROCEDURE AvgValueEntriesToAdjustExist@79(VAR OutbndValueEntry@1003 : Record 5802;VAR ExcludedValueEntry@1000 : Record 5802;VAR AvgCostAdjmtEntryPoint@1001 : Record 5804) : Boolean;
         ...
             IF FindNextRange THEN BEGIN
               AvgCostAdjmtEntryPoint."Valuation Date" := GetNextDate(AvgCostAdjmtEntryPoint."Valuation Date");
               AvgValueEntriesToAdjustExist(OutbndValueEntry,ExcludedValueEntry,AvgCostAdjmtEntryPoint);
             END;
         ...
         LOCAL PROCEDURE IsExcludeEntryFromAvgCostCalc@36(ValueEntry@1000 : Record 5802;OutbndValueEntry@1001 : Record 5802;VAR ItemLedgEntryInChain@1003 : Record 32) : Boolean;
         ...
             IF NOT "Valued By Average Cost" THEN
               EXIT(FALSE);
             ItemLedgEntry.GET("Item Ledger Entry No.");
             IF ItemLedgEntry.Positive THEN
               EXIT(FALSE);
    
    // Delete the following line.
            EXIT(TRUE); 
    // End of the deleted line. 
    ...
    

    Asenduskood

    ...
      CODE
         ...
         LOCAL PROCEDURE AvgValueEntriesToAdjustExist@79(VAR OutbndValueEntry@1003 : Record 5802;VAR ExcludedValueEntry@1000 : Record 5802;VAR AvgCostAdjmtEntryPoint@1001 : Record 5804) : Boolean;
         ...
             IF FindNextRange THEN BEGIN
               AvgCostAdjmtEntryPoint."Valuation Date" := GetNextDate(AvgCostAdjmtEntryPoint."Valuation Date");
               AvgValueEntriesToAdjustExist(OutbndValueEntry,ExcludedValueEntry,AvgCostAdjmtEntryPoint);
             END;
    
     // Add the following line.
            OutbndValueEntry.SETCURRENTKEY("Item Ledger Entry No."); 
    // End of the added line.
    
         ...
         LOCAL PROCEDURE IsExcludeEntryFromAvgCostCalc@36(ValueEntry@1000 : Record 5802;OutbndValueEntry@1001 : Record 5802;VAR ItemLedgEntryInChain@1003 : Record 32) : Boolean;
         ...
             IF NOT "Valued By Average Cost" THEN
               EXIT(FALSE);
             ItemLedgEntry.GET("Item Ledger Entry No.");
             IF ItemLedgEntry.Positive THEN
               EXIT(FALSE);
    
    // Add the following line.
            EXIT("Item Ledger Entry No." > OutbndValueEntry."Item Ledger Entry No."); 
    // End of the added line.
    ...
    

Eeltingimused

Selle kiirparanduse rakendamiseks peab teil olema installitud üks järgmistest toodetest:

  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
  • Microsoft Dynamics NAV 2009
  • Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)

                
              

Eemaldamisteave

Seda kiirparandust ei saa eemaldada.

Olek

Microsoft on kinnitanud, et see on jaotises „Rakenduskoht“ loetletud Microsofti toodete korral esinev probleem.

Viited

VSTF-i viga: 235179

Märkus. See on otse Microsofti tugiteenuste organisatsioonist loodud FAST PUBLISH-artikkel. Käesolevas artiklis sisalduv teave on esitatud kujul, mis on seotud tekkivate küsimustega. Materjali kättesaadavaks tegemise kiiruse tõttu võivad materjalid sisaldada kirjavigu ja neid võib igal ajal ette teatamata läbi vaadata. Muid kaalutlusi leiate teemast Kasutustingimused .