Ten artykuł dotyczy systemu Microsoft Dynamics NAV 2009 dla wszystkich krajów i ustawień regionalnych języka.
Objawy
Załóżmy, że uruchomienie arkusz planowania, a ustawienie Automatyczne tworzenie zestawu BOM dla elementu zestawu, który ma za mało zasobów systemu Microsoft Dynamics NAV 2009 R2 i z dodatkiem Service Pack 1 (SP1) dla systemu Microsoft Dynamics NAV 2009. Podczas księgowania zamówienia sprzedaży dla elementu zestawu, pojawi się następujący komunikat o błędzie:
Zapis rezerwacji nie istnieje. Identyfikator pola i wartości: Nr zapisu ='Entry_Number', dodatnie = 'Yes'
Rozwiązanie
Informacje o poprawce
Obsługiwana poprawka jest obecnie udostępniana przez firmę Microsoft. Jednak to jest przeznaczona tylko do usunięcia problemu opisanego w tym artykule. Zastosuj ją tylko w systemach, w których występuje ten problem. Ta poprawka może być wciąż w fazie testowania. Jeśli dany system nie jest poważnie narażony na ten problem, firma Microsoft zaleca, aby poczekać na następny dodatek service pack dla systemu Microsoft Dynamics NAV 2009 lub następną wersję systemu Microsoft Dynamics NAV, zawierający tę poprawkę.
Uwaga W wyjątkowych przypadkach opłaty, telefonujący do pomocy technicznej mogą zostać anulowane, jeśli pomocy technicznej dla systemu Microsoft Dynamics i produktów powiązanych Określa, że określonej aktualizacji, można rozwiązać swój problem. Koszty obsługi zwykłych zastosuje się do dodatkowych pytań i problemów, których nie można rozwiązać przy użyciu określonej aktualizacji.
Informacje dotyczące instalacji
Firma Microsoft podaje przykłady programowania wyłącznie, bez jakichkolwiek gwarancji wyrażonych wprost lub domyślnie. To obejmuje, ale nie jest ograniczona, ustawowej rękojmi co do przydatności handlowej lub przydatności do określonego celu. W tym artykule założono, że użytkownik zna demonstrowany język programowania oraz narzędzia, które są używane do tworzenia i debugowania procedur. Wykwalifikowani pracownicy pomocy technicznej firmy Microsoft mogą pomóc w wyjaśnieniu, jak działa określona procedura, ale nie będą modyfikować tych przykładów ani dodawać funkcjonalności i konstruować procedur w celu zaspokojenia określonych potrzeb użytkownika.
Uwaga Przed zainstalowaniem tej poprawki należy zweryfikować, że wszyscy użytkownicy klienta Microsoft Navision są wylogowani systemu. Dotyczy to również użytkowników klienta Microsoft Navision Application Services (NAS). Powinny być użytkownika klienta, który jest zalogowany w momencie wdrożyć tę poprawkę. Aby wdrożyć tę poprawkę, musi mieć licencję deweloperską. Firma Microsoft zaleca, aby do konta użytkownika w oknie identyfikatorów logowania systemu Windows lub w oknie identyfikatorów logowania bazy danych być przypisany identyfikator roli "SUPER". Jeśli konto użytkownika nie można przypisać Identyfikatora roli "SUPER", należy sprawdzić, czy konto użytkownika ma następujące uprawnienia:-
Uprawnienie Modyfikacja dla obiektu, który będzie zmieniany.
-
Uprawnienie Execute obiektu 5210 identyfikator obiektu systemu i dla obiektu 9015 identyfikator obiektu systemu .
Uwaga Nie trzeba mieć prawa do magazynów danych, chyba że konieczne jest przeprowadzenie naprawy danych.
Zmiany kodu
Uwaga Zawsze test poprawki kodu w kontrolowanym środowisku przed zastosowaniem poprawki na komputerach produkcyjnych.
Aby rozwiązać ten problem, Zmień kod w funkcji DemandtoInvProfile w codeUnit potrącenie profilu zapasów (99000854) w następujący sposób: Uwaga: 10/26/11 było niewielka zmiana tego KB, aby wprowadzić kod w tekście z kodem, który został opublikowany na NAV 5.0SP1. Funkcje nie uległ zmianie. Określone wiersze, które zmieniły się w sekcji "Dodaj" kod wymiany;Wiersz: InventoryProfile. " Nr wiersza": = Mirrorexit; Zmień na: InventoryProfile. " Nr wiersza": = NextLineNo;
Wiersz: Odstpu: = Mirrorexit + 1; został usunięty.Istniejący kod
...InventoryProfile.SETCURRENTKEY("Line No.");
SalesLine.SETCURRENTKEY(Type,"No.","Variant Code","Drop Shipment","Location Code","Document Type","Shipment Date"); SalesLine.SETFILTER("Document Type",'%1|%2',SalesLine."Document Type"::Order,SalesLine."Document Type"::"Return Order"); SalesLine.SETRANGE(Type,SalesLine.Type::Item); SalesLine.SETRANGE("No.",Item."No."); Item.COPYFILTER("Location Filter",SalesLine."Location Code"); Item.COPYFILTER("Variant Filter",SalesLine."Variant Code"); SalesLine.SETFILTER("Outstanding Qty. (Base)",'<>0'); SalesLine.SETFILTER("Shipment Date",'>%1&<=%2',0D,ToDate); IF SalesLine.FIND('-') THEN REPEAT InventoryProfile.INIT; InventoryProfile."Line No." := NextLineNo; InventoryProfile.TransferFromSalesLine(SalesLine,TempItemTrkgEntry); IF InventoryProfile.IsSupply THEN InventoryProfile.ChangeSign; InventoryProfile.INSERT; UNTIL SalesLine.NEXT = 0; ServiceLine.SETCURRENTKEY(Type,"No.","Variant Code","Location Code","Posting Date"); ServiceLine.SETRANGE("Document Type",ServiceLine."Document Type"::Order); ServiceLine.SETRANGE(Type,ServiceLine.Type::Item); ServiceLine.SETRANGE("No.",Item."No."); Item.COPYFILTER("Location Filter",ServiceLine."Location Code"); Item.COPYFILTER("Variant Filter",ServiceLine."Variant Code"); ServiceLine.SETFILTER("Outstanding Qty. (Base)",'<>0'); ServiceLine.SETFILTER("Posting Date",'>%1&<=%2',0D,ToDate); IF ServiceLine.FIND('-') THEN REPEAT InventoryProfile.INIT; InventoryProfile."Line No." := NextLineNo; InventoryProfile.TransferFromServiceInvLine(ServiceLine,TempItemTrkgEntry); IF InventoryProfile.IsSupply THEN InventoryProfile.ChangeSign; InventoryProfile.INSERT; UNTIL ServiceLine.NEXT = 0; ReqLine.SETCURRENTKEY("Ref. Order Type","Ref. Order Status","Ref. Order No.","Ref. Line No."); ReqLine.SETRANGE("Ref. Order Type",ReqLine."Ref. Order Type"::"Prod. Order"); ProdOrderComp.SETCURRENTKEY("Item No.","Variant Code","Location Code",Status,"Due Date"); ProdOrderComp.SETRANGE("Item No.",Item."No."); Item.COPYFILTER("Location Filter",ProdOrderComp."Location Code"); Item.COPYFILTER("Variant Filter",ProdOrderComp."Variant Code"); ProdOrderComp.SETRANGE(Status,ProdOrderComp.Status::Planned,ProdOrderComp.Status::Released); ProdOrderComp.SETFILTER("Due Date",'>%1&<=%2',0D,ToDate); IF ProdOrderComp.FIND('-') THEN REPEAT ReqLine.SETRANGE("Ref. Order Status",ProdOrderComp.Status); ReqLine.SETRANGE("Ref. Order No.",ProdOrderComp."Prod. Order No."); ReqLine.SETRANGE("Ref. Line No.",ProdOrderComp."Prod. Order Line No."); ReqLine.SETRANGE("Operation No.",''); IF NOT ReqLine.FIND('-') THEN BEGIN InventoryProfile.INIT; InventoryProfile."Line No." := NextLineNo; InventoryProfile.TransferFromComponent(ProdOrderComp,TempItemTrkgEntry); IF InventoryProfile.IsSupply THEN InventoryProfile.ChangeSign; InventoryProfile.INSERT; END; UNTIL ProdOrderComp.NEXT = 0; PlanningComponent.SETCURRENTKEY("Item No.","Variant Code","Location Code","Due Date"); PlanningComponent.SETRANGE("Item No.",Item."No."); Item.COPYFILTER("Location Filter",PlanningComponent."Location Code"); Item.COPYFILTER("Variant Filter",PlanningComponent."Variant Code"); PlanningComponent.SETFILTER("Due Date",'>%1&<=%2',0D,ToDate); IF PlanningComponent.FIND('-') THEN REPEAT InventoryProfile.INIT; InventoryProfile."Line No." := NextLineNo; InventoryProfile."Item No." := Item."No."; InventoryProfile.TransferFromPlanComponent(PlanningComponent,TempItemTrkgEntry); IF InventoryProfile.IsSupply THEN InventoryProfile.ChangeSign; InventoryProfile.INSERT; UNTIL PlanningComponent.NEXT = 0; TransferReqLine.SETCURRENTKEY(Type,"No.","Variant Code","Transfer-from Code","Transfer Shipment Date"); TransferReqLine.SETRANGE("Replenishment System",TransferReqLine."Replenishment System"::Transfer); TransferReqLine.SETRANGE(Type,TransferReqLine.Type::Item); TransferReqLine.SETRANGE("No.",Item."No."); Item.COPYFILTER("Location Filter",TransferReqLine."Transfer-from Code"); Item.COPYFILTER("Variant Filter",TransferReqLine."Variant Code"); TransferReqLine.SETFILTER("Transfer Shipment Date",'>%1&<=%2',0D,ToDate); IF TransferReqLine.FIND('-') THEN REPEAT InventoryProfile.INIT; InventoryProfile."Line No." := NextLineNo; InventoryProfile."Item No." := Item."No."; InventoryProfile.TransferFromOutboundTransfPlan(TransferReqLine,TempItemTrkgEntry); IF InventoryProfile.IsSupply THEN InventoryProfile.ChangeSign; InventoryProfile.INSERT; UNTIL TransferReqLine.NEXT = 0; TransLine.SETCURRENTKEY("Item No."); TransLine.SETRANGE("Item No.",Item."No."); Item.COPYFILTER("Variant Filter",TransLine."Variant Code"); Item.COPYFILTER("Location Filter",TransLine."Transfer-from Code"); TransLine.SETFILTER("Shipment Date",'>%1&<=%2',0D,ToDate); FilterIsSetOnLocation := Item.GETFILTER("Location Filter") <> ''; IF TransLine.FIND('-') THEN REPEAT InventoryProfile.INIT; InventoryProfile."Line No." := NextLineNo; InventoryProfile."Item No." := Item."No."; InventoryProfile.TransferFromOutboundTransfer(TransLine,TempItemTrkgEntry); IF InventoryProfile.IsSupply THEN InventoryProfile.ChangeSign; IF FilterIsSetOnLocation THEN InventoryProfile."Transfer Location Not Planned" := TransferLocationIsFilteredOut(Item,TransLine); InventoryProfile.INSERT; UNTIL TransLine.NEXT = 0; ...
Kod zastępczy
...InventoryProfile.SETCURRENTKEY("Line No.");
SalesLine.SETCURRENTKEY(Type,"No.","Variant Code","Drop Shipment","Location Code","Document Type","Shipment Date"); SalesLine.SETFILTER("Document Type",'%1|%2',SalesLine."Document Type"::Order,SalesLine."Document Type"::"Return Order"); SalesLine.SETRANGE(Type,SalesLine.Type::Item); SalesLine.SETRANGE("No.",Item."No."); Item.COPYFILTER("Location Filter",SalesLine."Location Code"); Item.COPYFILTER("Variant Filter",SalesLine."Variant Code"); SalesLine.SETFILTER("Outstanding Qty. (Base)",'<>0'); SalesLine.SETFILTER("Shipment Date",'>%1&<=%2',0D,ToDate); // Add the following line. SalesLine.SETRANGE("Build Kit",FALSE); // End of the line. IF SalesLine.FIND('-') THEN REPEAT InventoryProfile.INIT; InventoryProfile."Line No." := NextLineNo; InventoryProfile.TransferFromSalesLine(SalesLine,TempItemTrkgEntry); IF InventoryProfile.IsSupply THEN InventoryProfile.ChangeSign; InventoryProfile.INSERT; UNTIL SalesLine.NEXT = 0; // Add the following lines. KitSalesLine.SETCURRENTKEY("Document Type",Type,"No.","Variant Code","Location Code","Shipment Date"); KitSalesLine.SETRANGE("Document Type",KitSalesLine."Document Type"::Order); KitSalesLine.SETRANGE(Type,KitSalesLine.Type::Item); KitSalesLine.SETRANGE("No.",Item."No."); Item.COPYFILTER("Location Filter",KitSalesLine."Location Code"); Item.COPYFILTER("Variant Filter",KitSalesLine."Variant Code"); KitSalesLine.SETFILTER("Outstanding Qty. (Base)",'<>0'); KitSalesLine.SETFILTER("Shipment Date",'>%1&<=%2',0D,ToDate); IF KitSalesLine.FINDFIRST THEN REPEAT InventoryProfile.INIT; InventoryProfile."Line No." := NextLineNo; InventoryProfile.TransferFromKitSalesLine(KitSalesLine,TempItemTrkgEntry); IF InventoryProfile.IsSupply THEN InventoryProfile.ChangeSign; InventoryProfile.INSERT; UNTIL KitSalesLine.NEXT = 0; // End of the lines. ServiceLine.SETCURRENTKEY(Type,"No.","Variant Code","Location Code","Posting Date"); ServiceLine.SETRANGE("Document Type",ServiceLine."Document Type"::Order); ServiceLine.SETRANGE(Type,ServiceLine.Type::Item); ServiceLine.SETRANGE("No.",Item."No."); Item.COPYFILTER("Location Filter",ServiceLine."Location Code"); Item.COPYFILTER("Variant Filter",ServiceLine."Variant Code"); ServiceLine.SETFILTER("Outstanding Qty. (Base)",'<>0'); ServiceLine.SETFILTER("Posting Date",'>%1&<=%2',0D,ToDate); IF ServiceLine.FIND('-') THEN REPEAT InventoryProfile.INIT; InventoryProfile."Line No." := NextLineNo; InventoryProfile.TransferFromServiceInvLine(ServiceLine,TempItemTrkgEntry); IF InventoryProfile.IsSupply THEN InventoryProfile.ChangeSign; InventoryProfile.INSERT; UNTIL ServiceLine.NEXT = 0; ReqLine.SETCURRENTKEY("Ref. Order Type","Ref. Order Status","Ref. Order No.","Ref. Line No."); ReqLine.SETRANGE("Ref. Order Type",ReqLine."Ref. Order Type"::"Prod. Order"); ProdOrderComp.SETCURRENTKEY("Item No.","Variant Code","Location Code",Status,"Due Date"); ProdOrderComp.SETRANGE("Item No.",Item."No."); Item.COPYFILTER("Location Filter",ProdOrderComp."Location Code"); Item.COPYFILTER("Variant Filter",ProdOrderComp."Variant Code"); ProdOrderComp.SETRANGE(Status,ProdOrderComp.Status::Planned,ProdOrderComp.Status::Released); ProdOrderComp.SETFILTER("Due Date",'>%1&<=%2',0D,ToDate); IF ProdOrderComp.FIND('-') THEN REPEAT ReqLine.SETRANGE("Ref. Order Status",ProdOrderComp.Status); ReqLine.SETRANGE("Ref. Order No.",ProdOrderComp."Prod. Order No."); ReqLine.SETRANGE("Ref. Line No.",ProdOrderComp."Prod. Order Line No."); ReqLine.SETRANGE("Operation No.",''); IF NOT ReqLine.FIND('-') THEN BEGIN InventoryProfile.INIT; InventoryProfile."Line No." := NextLineNo; InventoryProfile.TransferFromComponent(ProdOrderComp,TempItemTrkgEntry); IF InventoryProfile.IsSupply THEN InventoryProfile.ChangeSign; InventoryProfile.INSERT; END; UNTIL ProdOrderComp.NEXT = 0; PlanningComponent.SETCURRENTKEY("Item No.","Variant Code","Location Code","Due Date"); PlanningComponent.SETRANGE("Item No.",Item."No."); Item.COPYFILTER("Location Filter",PlanningComponent."Location Code"); Item.COPYFILTER("Variant Filter",PlanningComponent."Variant Code"); PlanningComponent.SETFILTER("Due Date",'>%1&<=%2',0D,ToDate); IF PlanningComponent.FIND('-') THEN REPEAT InventoryProfile.INIT; InventoryProfile."Line No." := NextLineNo; InventoryProfile."Item No." := Item."No."; InventoryProfile.TransferFromPlanComponent(PlanningComponent,TempItemTrkgEntry); IF InventoryProfile.IsSupply THEN InventoryProfile.ChangeSign; InventoryProfile.INSERT; UNTIL PlanningComponent.NEXT = 0; TransferReqLine.SETCURRENTKEY(Type,"No.","Variant Code","Transfer-from Code","Transfer Shipment Date"); TransferReqLine.SETRANGE("Replenishment System",TransferReqLine."Replenishment System"::Transfer); TransferReqLine.SETRANGE(Type,TransferReqLine.Type::Item); TransferReqLine.SETRANGE("No.",Item."No."); Item.COPYFILTER("Location Filter",TransferReqLine."Transfer-from Code"); Item.COPYFILTER("Variant Filter",TransferReqLine."Variant Code"); TransferReqLine.SETFILTER("Transfer Shipment Date",'>%1&<=%2',0D,ToDate); IF TransferReqLine.FIND('-') THEN REPEAT InventoryProfile.INIT; InventoryProfile."Line No." := NextLineNo; InventoryProfile."Item No." := Item."No."; InventoryProfile.TransferFromOutboundTransfPlan(TransferReqLine,TempItemTrkgEntry); IF InventoryProfile.IsSupply THEN InventoryProfile.ChangeSign; InventoryProfile.INSERT; UNTIL TransferReqLine.NEXT = 0; TransLine.SETCURRENTKEY("Item No."); TransLine.SETRANGE("Item No.",Item."No."); Item.COPYFILTER("Variant Filter",TransLine."Variant Code"); Item.COPYFILTER("Location Filter",TransLine."Transfer-from Code"); TransLine.SETFILTER("Shipment Date",'>%1&<=%2',0D,ToDate); FilterIsSetOnLocation := Item.GETFILTER("Location Filter") <> ''; IF TransLine.FIND('-') THEN REPEAT InventoryProfile.INIT; InventoryProfile."Line No." := NextLineNo; InventoryProfile."Item No." := Item."No."; InventoryProfile.TransferFromOutboundTransfer(TransLine,TempItemTrkgEntry); IF InventoryProfile.IsSupply THEN InventoryProfile.ChangeSign; IF FilterIsSetOnLocation THEN InventoryProfile."Transfer Location Not Planned" := TransferLocationIsFilteredOut(Item,TransLine); InventoryProfile.INSERT; UNTIL TransLine.NEXT = 0; ...
Wymagania wstępne
Musi mieć jedną z następujących produktów, w celu zastosowania tej poprawki:
-
Microsoft Dynamics NAV 2009 R2
-
Microsoft Dynamics NAV 2009 z dodatkiem Service Pack 1
Informacje dotyczące usuwania
Nie można usunąć tej poprawki.
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.
Uwaga Jest to artykuł " szybkiej publikacji" tworzony bezpośrednio przez organizację pomocy technicznej firmy Microsoft. Informacje zawarte w niniejszym dokumencie są dostarczane jako odpowiedź na pojawiające się problemy. W wyniku przyspieszonego udostępnienia, materiały te mogą zawierać błędy typograficzne i mogą być zmieniane w dowolnym czasie bez uprzedzenia. Zobacz Warunki użytkowania w celu uzyskania innych informacji.