poruka o pogrešci "Dimenzija koja se koristi u dnevniku stavki Redak [broj retka] uzrokovala je pogrešku" prilikom knjiženja više od jedne crte dimenzije u dnevniku reklasifikacije skladišta u sustavu Microsoft Dynamics NAV 2009 Service Pack 1

Primjenjuje se na
Dynamics NAV 2009 Service Pack 1

Ovaj se članak odnosi na NAV sustava Microsoft Dynamics za sve države i regionalne sheme na svim jezicima.

Simptomi

Kada objavite više redaka koji imaju dimenzije navedene u dnevniku ponovne klasifikacije skladišta u servisnom paketu Microsoft Dynamics NAV 2009 Service Pack 1 (SP1), primit ćete poruku o pogrešci koja sliči sljedećoj:

Napomena

Dimenzija koja se koristi u dnevniku stavki Broj retka uzrokovao je pogrešku. Odaberite kod vrijednosti dimenzije za kod dimenzije AREA za naziv stavke.

      

Uzrok

Taj se problem pojavljuje jer funkcija CreateItemJnlLine koristi broj retka iz jednog retka dnevnika ponovne klasifikacije skladišta kada stvarate dimenzije za drugi redak dnevnika ponovne klasifikacije skladišta. Broj retka ažurira se tek na kraju funkcije. Budući da se dimenzije odnose na stari broj retka, dimenzije kasnije nije moguće pronaći.

Rješenje

Informacije o hitnom popravku

Microsoft sada nudi podržani hitni popravak. No njegova je namjena samo ispravljanje problema opisanog u ovom članku. Primijenite ga samo na sustave koji imaju taj specifični problem. Ovaj hitni popravak može proći dodatna testiranja. Stoga, ako se ovaj problem ne odnosi ozbiljno, preporučujemo da pričekate sljedeći servisni paket za Microsoft Dynamics NAV ili sljedeću verziju sustava Microsoft Dynamics NAV koja sadrži ovaj hitni popravak.

Napomena: U posebnim slučajevima, ako stručnjak tehničke podrške za Microsoft Dynamics i povezane proizvode utvrdi da određeno ažuriranje može riješiti problem, poziv službi podrške može biti besplatan. Uobičajene cijene poziva službi za podršku primjenjuju se na dodatna pitanja i probleme koje nemaju veze s pripadnom nadopunom.

            
          

Informacije o instalaciji

Microsoft daje primjere programiranja samo za ilustraciju, bez jamstva, bilo izričitog ili prešutnog. To uključuje, bez ograničenja, implicitna jamstva utrživosti ili prikladnosti za određenu svrhu. U članku se podrazumijeva da ste upoznati s programskim jezikom koji se pokazuje te s alatima koji se koriste za stvaranje i ispravljanje pogrešaka procedura. Microsoftovi inženjeri za podršku mogu vam pomoći objasniti funkcionalnost određene procedure, no neće mijenjati te primjere radi pružanja dodatne funkcionalnosti ili konstruirati procedure koji zadovoljavaju vaše specifične zahtjeve.

Napomena Prije nego što instalirate ovaj hitni popravak, provjerite jesu li svi korisnici Microsoft Navision klijenta odjavljeni sa sustava. To obuhvaća korisnike klijentskih usluga Microsoft Navision Application Services (NAS). Trebali biste biti jedini klijentski korisnik prijavljen na vrijeme implementacije ovog hitnog popravka.

Da biste implementirali ovaj hitni popravak, morate imati licencu za razvojne inženjere.

Preporučujemo da se korisničkom računu u prozoru Prijave u sustav Windows ili u prozoru Prijave u bazu podataka dodijeli ID uloge "SUPER". Ako korisničkom računu nije moguće dodijeliti ID uloge "SUPER", morate provjeriti ima li korisnički račun sljedeće dozvole:

  • Dozvola za izmjenu objekta koji ćete mijenjati.
  • Dozvola za izvršavanje za objekt System Object ID 5210 i za objekt System Object ID 9015

                
Napomena: nemate pravo na spremišta podataka, osim ako morate popraviti podatke.

Promjene koda

