Acest articol se aplică la Microsoft Dynamics NAV pentru toate țările și setările regionale de limbă.
Simptome
Să presupunem că aveți un element în care valoarea Rezervare este setată la Întotdeauna în Microsoft Dynamics NAV. Când creați o comandă de producție pentru articol, elementul nu este rezervat pentru intrările în registru pentru articol care sunt create pentru articol așa cum era de așteptat.
Notă În această situație, elementul este rezervat pentru comenzile de cumpărare create pentru element.
Această problemă apare în cazul următoarelor produse:
- Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
- Microsoft Dynamics NAV 2009
- Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)
- Microsoft Dynamics NAV 5.0
Cauză
Această problemă apare deoarece cantitatea rezervată în intrările registru de articole nu este calculată atunci când sistemul rezervă automat o linie.
Rezolvare
Informații despre remedierea rapidă
O remediere rapidă acceptată este acum disponibilă de la Microsoft. Însă, scopul său este doar să corecteze problema descrisă în acest articol. Aplicați-o doar sistemelor care se confruntă cu această problemă specifică. Această remediere rapidă poate fi testată suplimentar. De aceea, dacă nu sunteți grav afectat de această problemă, vă recomandăm să așteptați următorul pachet Service Pack Microsoft Dynamics NAV sau următoarea versiune Microsoft Dynamics NAV care conține această remediere rapidă.
Notă În cazuri speciale, costurile implicate de obicei pentru apelurile de asistență pot fi revocate dacă un specialist în asistență tehnică pentru Microsoft Dynamics și produsele asociate stabilește că o anumită actualizare va rezolva problema. Costurile uzuale de suport se vor aplica pentru întrebări suplimentare de suport și pentru probleme ce nu fac obiectul actualizării în chestiune.
Informații despre instalare
Microsoft oferă exemple de programare numai în scop ilustrativ, fără nicio garanție explicită sau implicită. Aceasta include, dar nu se limitează la, garanțiile implicite de vandabilitate sau adecvare pentru un anumit scop. Acest articol presupune că sunteți familiarizat cu limbajul de programare prezentat și cu instrumentele utilizate pentru a crea și a depana proceduri. Inginerii de asistență Microsoft pot ajuta la explicarea funcționalității unei anumite proceduri, însă nu vor modifica aceste exemple pentru a furniza funcționalitate suplimentară și nu vor construi proceduri pentru a răspunde cerințelor dvs. specifice.
Notă Înainte de a instala această remediere rapidă, verificați dacă toți utilizatorii clientului Microsoft Navision sunt deconectați de la sistem. Printre aceștia se numără utilizatorii clienților Microsoft Navision Application Services (NAS). Ar trebui să fiți singurul utilizator client conectat atunci când implementați această remediere rapidă.
Pentru a implementa această remediere rapidă, trebuie să aveți o licență de dezvoltator.
Recomandăm ca contului de utilizator din fereastra Conectări Windows sau din fereastra Conectări bază de date să primească ID-ul de rol "SUPER". În cazul în care contului de utilizator nu i se poate atribui ID-ul de rol "SUPER", trebuie să verificați dacă acel cont de utilizator are următoarele permisiuni:
- Permisiunea Modificare pentru obiectul pe care îl veți modifica.
- Permisiunea de executare pentru obiectul cu ID obiect de sistem 5210 și pentru obiectul ID obiect de sistem 9015.
Notă: nu trebuie să aveți drepturi asupra depozitelor de date decât dacă trebuie să efectuați repararea datelor.
Modificări de cod
Notă: testați întotdeauna remedierile de cod într-un mediu controlat înainte de a aplica remedierile la computerele de producție.
Pentru a rezolva această problemă, urmați acești pași:
Modificați codul din funcția SetSalesLine din unitatea de cod (99000845) pentru gestionarea rezervărilor, după cum urmează:
Cod existent... SetPointerFilter(CalcReservEntry2); // Delete the following lines. IF (CalcReservEntry."Location Code" <> '') AND Location.GET(CalcReservEntry."Location Code") AND (Location."Bin Mandatory" OR Location."Require Pick") THEN CalcReservedQtyOnPick(TotalAvailQty,QtyAllocInWhse); // End of the lines. END; PROCEDURE SetReqLine@13(NewReqLine@1000 : Record 246); ...Codul de înlocuire
... SetPointerFilter(CalcReservEntry2); // Add the following line. CallCalcReservedQtyOnPick; END; PROCEDURE SetReqLine@13(NewReqLine@1000 : Record 246); ...Modificați codul din funcția SetReqLine din unitatea de cod (99000845) pentru gestionarea rezervărilor, după cum urmează:
Cod existent... GetItemSetup(CalcReservEntry); SetPointerFilter(CalcReservEntry2); END; PROCEDURE SetPurchLine@2(NewPurchLine@1000 : Record 39); ...Codul de înlocuire
... GetItemSetup(CalcReservEntry); SetPointerFilter(CalcReservEntry2); // Add the following line. CallCalcReservedQtyOnPick; END; PROCEDURE SetPurchLine@2(NewPurchLine@1000 : Record 39); ...Modificați codul din funcția SetPurchLine din unitatea de cod (99000845) pentru gestionarea rezervărilor, după cum urmează:
Cod existent... ((CreateReservEntry.SignFactor(CalcReservEntry) * ForPurchLine."Outstanding Qty. (Base)") < 0); SetPointerFilter(CalcReservEntry2); END; PROCEDURE SetItemJnlLine@3(NewItemJnlLine@1000 : Record 83); ...Codul de înlocuire
... ((CreateReservEntry.SignFactor(CalcReservEntry) * ForPurchLine."Outstanding Qty. (Base)") < 0); SetPointerFilter(CalcReservEntry2); // Add the following line. CallCalcReservedQtyOnPick; END; PROCEDURE SetItemJnlLine@3(NewItemJnlLine@1000 : Record 83);Modificați codul din funcția SetItemJnlLine în unitatea de cod (99000845) de gestionare a rezervărilor, după cum urmează:
Cod existent... ((CreateReservEntry.SignFactor(CalcReservEntry) * ForItemJnlLine."Quantity (Base)") < 0); SetPointerFilter(CalcReservEntry2); END; PROCEDURE SetProdOrderLine@9(NewProdOrderLine@1000 : Record 5406); ...Codul de înlocuire
... ((CreateReservEntry.SignFactor(CalcReservEntry) * ForItemJnlLine."Quantity (Base)") < 0); SetPointerFilter(CalcReservEntry2); // Add the following line. CallCalcReservedQtyOnPick; END; PROCEDURE SetProdOrderLine@9(NewProdOrderLine@1000 : Record 5406); ...Modificați codul din funcția SetProdOrderLine din unitatea de cod (99000845) de gestionare a rezervărilor, după cum urmează:
Cod existent... Positive := ForProdOrderLine."Remaining Qty. (Base)" < 0; SetPointerFilter(CalcReservEntry2); END; PROCEDURE SetProdOrderComponent@11(NewProdOrderComp@1000 : Record 5407); ...Codul de înlocuire
... Positive := ForProdOrderLine."Remaining Qty. (Base)" < 0; SetPointerFilter(CalcReservEntry2); // Add the following line. CallCalcReservedQtyOnPick; END; PROCEDURE SetProdOrderComponent@11(NewProdOrderComp@1000 : Record 5407);Modificați codul din funcția SetProdOrderComponent din unitatea de cod (99000845) de gestionare a rezervărilor, după cum urmează:
Cod existent... Positive := ForProdOrderComp."Remaining Qty. (Base)" > 0; SetPointerFilter(CalcReservEntry2); END; PROCEDURE SetPlanningComponent@12(NewPlanningComponent@1000 : Record 99000829); ...Codul de înlocuire
... Positive := ForProdOrderComp."Remaining Qty. (Base)" > 0; SetPointerFilter(CalcReservEntry2); // Add the following line. CallCalcReservedQtyOnPick; END; PROCEDURE SetPlanningComponent@12(NewPlanningComponent@1000 : Record 99000829); ...Modificați codul din funcția SetPlanningComponent din unitatea de cod (99000845) pentru gestionarea rezervărilor, după cum urmează:
Cod existent... Positive := ForPlanningComponent."Net Quantity (Base)" > 0; SetPointerFilter(CalcReservEntry2); END; PROCEDURE SetItemLedgEntry@34(NewItemLedgEntry@1000 : Record 32); ...Codul de înlocuire
... Positive := ForPlanningComponent."Net Quantity (Base)" > 0; SetPointerFilter(CalcReservEntry2); // Add the following line. CallCalcReservedQtyOnPick; END; PROCEDURE SetItemLedgEntry@34(NewItemLedgEntry@1000 : Record 32); ...Modificați codul din funcția SetItemLedgEntry în unitatea de cod (99000845) pentru gestionarea rezervărilor, după cum urmează:
Cod existent... GetItemSetup(CalcReservEntry); SetPointerFilter(CalcReservEntry2); END; PROCEDURE SetTransferLine@47(NewTransLine@1000 : Record 5741;Direction@1001 : 'Outbound,Inbound'); ...Codul de înlocuire
... GetItemSetup(CalcReservEntry); SetPointerFilter(CalcReservEntry2); // Add the following line. CallCalcReservedQtyOnPick; END; PROCEDURE SetTransferLine@47(NewTransLine@1000 : Record 5741;Direction@1001 : 'Outbound,Inbound'); ...Modificați codul din funcția SetTransferLine din unitatea de cod (99000845) pentru gestionarea rezervărilor, după cum urmează:
Cod existent... GetItemSetup(CalcReservEntry); SetPointerFilter(CalcReservEntry2); END; PROCEDURE SetServLine@48(NewServiceInvLine@1000 : Record 5902); ...Codul de înlocuire
... GetItemSetup(CalcReservEntry); SetPointerFilter(CalcReservEntry2); // Add the following line. CallCalcReservedQtyOnPick; END; PROCEDURE SetServLine@48(NewServiceInvLine@1000 : Record 5902); ...Modificați codul din funcția SetServLine din unitatea de cod (99000845) pentru gestionarea rezervărilor, după cum urmează:
Cod existent... SetPointerFilter(CalcReservEntry2); // Delete the following lines. IF (CalcReservEntry."Location Code" <> '') AND Location.GET(CalcReservEntry."Location Code") AND (Location."Bin Mandatory" OR Location."Require Pick") THEN CalcReservedQtyOnPick(TotalAvailQty,QtyAllocInWhse); // End of the lines. END; PROCEDURE SetBOMJnlLine@61(NewBOMJnlLine@1000 : Record 89);Codul de înlocuire
... SetPointerFilter(CalcReservEntry2); // Add the following line. CallCalcReservedQtyOnPick; END; PROCEDURE SetBOMJnlLine@61(NewBOMJnlLine@1000 : Record 89); ...Modificați codul din funcția SetBOMJnlLine din unitatea de cod (99000845) pentru gestionarea rezervărilor, după cum urmează:
Cod existent... ((CreateReservEntry.SignFactor(CalcReservEntry) * ForBOMJnlLine."Quantity (Base)") < 0); SetPointerFilter(CalcReservEntry2); END; PROCEDURE SetJobJnlLine@20(NewJobJnlLine@1000 : Record 210); ...Codul de înlocuire
... ((CreateReservEntry.SignFactor(CalcReservEntry) * ForBOMJnlLine."Quantity (Base)") < 0); SetPointerFilter(CalcReservEntry2); // Add the following line. CallCalcReservedQtyOnPick; END; PROCEDURE SetJobJnlLine@20(NewJobJnlLine@1000 : Record 210); ...Modificați codul din funcția SetJobJnlLine în unitatea de cod pentru gestionarea rezervărilor (99000845), după cum urmează:
Cod existent... ((CreateReservEntry.SignFactor(CalcReservEntry) * ForJobJnlLine."Quantity (Base)") < 0); SetPointerFilter(CalcReservEntry2); END; PROCEDURE SalesLineUpdateValues@54(VAR CurrentSalesLine@1000 : Record 37;VAR QtyToReserve@1001 : Decimal;VAR QtyReservedThisLine@1002 : Decimal); ...Codul de înlocuire
... ((CreateReservEntry.SignFactor(CalcReservEntry) * ForJobJnlLine."Quantity (Base)") < 0); SetPointerFilter(CalcReservEntry2); // Add the following line. CallCalcReservedQtyOnPick; END; PROCEDURE SalesLineUpdateValues@54(VAR CurrentSalesLine@1000 : Record 37;VAR QtyToReserve@1001 : Decimal;VAR QtyReservedThisLine@1002 : Decimal); ...Modificați codul din funcția CallCalcReservedQtyOnPick din unitatea de cod de gestionare a rezervărilor (99000845), după cum urmează:
Cod existent... CreateReservEntry2.CreateRemainingReservEntry(SurplusEntry,QtyToSave); END; BEGIN END. } ...Codul de înlocuire
... CreateReservEntry2.CreateRemainingReservEntry(SurplusEntry,QtyToSave); END; // Add the following lines. PROCEDURE CallCalcReservedQtyOnPick@104(); BEGIN IF Positive AND (CalcReservEntry."Location Code" <> '') AND Location.GET(CalcReservEntry."Location Code") AND (Location."Bin Mandatory" OR Location."Require Pick") THEN CalcReservedQtyOnPick(TotalAvailQty,QtyAllocInWhse); END; // End of the lines. BEGIN END. } ...
Cerințe preliminare
Trebuie să aveți instalat unul dintre următoarele produse pentru a aplica această remediere rapidă:
- Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
- Microsoft Dynamics NAV 2009
- Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)
- Microsoft Dynamics NAV 5.0
Eliminarea informațiilor
Nu puteți elimina această remediere rapidă.
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft care sunt listate în secțiunea „Se aplică la”.
Notă: Acesta este un articol "PUBLICARE RAPIDĂ" creat direct din cadrul organizației de asistență Microsoft. Informațiile din acest document sunt furnizate ca atare ca răspuns la problemele apărute. Ca urmare a vitezei de punere la dispoziție, materialele pot include erori tipografice și pot fi revizuite în orice moment fără preaviz. Consultați Condițiile de utilizare pentru alte considerente.