Denne artikkelen gjelder for Microsoft Dynamics NAV for alle land og alle språkinnstillingene.

Symptomer

Du kan opprette en ordre for en blokkert vare til et tilbud i Microsoft Dynamics 2009 uventet. Når du posterer ordren, får du følgende feilmelding:

Antall Shipped i den tilknyttede rammebestillingen må ikke være større enn antallet i dokumentet linjetype for salg = 'Rammebestillingen', Bilagsnr.nummer 1, linjenummer =tall2.

Dette problemet oppstår i følgende produkter:

  • Microsoft Dynamics NAV 2009 Service Pack 1

  • Microsoft Dynamics NAV 2009 R2


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. De endrer imidlertid 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 brukerne i Microsoft Dynamics NAV-klienten er logget av systemet. Dette inkluderer tjenester for Microsoft Dynamics NAV Application Server (NAS). 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

    -objektet.

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, gjør du følgende:

  1. Endre koden i egenskapene i Salg-tilbud til ordre kodeenhet (86) som følger:
    Eksisterende kode 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);
    ...

    Ny kode 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);
    ...

    Eksisterende kode 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;
    ...

    Ny kode 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;
    ...
  2. Endre koden i egenskapene i de rammeordre til rekkefølgen kodeenhet (87) som følger:
    Eksisterende kode 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);
    ...

    Ny kode 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);
    ...

    Eksisterende kode 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
    ...

    Ny kode 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
    ...

    Eksisterende kode 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);
    ...

    Ny kode 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);
    ...

    Eksisterende kode 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)
    ...

    Ny kode 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)
    ...
  3. Endre koden i egenskapene i Kjøp.-tilbud til ordre kodeenhet (96) som følger:
    Eksisterende kode 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);
    ...

    Ny kode 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);

    Eksisterende kode 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(
    ...

    Ny kode 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(
    ...
  4. Endre koden i egenskapene i vinduet Rammebestilling Kjøpsanalyse per dimensjon. For å bestille kodeenhet (97) som følger:
    Eksisterende kode 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);
    ...

    Ny kode 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);
    ...

    Eksisterende kode 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)"
    ...

    Ny kode 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)"
    ...

    Eksisterende kode 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);
    ...

    Ny kode 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);
    ...

    Eksisterende kode 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)
    ...

    Ny kode 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)
    ...


Forutsetninger

Du må ha følgende oppdatering og ett av de følgende programmene installert for å bruke denne hurtigreparasjonen:

  • Microsoft Dynamics NAV 2009 Service Pack 1

  • Microsoft Dynamics NAV 2009 R2

  • 2642368 "Antall som skal leveres (L.enh) for element [Item_Number] i Linjenr. [Line_Number] kan ikke være mer enn [nummer]" vises en feilmelding når du prøver å opprette en bestilling fra en rammebestilling bestille i Microsoft Dynamics NAV

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 Brukfor andre hensyn.

Trenger du mer hjelp?

Utvid ferdighetene dine
Utforsk opplæring
Vær først ute med de nye funksjonene
Bli med i Microsoft Insiders

Var denne informasjonen nyttig?

Hvor fornøyd er du med språkkvaliteten?
Hva påvirket opplevelsen din?

Takk for tilbakemeldingen!

×