Bu makale Microsoft Dynamics NAV'a tüm ülkeler ve tüm dil yerel ayarları için geçerlidir.
Belirtiler
Microsoft Dynamics 2009 satış teklifine dışında beklenmedik biçimde olması engellenen bir madde için bir satış siparişi oluşturabilirsiniz. Satış siparişini deftere naklettiğinizde, aşağıdaki hata iletisini alırsınız:
İlişkili paket siparişteki miktar sevk edilmiş miktarı satış satırındaki Belge Türü'den büyük olmamalıdır = 'Paket sipariş', Belge No 'Sayı1', Satır No ='sayı2'.
Bu sorun aşağıdaki ürünlerde oluşur:
-
Microsoft Dynamics NAV 2009 Service Pack 1
-
Microsoft Dynamics NAV 2009 R2
Çözüm
Düzeltme bilgileri
Artık Microsoft tarafından desteklenen bir düzeltme sağlanmaktadır. Ancak bunun yalnızca bu makalede anlatılan sorunu düzeltmesi amaçlanmıştır. Yalnızca bu özel sorunla karşılaşmış olan sistemlere uygulayın. Bu düzeltme ek sınama uygulanabilir. Bu nedenle, bu sorundan ciddi bir şekilde etkilenmiyorsanız, Microsoft Dynamics NAV 2009 sonraki hizmet paketini veya, bu düzeltmeyi içeren bir sonraki Microsoft Dynamics NAV sürümü için beklemek öneririz.
Not: Özel durumlarda, destek aramaları teknik destek uzmanı Microsoft Dynamics ve ilgili ürünlere yönelik iptal edilebilir çözeceğini giderleri belirleyen belirli bir güncelleştirmenin sorununuzu. Ek destek sorularına ve söz konusu güncelleştirme için geçerli olmayan sorunlara normal destek ücretleri uygulanır.
Yükleme bilgileri
Microsoft, programlama örneklerini yalnızca gösterim amacıyla zımni veya açık garanti olmadan sağlar. Bu, satılabilirlik veya belirli bir amaca uygunluk açısından zımni garantileri içerir ancak bunlarla sınırlı değildir. Bu makale, gösterilen programlama dilini, yordamları oluşturmak ve yordamlardan hata ayıklamak için kullanılan araçları bildiğinizi varsayar. Microsoft destek mühendisleri belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilir. Ancak, işlevsellik sağlamak veya yordamlar, belirli gereksinimlerinizi karşılayacak şekilde geliştirmek amacıyla bu örnekleri değiştirmezler.
Not: Bu düzeltmeyi yüklemeden önce tüm Microsoft Dynamics NAV istemci kullanıcıların sistem kaydedildiğini doğrulayın. Bu, Microsoft Dynamics NAV uygulama sunucusu (NAS) hizmetleri içerir. Bu düzeltmeyi uyguladığınızda yalnızca istemci kullanıcının oturum açmış olması gerekir.
Bu düzeltmeyi uygulamak için bir geliştirici lisansı olması gerekir.
Kullanıcı hesabının Windows oturumu açma penceresini veya veritabanı oturumu açma penceresi "Süper" rol kimliği atanması öneririz Kullanıcı hesabı "Süper" rol Kimliği atanamaz, kullanıcı hesabı aşağıdaki izinlere sahip olduğunu doğrulamanız gerekir:
-
Nesnenin, değiştirme değişiklik yapma izni.
-
Sistem nesne kimliği 9015 ve Sistem nesnesi kimliği 5210 nesne için Execute izni
nesne.
Not: Veri onarım gerçekleştirmek zorunda sürece veri depoları haklarına sahip olmanız gerekmez.
Kod değişiklikleri
Not: Her zaman, uygulamadan önce test kodu denetimli bir ortamda üretim bilgisayarlarınıza düzeltmeler giderir.
Bu sorunu gidermek için şu adımları izleyin:
-
Satış teklifi özelliklerinde kodu sipariş kod birimi (86) şu şekilde değiştirin:
Varolan kodu 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);
...Değiştirme kodu 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);
...Varolan kodu 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;
...Değiştirme kodu 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;
... -
Kod özelliklerinde paket satış siparişi sipariş kod birimi (87) aşağıdaki gibi değiştirin:
Varolan kodu 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);
...Değiştirme kodu 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);
...Varolan kodu 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
...Değiştirme 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
...Varolan 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.");
// 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);
...Değiştirme 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);
...Varolan kodu 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)
...Değiştirme 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)
... -
Satınalma. özelliklerinde kodunu değiştirmek-sipariş kod birimi (96) gibi teklif:
Varolan kodu 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);
...Değiştirme kodu 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);Varolan kodu 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(
...Değiştirme kodu 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(
... -
Paket satınalma özelliklerinde kodu değiştirin. Sipariş kod birimi (97) aşağıdaki şekilde sipariş edebilirsiniz:
Varolan kodu 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);
...Değiştirme 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);
...Varolan kodu 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)"
...Değiştirme kodu 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)"
...Varolan 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.");
// 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);
...Değiştirme 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);
...Varolan kodu 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)
...Değiştirme kodu 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)
...
Önkoşullar
Aşağıdaki güncelleştirmeyi ve bu düzeltmeyi uygulamak için aşağıdaki ürünlerden birine sahip olmalıdır:
-
Microsoft Dynamics NAV 2009 Service Pack 1
-
Microsoft Dynamics NAV 2009 R2
-
2642368 bir paket sipariş oluşturmaya çalıştığınızda "Sevk Edilecek Mkt. (Temel) öğenin Satır No [Line_Number] [Item_Number] [sayı] değerinden fazla olamaz" hata iletisini Microsoft Dynamics NAV sipariş
Kaldırma bilgileri
Bu düzeltmeyi kaldıramazsınız.
Durum
Microsoft bu sorunun "Aşağıdakilere Uygulanır" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.
Not: Bu, doğrudan Microsoft destek kuruluşu bünyesinde oluşturulan bir "HIZLI YAYIN" makalesidir. Burada yer alan bilgiler, oluşan sorunlara yanıt olarak olduğu gibi sağlanmıştır. Makale hızla kullanıma sunulduğu için materyallerde yazım hataları olabilir ve materyaller bildirilmeksizin herhangi bir zamanda revize edilebilir. Kullanım koşullarıdiğer konular için bkz.