Šis raksts neattiecas uz Microsoft Dynamics NAV visās valstīs un visu valodu lokalizācijas.
Pazīmes
Pārdošanas pasūtījuma bloķētā vienuma ir no pārdošanas piedāvājums Microsoft Dynamics 2009. gadā negaidīti izveide Pārdošanas pasūtījuma grāmatošana, ja saņemat šādu kļūdas ziņojumu:
Daudzuma nosūtīti saistītie pasūtījumu nedrīkst pārsniegt daudzuma pārdošanas rindas dokumenta tipa = "Pasūtījumu", dokumenta Nr. 'skaitlis1' rindas Nr. = "skaitli2".
Šī problēma rodas ar šādiem produktiem:
-
Microsoft Dynamics NAV 2009 servisa pakotnes 1.
-
Microsoft Dynamics NAV 2009 R2
Risinājums
Informācija par labojumfailu
Pašlaik korporācija Microsoft piedāvā atbalstītu labojumfailu. Tomēr tas ir paredzēts tikai šajā rakstā aprakstītās problēmas novēršanai. Izmantojiet to tikai tām sistēmām, kurām ir radusies tieši šī problēma. Iespējams, tiks veikta šī labojumfaila papildu testēšana. Tādēļ, ja jums ir šī problēma nerada nopietnus traucējumus, ieteicams nogaidīt, līdz tiks izlaista nākamā servisa pakotne Microsoft Dynamics NAV 2009 vai nākamo Microsoft Dynamics NAV versiju, kurā ir iekļauts šis labojumfails.
Piezīme. Īpašos gadījumos standarta izmaksas par atbalsta zvaniem nav jāsedz, ja tehniskā atbalsta speciālists Microsoft Dynamics un saistītiem produktiem nosaka, ka šo problēmu novērsīs noteikts atjauninājums. Parasti atbalsta izmaksas tiek piemērotas jautājumiem par papildu atbalstu un problēmām, kas neskar specifisko atjauninājumu apspriešanu.
Informācija par instalēšanu
Microsoft piedāvā programmēšanas piemērus tikai uzskatāmībai, nesniedzot nekādas tiešas vai netiešas garantijas. Tas ietver, bet neaprobežojas ar netiešām garantijām par piemērotību pārdošanai vai atbilstību noteiktam mērķim. Šajā rakstā tiek pieņemts, ka pārzināt programmēšanas valodu, kas tiek aprakstīta, un rīkus, kas tiek izmantoti, lai izveidotu un atkļūdotu procedūras. Microsoft atbalsta inženieri var palīdzēt izskaidrot kādas noteiktas procedūras funkcionalitāti. Taču viņi nemainīs šos piemērus, lai sniegtu skaidrākus, un neveidos jaunas procedūras, kas atbilstu īpašām prasībām.
Piezīme. Pirms šī labojumfaila instalēšanas pārliecinieties, vai, ka visi Microsoft Dynamics NAV klienta lietotāji ir atteikušies sistēmu. Tas ietver Microsoft Dynamics NAV lietojumprogrammu serveris (NAS) pakalpojumus. Jums ir jābūt tikai klienta lietotājam, kurš ir pieteicies datorā, kad izmantojat šo labojumfailu.
Lai ieviestu šo labojumfailu, datorā jābūt instalētai izstrādātāja licenci.
Ieteicams, ka lietotāja konts tiek atvērts logs Windows lietotājvārdi vai logā datu bāzes lietotājvārdi piešķirt "SUPER" lomas ID. Ja lietotāja kontam nevar piešķirt "SUPER" lomas ID, ir jāpārbauda lietotāja konts ir šādas atļaujas:
-
Objektu, kad tiks mainīts modificēt atļaujas.
-
Izpildes atļauja objekta objekta ID 5210 sistēmas un sistēmas objekta ID 9015
objektu.
Piezīme. Jums nav tiesības datu krātuvju vien veikt datu labošana.
Koda izmaiņas
Piezīme. Vienmēr pārbaudes kods novērš kontrolētā vidē pirms lietojat datoru ražošanas labojumus.
Lai novērstu šo problēmu, rīkojieties šādi:
-
Mainīt rekvizītus pārdošanas piedāvājuma kods pasūtījuma koda (86) šādi:
Kods 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);
...Aizstāšanas kods 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);
...Kods 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;
...Aizstāšanas kods 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;
... -
Mainīt rekvizītus pārdošanas pasūtījumu kods pasūtījuma koda (87) šādi:
Kods 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);
...Aizstāšanas kods = 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);
...Kods 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
...Aizstāšanas kodu 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
...Kods 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);
...Aizstāšanas kodu 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);
...Kods 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)
...Aizstāšanas kodu 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)
... -
Nomainiet šo kodu rekvizītos pirkšanas.-piedāvājums uz pasūtījuma koda (96) šādi:
Kods 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);
...Aizstāšanas kods = 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);Kods 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(
...Aizstāšanas kods 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(
... -
Mainīt rekvizītus pirkšanas pasūtījumu plāna kods. Lai pasūtījuma koda (97) šādi:
Kods 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);
...Aizstāšanas kodu 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);
...Kods 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)"
...Aizstāšanas kods 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)"
...Kods 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);
...Aizstāšanas kodu 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);
...Kods 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)
...4. koda Nomaiņa
...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)
...
Priekšnosacījumi
Ir jābūt instalētai tālāk norādīto atjauninājumu un kādam no šiem produktiem, lai lietotu šo labojumfailu:
-
Microsoft Dynamics NAV 2009 servisa pakotnes 1.
-
Microsoft Dynamics NAV 2009 R2
-
2642368 "Daudzums (bāze) nosūtīšanas rindas Nr. [Line_Number] [Item_Number] preces nevar būt vairāk par [Number]" kļūdas ziņojums, mēģinot izveidot pasūtījumu no plāna pasūtīt Microsoft Dynamics NAV
Informācija par noņemšanu
Nevar noņemt šo labojumfailu.
Statuss
Korporācija Microsoft ir apstiprinājusi, ka šī problēma pastāv Microsoft produktos, kas ir minēti sadaļā "Attiecas uz".
Piezīme. Šis ir STEIDZAMI PUBLICĒJAMS raksts, kas izveidots tieši Microsoft atbalsta organizācijā. Šajā rakstā ietvertā informācija ir sniegta, reaģējot uz nesen konstatētām problēmām. Tā kā šis raksts ir tapis pieejams neilgā laikā, materiālos var būt pareizrakstības kļūdas un tās var tikt labotas jebkurā laikā bez paziņojuma. Skatīt Lietošanasciti apsvērumi.