Napomena: uvijek testirajte popravke koda u kontroliranom okruženju prije primjene popravaka na proizvodnim računalima.
Da biste riješili taj problem, promijenite kod u funkciji CreateItemJnlLine u Whse. Jnl.-Register Jedinica koda serije (7304) na sljedeći način:

Postojeći kod

WhseItemTrkgLine.SETCURRENTKEY(
  "Source ID","Source Type","Source Subtype","Source Batch Name",
  "Source Prod. Order Line","Source Ref. No.","Location Code");
WhseItemTrkgLine.SETRANGE("Source Type",DATABASE::"Warehouse Journal Line");
WhseItemTrkgLine.SETRANGE("Source ID",WhseJnlLine2."Journal Batch Name");
WhseItemTrkgLine.SETRANGE("Source Batch Name",WhseJnlLine2."Journal Template Name");
WhseItemTrkgLine.SETRANGE("Source Ref. No.",WhseJnlLine2."Line No.");
WhseItemTrkgLine.SETRANGE("Location Code",WhseJnlLine2."Location Code");
IF WhseItemTrkgLine.FINDSET THEN BEGIN
  ItemJnlLine.INIT;
  ItemJnlLine.VALIDATE("Entry Type",ItemJnlLine."Entry Type"::Transfer);
  WITH WhseJnlLine2 DO BEGIN
    REPEAT
      IF ((WhseItemTrkgLine."New Serial No." <> WhseItemTrkgLine."Serial No.") OR
          (WhseItemTrkgLine."New Lot No." <> WhseItemTrkgLine."Lot No.") OR
          (WhseItemTrkgLine."New Expiration Date" <> WhseItemTrkgLine."Expiration Date")) THEN BEGIN
        CreateReservEntry.CreateReservEntryFor(
          DATABASE::"Item Journal Line",
          ItemJnlLine."Entry Type",
          '',
          '',
          0,
          "Line No.",
          WhseItemTrkgLine."Qty. per Unit of Measure",
          ABS(WhseItemTrkgLine."Qty. to Handle (Base)"),
          WhseItemTrkgLine."Serial No.",
          WhseItemTrkgLine."Lot No.");
        CreateReservEntry.SetNewSerialLotNo(WhseItemTrkgLine."New Serial No.",WhseItemTrkgLine."New Lot No.");
        CreateReservEntry.SetDates(WhseItemTrkgLine."Warranty Date",WhseItemTrkgLine."Expiration Date");
        CreateReservEntry.SetNewExpirationDate(WhseItemTrkgLine."New Expiration Date");
        CreateReservEntry.CreateEntry(
          "Item No.",
          "Variant Code",
          "Location Code",
          Description,
          0D,
          0D,
         0,
         ReservEntry."Reservation Status"::Prospect);
       QtyToHandleBase += ABS(WhseItemTrkgLine."Qty. to Handle (Base)");
      END;
    UNTIL WhseItemTrkgLine.NEXT = 0;
    IF QtyToHandleBase <> 0 THEN BEGIN
      ItemJnlLine."Document No." := "Whse. Document No.";
      ItemJnlLine.VALIDATE("Posting Date", "Registering Date");
      ItemJnlLine.VALIDATE("Item No.", "Item No.");
      ItemJnlLine.VALIDATE("Variant Code","Variant Code");
      ItemJnlLine.VALIDATE("Location Code","Location Code");
      ItemJnlLine.VALIDATE("Unit of Measure Code", "Unit of Measure Code");
      ItemJnlLine.VALIDATE("Quantity (Base)", QtyToHandleBase);
      ItemJnlLine.Description := Description;
      ItemJnlLine."Source Type" := ItemJnlLine."Source Type"::Item;
      ItemJnlLine."Source No." := "Item No.";
      ItemJnlLine."Source Code" := "Source Code";
      ItemJnlLine."Reason Code" := "Reason Code";

//Delete the following line.
      ItemJnlLine."Line No." := "Line No."; 

    END;
  END;
END;

Zamjenski kôd

WhseItemTrkgLine.SETCURRENTKEY(
  "Source ID","Source Type","Source Subtype","Source Batch Name",
  "Source Prod. Order Line","Source Ref. No.","Location Code");
