Denne artikkelen gjelder for alle land og alle språkinnstillingene for Microsoft Dynamics NAV 2009.
Symptomer
Anta at du kjører et Planleggingsforslag og Automatisk Stykklisteforbruk bygge Kit -innstillingen for et Kit-element som har nok papir i Microsoft Dynamics NAV 2009 R2 og Microsoft Dynamics NAV 2009 Service Pack 1 (SP1). Når du prøver å postere en ordre for varen Kit, får du følgende feilmelding:
Reservasjonen finnes ikke. ID-felt og verdier: løpenummer ='Entry_Number', Positive = "Yes"
Oppløsning
Informasjon om hurtigreparasjon
En støttet hurtigreparasjon er nå tilgjengelig fra Microsoft. Det er imidlertid bare ment å løse problemet som er beskrevet i denne artikkelen. Bruk den bare på systemer som har dette bestemte problemet. Denne hurtigreparasjonen kan gjennomgå ytterligere testing. Hvis du ikke er alvorlig påvirket av dette problemet, anbefaler vi derfor at du venter på neste oppdateringspakke for Microsoft Dynamics NAV 2009 eller den neste versjonen av Microsoft Dynamics NAV som inneholder denne hurtigreparasjonen.
Obs! I spesielle tilfeller avgifter som vanligvis påløper for støtte samtaler kan avbrytes hvis en kundestøttemedarbeider for Microsoft Dynamics og beslektede produkter avgjør at en bestemt oppdatering løser problemet. Vanlige kundestøttekostnader gjelder for ytterligere kundestøttespørsmål og problemer som ikke dekkes av den gjeldende oppdateringen.
Installasjonsinformasjon
Microsoft bruker ment som eksempler, uten garanti, verken direkte eller indirekte. Dette inkluderer, men er ikke begrenset til, eventuelle stilltiende garantier om salgbarhet eller anvendelighet for særskilte formål. Denne artikkelen forutsetter at du er kjent med programmeringsspråket som anvendes, og verktøyene som brukes til å opprette og feilsøke prosedyrer. Microsofts kundestøtteteknikere kan hjelpe deg med å forklare funksjonaliteten til en bestemt prosedyre, men de endrer ikke disse eksemplene for å lage forbedret funksjonalitet eller lage prosedyrer som dekker dine spesifikke behov.
Obs! Før du installerer denne hurtigreparasjonen, må du kontrollere at alle brukere av Microsoft Navision-klienten er logget av systemet. Dette inkluderer Microsoft Navision Application tjenester (NAS) client-brukere. Du skal bare klient-brukeren som er logget på når du implementerer denne hurtigreparasjonen. Hvis du vil implementere denne hurtigreparasjonen, må du ha en utviklerlisens. Vi anbefaler at kontoen i vinduet Windows-pålogging eller i vinduet Database-pålogging være tildelt "SUPER" rolle-ID. Hvis brukerkontoen ikke kan tilordnes "SUPER" rolle-IDen, må du kontrollere at brukerkontoen har følgende tillatelser:-
Endre-tillatelse for objektet du vil endre.
-
Tilgangsnivået for systemet objekt-IDen til 5210 objektet og systemet objekt-ID-9015 -objekt.
Obs! Du har ikke tilgangsrettigheter til datalagre med mindre du har til å utføre data reparasjon.
Kodeendringer
Obs! Alltid løser teste koden i et kontrollert miljø før du installerer hurtigreparasjoner til produksjonsdatamaskiner for.
Hvis du vil løse dette problemet ved å endre koden i DemandtoInvProfile -funksjonen i kodeenhet motpostering av lager-profil (99000854) som følger: Merk: 26/10/11 var det en liten endring til denne KB-artikkelen for å gjøre den koden på linjen med kode som ble publisert for NAV 5.0SP1. Funksjonaliteten er ikke endret. Bestemte linjer som endret er i "Legg til"-delen av koden erstatter;Linje: InventoryProfile. " Linjenr.": = Linjenr; Endre til: InventoryProfile. " Linjenr.": = NextLineNo;
Linje: Linjenr: = Linjenr + 1; ble fjernet.Eksisterende kode
...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; ...
Ny kode
...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; ...
Forutsetninger
Du må ha én av de følgende programmene installert for å bruke denne hurtigreparasjonen:
-
Microsoft Dynamics NAV 2009 R2
-
Microsoft Dynamics NAV 2009 Service Pack 1
Informasjon om fjerning
Du kan ikke fjerne denne hurtigreparasjonen.
Status
Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen "Gjelder for".
Obs! Dette er en "RASKT PUBLISERE" artikkel opprettet direkte fra innenfor organisasjonen Microsoft Kundestøtte. Informasjonen i dette dokumentet tilbys som-er som svar på nye problemer. Som et resultat av hastigheten i å gjøre den tilgjengelig materialene kan inkludere typografiske feil, og den kunne bli revidert når som helst uten varsel. Se Vilkårene for Bruk for andre hensyn.