Tõrketeade "Kaubažurnaali reas [rea number] kasutatud dimensioon on põhjustanud tõrke", kui konteerite rakenduses Microsoft Dynamics NAV 2009 Service Pack 1 lao ümberklassifitseerimisžurnaalis rohkem kui ühe dimensioonirea

Rakenduskoht
Dynamics NAV 2009 Service Pack 1

See artikkel kehtib Microsoft Dynamics NAV-i kohta kõigis riikides ja kõigis keele lokaadides.

Sümptomid

Kui konteerite rohkem kui ühe rea, mis on määratud Microsoft Dynamics NAV 2009 Service Pack 1 (SP1) lao ümberklassifitseerimise töölehel, kuvatakse tõrketeade, mis sarnaneb järgmisega:

Märkus.

Kaubažurnaali reanumbris kasutatud dimensioon on põhjustanud tõrke. Valige kaubanime dimensiooniväärtuse tähis ala dimensiooni tähis.

      

Põhjus

See probleem ilmneb seetõttu, et funktsioon CreateItemJnlLine kasutab ühe lao ümberklassifitseerimisžurnaali rea numbrit, kui loote mõne muu lao ümberklassifitseerimisžurnaali rea dimensioonid. Reanumbrit ei värskendata enne funktsiooni lõppu. Kuna mõõtmed viitavad vanale reanumbrile, ei leita mõõtmeid hiljem.

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 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.
Selle probleemi lahendamiseks muutke koodi funktsiooni CreateItemJnlLine jaotises Laoseis. Jnl.-Register Batch codeunit (7304) järgmiselt:

Olemasolev kood

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;

Asenduskood

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;

            
          

Eeltingimused

Selle kiirparanduse rakendamiseks peab teil olema installitud Microsoft Dynamics NAV 2009 hoolduspakett Service Pack 1.

Eemaldamisteave

Seda kiirparandust ei saa eemaldada.

Olek

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

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 .