WhseItemTrkgLine.SETRANGE("Source Type",DATABASE::"Warehouse Journal Line");
WhseItemTrkgLine.SETRANGE("Source ID",WhseJnlLine2."Journal Batch Name");
WhseItemTrkgLine.SETRANGE("Source Batch Name",WhseJnlLine2."Journal Template Name");
WhseItemTrkgLine.SETRANGE("Source Ref. No.",WhseJnlLine2."Line No.");
WhseItemTrkgLine.SETRANGE("Location Code",WhseJnlLine2."Location Code");
IF WhseItemTrkgLine.FINDSET THEN BEGIN
  ItemJnlLine.INIT;

//Add the following line.
  ItemJnlLine."Line No." := WhseJnlLine2."Line No.";      

  ItemJnlLine.VALIDATE("Entry Type",ItemJnlLine."Entry Type"::Transfer);
  WITH WhseJnlLine2 DO BEGIN
    REPEAT
      IF ((WhseItemTrkgLine."New Serial No." <> WhseItemTrkgLine."Serial No.") OR
          (WhseItemTrkgLine."New Lot No." <> WhseItemTrkgLine."Lot No.") OR
          (WhseItemTrkgLine."New Expiration Date" <> WhseItemTrkgLine."Expiration Date")) THEN BEGIN
        CreateReservEntry.CreateReservEntryFor(
          DATABASE::"Item Journal Line",
          ItemJnlLine."Entry Type",
          '',
          '',
          0,
          "Line No.",
          WhseItemTrkgLine."Qty. per Unit of Measure",
          ABS(WhseItemTrkgLine."Qty. to Handle (Base)"),
          WhseItemTrkgLine."Serial No.",
          WhseItemTrkgLine."Lot No.");
        CreateReservEntry.SetNewSerialLotNo(WhseItemTrkgLine."New Serial No.",WhseItemTrkgLine."New Lot No.");
        CreateReservEntry.SetDates(WhseItemTrkgLine."Warranty Date",WhseItemTrkgLine."Expiration Date");
        CreateReservEntry.SetNewExpirationDate(WhseItemTrkgLine."New Expiration Date");
        CreateReservEntry.CreateEntry(
          "Item No.",
          "Variant Code",
          "Location Code",
          Description,
          0D,
          0D,
         0,
         ReservEntry."Reservation Status"::Prospect);
       QtyToHandleBase += ABS(WhseItemTrkgLine."Qty. to Handle (Base)");
      END;
    UNTIL WhseItemTrkgLine.NEXT = 0;
    IF QtyToHandleBase <> 0 THEN BEGIN
      ItemJnlLine."Document No." := "Whse. Document No.";
      ItemJnlLine.VALIDATE("Posting Date", "Registering Date");
      ItemJnlLine.VALIDATE("Item No.", "Item No.");
      ItemJnlLine.VALIDATE("Variant Code","Variant Code");
      ItemJnlLine.VALIDATE("Location Code","Location Code");
      ItemJnlLine.VALIDATE("Unit of Measure Code", "Unit of Measure Code");
      ItemJnlLine.VALIDATE("Quantity (Base)", QtyToHandleBase);
      ItemJnlLine.Description := Description;
      ItemJnlLine."Source Type" := ItemJnlLine."Source Type"::Item;
      ItemJnlLine."Source No." := "Item No.";
      ItemJnlLine."Source Code" := "Source Code";
      ItemJnlLine."Reason Code" := "Reason Code";
    END;
  END;
END;

            
          

Preduvjeti

Da biste primijenili ovaj hitni popravak, morate imati instaliran servisni paket Microsoft Dynamics NAV 2009 Service Pack 1.

Podaci o uklanjanju

Ovaj hitni popravak ne možete ukloniti.

Status

Microsoft je potvrdio da je to problem u Microsoftovim proizvodima koji su navedeni u odjeljku „Odnosi se na“.

Napomena: Ovo je članak "FAST PUBLISH" stvoren izravno u Microsoftovoj ustanovi za podršku. Ovdje sadržane informacije pružaju se takve kakve jesu kao odgovor na nove probleme. Kao rezultat brzine stavljanja na raspolaganje, materijali mogu sadržavati tipografske pogreške i mogu se revidirati u bilo kojem trenutku bez prethodne najave. Dodatne napomene potražite u Uvjetima korištenja .