Käesolev artikkel kehtib Microsoft Dynamics nav-i kõik riigid ja kõik language locales.
Sümptomid
Saate luua müügitellimuse blokeeritud üksuse tuleb välja Microsoft Dynamics 2009 müügipakkumise ootamatult. Müügitellimuse sisestamisel kuvatakse järgmine tõrketeade:
Koguse Shipped seotud Raamtellimus ei tohi olla suurem kui koguse müügi rida dokumenditüübi = 'Raamtellimus','arv1' nr, rea nr = "arv2".
See probleem ilmneb järgmiste toodetega:
-
Microsoft Dynamics nav-i 2009 Service Pack 1
-
Microsoft Dynamics nav-i 2009 R2
Lahendus
Kiirparanduse teave
Lasknud välja toetatava käigultparanduse on nüüd Microsoftilt saadaval. Aga see on ette nähtud ainult selles artiklis kirjeldatud probleemi kõrvaldamiseks. Rakendage seda ainult süsteemides, kus ilmneb see konkreetne probleem. Seda käigultparandust võidakse täiendavalt testida. Kui see probleem teie tööd tõsiselt ei kahjusta, soovitame oodata järgmist hoolduspaketti Microsoft Dynamics nav-i 2009 või järgmise Microsoft Dynamics nav-i versiooni, mis sisaldab seda kiirparandust.
Märkus. Erijuhtudel kulud, mis tekivad teatud palub tühistada saab kui tehniline toetus Professional Microsoft Dynamics ja nendega seotud toodete leiab, et mõni konkreetne värskendus lahendab teie probleemi. Tavaline tugiteenuste kohaldatakse täiendavat tugiteenust vajavatele küsimustele ning probleemidele, mis pole lahendatavad konkreetse värskenduse installimisega.
Installiteave
Microsoft pakub programmeerimisnäiteid ainult artikli illustreerimiseks ilma igasuguse otsese või kaudse garantiita. See hõlmab, kuid ei piirdu kaudseid garantiisid turustatavuse või kindlaks otstarbeks sobivusega. See artikkel eeldab, et olete demonstreeritava programmeerimiskeelega programmeerimise keel ning luua protseduuride ja silumiseks kasutatavate tööriistadega tuttav. Microsofti tugitehnikud võivad aidata mõne konkreetse protseduuri talitlust selgitada. Siiski ei muuda nad neid näiteid lisafunktsioonide pakkumiseks ega Koosta vastavaid protseduure teie konkreetsetele nõuetele.
Märkus. Enne selle kiirparanduse installimist veenduge, et kõik Microsoft Dynamics nav-i kliendi kasutajat sisse loginud süsteem välja. See hõlmab Microsoft Dynamics nav-i rakenduste Server (NAS) teenuseid. Peaks olema ainult kliendi kasutaja on sisse logitud, kui otsustate seda käigultparandust.
Selle kiirparanduse rakendamiseks peab teil olema arendaja litsentsi.
Soovitame Windowsi sisselogimise aken või aken andmebaasi logimine kasutajakonto määrata "SUPER" rolli ID. Kui "SUPER" rolli ID-d ei saa määratud kasutajakonto, peate veenduma, et kasutaja konto on järgmised õigused:
-
Sa muutuvad objekti Muuda õigusi.
-
Käivita luba süsteemi objekti ID 5210 objekti ja süsteemi objekti ID 9015
objekti.
Märkus. Teil pole õigust andmeid talletab enne, kui olete andmete parandamiseks.
Koodi muudatusi
Märkus. Alati test koodi lahendab kontrollitavas keskkonnas enne rakendamist tootmine arvutite parandused.
Selle probleemi lahendamiseks toimige järgmiselt.
-
Muuda atribuudid müügi pakkumine koodi järjekorras koodiplokk (86) järgmiselt:
Kood 1...Opp@1004 : Record 5092;
OpportunityEntry@1006 : Record 5093;
TempOpportunityEntry@1005 : TEMPORARY Record 5093;
Cust@1008 : Record 18;
BEGIN
TESTFIELD("Document Type","Document Type"::Quote);
Cust.GET("Sell-to Customer No.");
Cust.CheckBlockedCustOnDocs(Cust,"Document Type"::Order,TRUE,FALSE);
...Asendamine kood 2
...Opp@1004 : Record 5092;
OpportunityEntry@1006 : Record 5093;
TempOpportunityEntry@1005 : TEMPORARY Record 5093;
Cust@1008 : Record 18;
// Add the following line.
Item@1010 : Record 27;
// End of the added line.
BEGIN
TESTFIELD("Document Type","Document Type"::Quote);
Cust.GET("Sell-to Customer No.");
Cust.CheckBlockedCustOnDocs(Cust,"Document Type"::Order,TRUE,FALSE);
...Kood 2
...SalesQuoteLine.SETRANGE(Type,SalesQuoteLine.Type::Item);
SalesQuoteLine.SETFILTER("No.",'<>%1','');
IF SalesQuoteLine.FINDSET THEN
REPEAT
IF (SalesQuoteLine."Outstanding Quantity" > 0) THEN BEGIN
SalesLine := SalesQuoteLine;
SalesLine.VALIDATE("Reserved Qty. (Base)",0);
SalesLine."Line No." := 0;
...Asendamine kood 2
...SalesQuoteLine.SETRANGE(Type,SalesQuoteLine.Type::Item);
SalesQuoteLine.SETFILTER("No.",'<>%1','');
IF SalesQuoteLine.FINDSET THEN
REPEAT
IF Item.GET(SalesQuoteLine."No.") THEN //add line
// Add the following line.
Item.TESTFIELD(Blocked,FALSE);
// End of the added line.
IF (SalesQuoteLine."Outstanding Quantity" > 0) THEN BEGIN
SalesLine := SalesQuoteLine;
SalesLine.VALIDATE("Reserved Qty. (Base)",0);
SalesLine."Line No." := 0;
... -
Muuda atribuudid müügi Raamtellimus koodi järjekorras koodiplokk (87) järgmiselt:
Kood 1...Cust@1001 : Record 18;
TempSalesLine@1002 : TEMPORARY Record 37;
Reservation@1005 : Form 498;
PrepmtMgt@1004 : Codeunit 441;
BEGIN
TESTFIELD("Document Type","Document Type"::"Blanket Order");
Cust.GET("Sell-to Customer No.");
Cust.CheckBlockedCustOnDocs(Cust,"Document Type"::Order,TRUE,FALSE);
...Kood 1
...Cust@1001 : Record 18;
TempSalesLine@1002 : TEMPORARY Record 37;
Reservation@1005 : Form 498;
PrepmtMgt@1004 : Codeunit 441;
// Add the following line.
Item@1006 : Record 27;
// End of the added line.
BEGIN
TESTFIELD("Document Type","Document Type"::"Blanket Order");
Cust.GET("Sell-to Customer No.");
Cust.CheckBlockedCustOnDocs(Cust,"Document Type"::Order,TRUE,FALSE);
...Kood 2
...SalesLine.SETRANGE("Blanket Order Line No.",BlanketOrderSalesLine."Line No.");
QuantityOnOrders := 0;
IF SalesLine.FINDSET THEN
REPEAT
IF SalesLine."Document Type" IN
[SalesLine."Document Type"::"Return Order",
SalesLine."Document Type"::"Credit Memo"]
THEN
...Asendamine kood 2
...SalesLine.SETRANGE("Blanket Order Line No.",BlanketOrderSalesLine."Line No.");
QuantityOnOrders := 0;
IF SalesLine.FINDSET THEN
REPEAT
// Add the following lines.
IF Item.GET(SalesLine."No.") THEN
Item.TESTFIELD(Blocked,FALSE);
// End of the added lines.
IF SalesLine."Document Type" IN
[SalesLine."Document Type"::"Return Order",
SalesLine."Document Type"::"Credit Memo"]
THEN
...Kood 3
...TempSalesLine.DELETEALL;
REPEAT
SalesLine.SETCURRENTKEY("Document Type","Blanket Order No.","Blanket Order Line No.");
SalesLine.SETRANGE("Blanket Order No.",BlanketOrderSalesLine."Document No.");
SalesLine.SETRANGE("Blanket Order Line No.",BlanketOrderSalesLine."Line No.");
// Delete the following lines.
SalesLine.SETFILTER(
"Document Type",'<>%1 & <>%2',SalesLine."Document Type"::Invoice,SalesLine."Document Type"::"Credit Memo");
// End of the deleted lines.
QuantityOnOrders := 0;
IF SalesLine.FINDSET THEN
REPEAT
IF Item.GET(SalesLine."No.") THEN
Item.TESTFIELD(Blocked,FALSE);
...Asendamine kood 3
...TempSalesLine.DELETEALL;
REPEAT
SalesLine.SETCURRENTKEY("Document Type","Blanket Order No.","Blanket Order Line No.");
SalesLine.SETRANGE("Blanket Order No.",BlanketOrderSalesLine."Document No.");
SalesLine.SETRANGE("Blanket Order Line No.",BlanketOrderSalesLine."Line No.");
QuantityOnOrders := 0;
IF SalesLine.FINDSET THEN
REPEAT
IF Item.GET(SalesLine."No.") THEN
Item.TESTFIELD(Blocked,FALSE);
...Kood 4
...QuantityOnOrders := 0;
IF SalesLine.FINDSET THEN
REPEAT
IF Item.GET(SalesLine."No.") THEN
Item.TESTFIELD(Blocked,FALSE);
// Delete the following lines.
IF SalesLine."Document Type" = SalesLine."Document Type"::"Return Order" THEN
QuantityOnOrders := QuantityOnOrders - SalesLine."Outstanding Qty. (Base)"
ELSE //Remove line
QuantityOnOrders := QuantityOnOrders + SalesLine."Outstanding Qty. (Base)";
// End of the deleted lines.
UNTIL SalesLine.NEXT = 0;
IF (ABS(BlanketOrderSalesLine."Qty. to Ship (Base)" + QuantityOnOrders +
BlanketOrderSalesLine."Qty. Shipped (Base)") >
ABS(BlanketOrderSalesLine."Quantity (Base)")) OR
(BlanketOrderSalesLine."Quantity (Base)" * BlanketOrderSalesLine."Outstanding Qty. (Base)" < 0)
...Asendamine kood 4
...QuantityOnOrders := 0;
IF SalesLine.FINDSET THEN
REPEAT
IF Item.GET(SalesLine."No.") THEN
Item.TESTFIELD(Blocked,FALSE);
// Add the following lines.
IF (SalesLine."Document Type" = SalesLine."Document Type"::"Return Order") OR
((SalesLine."Document Type" = SalesLine."Document Type"::"Credit Memo") AND
(SalesLine."Return Receipt No." = ''))
THEN
QuantityOnOrders := QuantityOnOrders - SalesLine."Outstanding Qty. (Base)"
ELSE
IF (SalesLine."Document Type" = SalesLine."Document Type"::Order) OR
((SalesLine."Document Type" = SalesLine."Document Type"::Invoice) AND
(SalesLine."Shipment No." = ''))
THEN
QuantityOnOrders := QuantityOnOrders + SalesLine."Outstanding Qty. (Base)";
// End of the added lines.
UNTIL SalesLine.NEXT = 0;
IF (ABS(BlanketOrderSalesLine."Qty. to Ship (Base)" + QuantityOnOrders +
BlanketOrderSalesLine."Qty. Shipped (Base)") >
ABS(BlanketOrderSalesLine."Quantity (Base)")) OR
(BlanketOrderSalesLine."Quantity (Base)" * BlanketOrderSalesLine."Outstanding Qty. (Base)" < 0)
... -
Muuta koodi atribuutides ost.-tsitaat tellimuse koodiplokk (96) järgmiselt:
Kood 1...OldPurchCommentLine@1001 : Record 43;
FromDocDim@1000 : Record 357;
ToDocDim@1003 : Record 357;
Vend@1002 : Record 23;
BEGIN
TESTFIELD("Document Type","Document Type"::Quote);
Vend.GET("Buy-from Vendor No.");
Vend.CheckBlockedVendOnDocs(Vend,FALSE);
...Kood 1
...OldPurchCommentLine@1001 : Record 43;
FromDocDim@1000 : Record 357;
ToDocDim@1003 : Record 357;
Vend@1002 : Record 23;
// Add the following line.
Item@1004 : Record 27;
// End of the added line.
BEGIN
TESTFIELD("Document Type","Document Type"::Quote);
Vend.GET("Buy-from Vendor No.");
Vend.CheckBlockedVendOnDocs(Vend,FALSE);Kood 2
...ToDocDim.SETRANGE("Table ID",DATABASE::"Purchase Line");
IF PurchQuoteLine.FINDSET THEN
REPEAT
PurchOrderLine := PurchQuoteLine;
PurchOrderLine."Document Type" := PurchOrderHeader."Document Type";
PurchOrderLine."Document No." := PurchOrderHeader."No.";
ReservePurchLine.TransferPurchLineToPurchLine(
...Asendamine kood 2
...ToDocDim.SETRANGE("Table ID",DATABASE::"Purchase Line");
IF PurchQuoteLine.FINDSET THEN
REPEAT
// Add the following lines.
IF Item.GET(PurchQuoteLine."No.") THEN
Item.TESTFIELD(Blocked,FALSE);
// End of the added lines.
PurchOrderLine := PurchQuoteLine;
PurchOrderLine."Document Type" := PurchOrderHeader."Document Type";
PurchOrderLine."Document No." := PurchOrderHeader."No.";
ReservePurchLine.TransferPurchLineToPurchLine(
... -
Muuta koodi atribuutides üldine ost. Selleks, et tellida koodiplokk (97) on järgmine:
Kood 1...FromDocDim@1000 : Record 357;
ToDocDim@1002 : Record 357;
Vend@1001 : Record 23;
PrepmtMgt@1003 : Codeunit 441;
BEGIN
TESTFIELD("Document Type","Document Type"::"Blanket Order");
Vend.GET("Buy-from Vendor No.");
Vend.CheckBlockedVendOnDocs(Vend,FALSE);
...Kood 1
...FromDocDim@1000 : Record 357;
ToDocDim@1002 : Record 357;
Vend@1001 : Record 23;
PrepmtMgt@1003 : Codeunit 441;
// Add the following line.
Item@1004 : Record 27;
// End of the added line.
BEGIN
TESTFIELD("Document Type","Document Type"::"Blanket Order");
Vend.GET("Buy-from Vendor No.");
Vend.CheckBlockedVendOnDocs(Vend,FALSE);
...Kood 2
...PurchLine.SETRANGE("Blanket Order Line No.",PurchBlanketOrderLine."Line No.");
QuantityOnOrders := 0;
IF PurchLine.FINDSET THEN
REPEAT
IF PurchLine."Document Type" IN
[PurchLine."Document Type"::"Return Order",
PurchLine."Document Type"::"Credit Memo"] THEN
QuantityOnOrders := QuantityOnOrders - PurchLine."Outstanding Qty. (Base)"
...Asendamine kood 2
...PurchLine.SETRANGE("Blanket Order Line No.",PurchBlanketOrderLine."Line No.");
QuantityOnOrders := 0;
IF PurchLine.FINDSET THEN
REPEAT
// Add the following lines.
IF Item.GET(PurchLine."No.") THEN
Item.TESTFIELD(Blocked,FALSE);
// End of the added lines.
IF PurchLine."Document Type" IN
[PurchLine."Document Type"::"Return Order",
PurchLine."Document Type"::"Credit Memo"] THEN
QuantityOnOrders := QuantityOnOrders - PurchLine."Outstanding Qty. (Base)"
...Kood 3
...IF PurchBlanketOrderLine.FINDSET THEN
REPEAT
PurchLine.SETCURRENTKEY("Document Type","Blanket Order No.","Blanket Order Line No.");
PurchLine.SETRANGE("Blanket Order No.",PurchBlanketOrderLine."Document No.");
PurchLine.SETRANGE("Blanket Order Line No.",PurchBlanketOrderLine."Line No.");
// Delete the following lines.
PurchLine.SETFILTER(
"Document Type",'<>%1 & <>%2',PurchLine."Document Type"::Invoice,PurchLine."Document Type"::"Credit Memo");
// End of the deleted lines.
QuantityOnOrders := 0;
IF PurchLine.FINDSET THEN
REPEAT
IF Item.GET(PurchLine."No.") THEN
Item.TESTFIELD(Blocked,FALSE);
...Asendamine kood 3
...IF PurchBlanketOrderLine.FINDSET THEN
REPEAT
PurchLine.SETCURRENTKEY("Document Type","Blanket Order No.","Blanket Order Line No.");
PurchLine.SETRANGE("Blanket Order No.",PurchBlanketOrderLine."Document No.");
PurchLine.SETRANGE("Blanket Order Line No.",PurchBlanketOrderLine."Line No.");
QuantityOnOrders := 0;
IF PurchLine.FINDSET THEN
REPEAT
IF Item.GET(PurchLine."No.") THEN
Item.TESTFIELD(Blocked,FALSE);
...Kood 4
...QuantityOnOrders := 0;
IF PurchLine.FINDSET THEN
REPEAT
IF Item.GET(PurchLine."No.") THEN
Item.TESTFIELD(Blocked,FALSE);
// Delete the following lines.
IF PurchLine."Document Type" = PurchLine."Document Type"::"Return Order" THEN
QuantityOnOrders := QuantityOnOrders - PurchLine."Outstanding Qty. (Base)"
ELSE
QuantityOnOrders := QuantityOnOrders + PurchLine."Outstanding Qty. (Base)";
// End of the deleted lines.
UNTIL PurchLine.NEXT = 0;
IF (ABS(PurchBlanketOrderLine."Qty. to Receive (Base)" + QuantityOnOrders +
PurchBlanketOrderLine."Qty. Received (Base)") >
ABS(PurchBlanketOrderLine."Quantity (Base)")) OR
(PurchBlanketOrderLine."Quantity (Base)" * PurchBlanketOrderLine."Outstanding Qty. (Base)" < 0)
...Asendamine kood 4
...QuantityOnOrders := 0;
IF PurchLine.FINDSET THEN
REPEAT
IF Item.GET(PurchLine."No.") THEN
Item.TESTFIELD(Blocked,FALSE);
// Add the following lines.
IF (PurchLine."Document Type" = PurchLine."Document Type"::"Return Order") OR
((PurchLine."Document Type" = PurchLine."Document Type"::"Credit Memo") AND
(PurchLine."Return Shipment No." = ''))
THEN
QuantityOnOrders := QuantityOnOrders - PurchLine."Outstanding Qty. (Base)"
ELSE
IF (PurchLine."Document Type" = PurchLine."Document Type"::Order) OR
((PurchLine."Document Type" = PurchLine."Document Type"::Invoice) AND
(PurchLine."Receipt No." = ''))
THEN
QuantityOnOrders := QuantityOnOrders + PurchLine."Outstanding Qty. (Base)";
// End of the added lines.
UNTIL PurchLine.NEXT = 0;
IF (ABS(PurchBlanketOrderLine."Qty. to Receive (Base)" + QuantityOnOrders +
PurchBlanketOrderLine."Qty. Received (Base)") >
ABS(PurchBlanketOrderLine."Quantity (Base)")) OR
(PurchBlanketOrderLine."Quantity (Base)" * PurchBlanketOrderLine."Outstanding Qty. (Base)" < 0)
...
Eeltingimused
Peab olema järgmine värskendus ja üks selle kiirparanduse installinud järgmisi tooteid:
-
Microsoft Dynamics nav-i 2009 Service Pack 1
-
Microsoft Dynamics nav-i 2009 R2
-
2642368 "Kogus Real nr [Line_Number] [Item_Number] kauba saaja (alus) ei saa olla suurem kui [Number]" tõrketeade, kui proovite luua tellimuse teki tellida Microsoft Dynamics nav-i
Eemaldamise teave
See käigultparandus ei saa eemaldada.
Olek
Microsoft on kinnitanud, et see probleem esineb jaotises "Kehtib järgmiste toodete kohta" loetletud Microsofti toodetel.
Märkus. See on "Kiire avaldamise" artikli loonud otse Microsofti tugiteenuse pakkujalt. Siintoodud teave on esitatud lähtudes-olemasoleval kujul vastusena ilmnenud probleemidele. Kiire avaldamise materjalides esineda trükivigu ja võidakse muuta ette teatamata. Vaadake Kasutustingimusedmuid kaalutlusi.