"-Gavėjo kodas" laukas yra tuščias, netikėtai paleidus specialią pirkimo užsakymo Microsoft Dynamics NAV 2009 gauti pardavimo užsakymo funkciją, specialus užsakymas

Šablonas: CPR - Navision kodas nustatyti šablonas

BUG #: 156421 (turinio priežiūra)

Šis straipsnis taikomas Microsoft Dynamics NAV visose šalyse ir visų kalbų aplinkos.

Požymiai

Panaudoję funkciją Gauti pardavimo užsakymo Specialus užsakymas specialioje pirkimo užsakymo Microsoft Dynamics NAV 2009, specialią pirkimo užsakymo antraštė lauko - gavėjo kodas yra tuščias, netikėtai.
Ši problema iškyla faile šiems produktams:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 1 pakeitimų paketas (SP1)

Sprendimas

Karštųjų pataisų informacija

Palaikomą naujausią pataisą dabar yra Microsoft. Tačiau jos skirtos tik šiame straipsnyje aprašytai problemai spręsti. Taikyti ją tik sistemoms, kuriose kyla ši konkreti problema. Šios karštosios pataisos gali būti papildomai išbandoma. Todėl, jei jums nelabai trukdo Ši problema, rekomenduojame palaukti kito "Microsoft Dynamics NAV 2009" pakeitimų paketo arba kitą versiją Microsoft Dynamics NAV, kuriame bus šios karštosios pataisos.

Pastaba. Konkrečiais atvejais už palaikymo skambučius gali būti atšaukti, jei techninės pagalbos specialistas Microsoft Dynamics ir susijusių produktų taikomi įprasti mokesčiai nustato, kad jūsų problemą galima išspręsti naudojant konkretų naujinimą. Į įprastos kainos už palaikymą taikomos papildomos palaikymo klausimams ir problemoms, kurių negalima išspręsti naudojant minėtą naujinimą.

Jei šios karštosios pataisos nepaskelbtos kaip viešai prieinamos (tai reiškia, viešasis URL šios karštosios pataisos yra suteikta šiame straipsnyje), norint platinti reikia techninio vadovo, problemų sprendimo komandos nario ar vadovo patvirtinimo ir taikoma toliau pateikta informacija:

  • Norėdami gauti karštąją pataisą, klientai turi patirti klaidų, paminėtam skyriuje "Požymiai".

  • Turite stebėti klientus, kuriems siunčiate karštąsias pataisas ir pateikti jiems kitą pakeitimų paketą, kai tik jis bus išleistas (jei pakeitimų paketas bus išleistas).

Šias karštąsias pataisas planuojama įtraukti į Microsoft Dynamics NAV 2009 R2.

VSTF DynamicsNAVSE: 255792

Diegimo informacija

"Microsoft" pateikia programavimo pavyzdžius tik, tačiau nesuteikia jokių aiškių arba numanomų garantijų. Tai apima, bet neapsiribojant, numanomas garantijas dėl perkamumo ir tinkamumo konkrečiam tikslui. Šis straipsnis parašytas galvojant, kad esate susipažinę su pateikta programavimo kalba ir įrankiais, kurie yra naudojami procedūroms kurti ir derinti. "Microsoft" palaikymo inžinieriai gali padėti paaiškindami tam tikros procedūros funkcinę galimybę, tačiau jie nekeis šių pavyzdžių, kad numatytų papildomą funkcinę galimybę arba sukurtų konkrečius jūsų reikalavimus atitinkančias procedūras.

Pastaba. Prieš diegdami šias karštąsias pataisas, patikrinkite, kad visi Microsoft Navision klientas vartotojai išsiregistravę sistema. Tai reiškia, kad Microsoft Navision programos paslaugos (NAS) kliento naudotojai. Jums turėtų būti tik kliento vartotojo, kuris yra prisijungęs, kai atliekate šias karštąsias pataisas.

Norint pritaikyti šią karštąją pataisą, turite programų kūrėjo licencijos.

Rekomenduojame, kad vartotojo abonemento Windows registravimosi lange arba duomenų bazės prisijungimų langas priskiriamas "SUPER" vaidmenį ID. Jei vartotojo abonementas negali būti priskirta "SUPER" ID., turi patikrinti, kad vartotojo abonementas turi šias teises:

  • Keisti teisės objektas, kuris bus pakeisti.

  • Teisės vykdyti sistemos objekto ID 5210 objekto ir sistemos objekto ID 9015 objekto.



Pastaba. Jūs neturite turėti teisių į duomenų saugyklų, nebent jūs turite atlikti duomenų atkūrimo.

Pastaba.

Pastaba. Visada bandymas kodas nustato kontroliuojamoje aplinkoje prieš taikydami nustato savo gamybos kompiuteriams.
Norėdami išspręsti šią problemą, atlikite šiuos veiksmus:

  1. Pakeisti GetDescriptionAndRcptName funtion, kad ReqJnlManagement Kodinys (330) kaip nurodyta žemiau:
    Esamas kodas

    ...ELSE
    Description := '';

    // Delete the following lines.
    ReqLine.Type::Item:
    IF Item.GET(ReqLine."No.") THEN
    Description := Item.Description
    ELSE
    Description := '';
    // End of the lines.

    END;
    END;

    IF ReqLine."Vendor No." = '' THEN
    ...

    Pastaba.

    ...ELSE
    Description := '';
    END;
    END;

    IF ReqLine."Vendor No." = '' THEN
    ...
  2. Pridėti naują visuotinis kintamasis, kad užklausos darbalapyje.-Įsitikinkite, kad Kodinys (333), ir tada nurodykite kintamojo taip:

    • Vardas: DropShptSpecialOrderExists

    • Duomenų tipas: Boolean

  3. Įtraukti naujos vietos kintamąjį InsertPurchOrderLine funkcija, kad užklausos darbalapyje.-Įsitikinkite, kad Kodinys (333), ir tada nurodykite kintamojo taip:

    • Vardas: SalesHeader

    • Duomenų tipas: įrašas

    • Potipį: pardavimų antraštės

  4. Įtraukti naujos vietos kintamąjį InsertPurchOrderLine funkcija, kad užklausos darbalapyje.-Įsitikinkite, kad Kodinys (333), ir tada nurodykite kintamojo taip:

    • Vardas: DropShptSplOrderDiffAddress

    • Duomenų tipas: loginis kintamasis

  5. Pakeisti InsertPurchOrderLine funkcija, kad užklausos darbalapyje.-Įsitikinkite, kad Kodinys (333) taip:
    Esamas kodas

    ...WITH ReqLine2 DO BEGIN
    IF ("No." = '') OR ("Vendor No." = '') OR (Quantity = 0) THEN
    EXIT;


    IF (PurchOrderHeader."Buy-from Vendor No." <> "Vendor No.") OR
    (PurchOrderHeader."Sell-to Customer No." <> "Sell-to Customer No.") OR
    (PrevShipToCode <> "Ship-to Code") OR
    (PurchOrderHeader."Order Address Code" <> "Order Address Code") OR
    (PurchOrderHeader."Currency Code" <> "Currency Code") OR

    // Delete the following line.
    (PrevPurchCode <> "Purchasing Code")

    THEN BEGIN
    ...

    Pastaba.

    ...WITH ReqLine2 DO BEGIN
    IF ("No." = '') OR ("Vendor No." = '') OR (Quantity = 0) THEN
    EXIT;

    // Add the following lines.
    DropShptSpecialOrderExists := FALSE;
    IF SalesHeader.GET(SalesHeader."Document Type"::Order,"Sales Order No.") THEN BEGIN
    DropShptSpecialOrderExists := PurchOrderHeader.DropShptSplOrderExists(SalesHeader);
    IF DropShptSpecialOrderExists THEN
    DropShptSplOrderDiffAddress :=
    NOT PurchOrderHeader.CheckAndAddShipToAdd(SalesHeader,FALSE);
    END;
    // End of the lines.

    IF (PurchOrderHeader."Buy-from Vendor No." <> "Vendor No.") OR
    (PurchOrderHeader."Sell-to Customer No." <> "Sell-to Customer No.") OR
    (PrevShipToCode <> "Ship-to Code") OR
    (PurchOrderHeader."Order Address Code" <> "Order Address Code") OR
    (PurchOrderHeader."Currency Code" <> "Currency Code") OR

    // Add the following lines.
    (PrevPurchCode <> "Purchasing Code") OR
    (DropShptSplOrderDiffAddress)
    // End of the lines.

    THEN BEGIN
    ...
  6. Įtraukti naujos vietos kintamąjį InsertHeader funkcija, kad užklausos darbalapyje.-tvarka Kodinys (333), ir tada nurodykite kintamojo taip:

    • Vardas: SalesHeader

    • Duomenų tipas: įrašas

    • Potipį: pardavimų antraštės

  7. Pakeisti InsertHeader funkcija, kad užklausos darbalapyje.-Įsitikinkite, kad Kodinys (333) taip:
    Esamas kodas

    ...PurchOrderHeader.SetShipToForSpecOrder;
    END;

    PurchOrderHeader.MODIFY;
    ...

    Pastaba.

    ...PurchOrderHeader.SetShipToForSpecOrder;
    END;

    // Add the following lines.
    IF DropShptSpecialOrderExists THEN BEGIN
    SalesHeader.GET(SalesHeader."Document Type"::Order,"Sales Order No.");
    PurchOrderHeader."Ship-to Name" := SalesHeader."Ship-to Name";
    PurchOrderHeader."Ship-to Name 2" := SalesHeader."Ship-to Name 2";
    PurchOrderHeader."Ship-to Address" := SalesHeader."Ship-to Address";
    PurchOrderHeader."Ship-to Address 2" := SalesHeader."Ship-to Address 2";
    PurchOrderHeader."Ship-to Post Code" := SalesHeader."Ship-to Post Code";
    PurchOrderHeader."Ship-to City" := SalesHeader."Ship-to City";
    PurchOrderHeader."Ship-to Contact" := SalesHeader."Ship-to Contact";
    END;
    // End of the lines.

    PurchOrderHeader.MODIFY;
    ...
  8. Pakeisti EnterPurchaseItemCrossRef funkcija, Kodinys Dist. integravimas (5702):
    Esamas kodas

    ...IF Found THEN BEGIN
    "Cross-Reference No." := ItemCrossReference."Cross-Reference No.";
    "Unit of Measure (Cross Ref.)" := ItemCrossReference."Unit of Measure";
    "Cross-Reference Type" := ItemCrossReference."Cross-Reference Type";
    "Cross-Reference Type No." := ItemCrossReference."Cross-Reference Type No.";

    // Delete the following lines.
    IF ItemCrossReference.Description <> '' THEN BEGIN
    Description := ItemCrossReference.Description;
    "Description 2" := '';
    END;
    // End of the lines.

    END ELSE BEGIN
    "Cross-Reference No." := '';
    "Cross-Reference Type" := "Cross-Reference Type"::" ";
    "Cross-Reference Type No." := '';

    // Delete the following lines.
    IF "Variant Code" <> '' THEN BEGIN
    ItemVariant.GET("No.","Variant Code");
    Description := ItemVariant.Description;
    "Description 2" := ItemVariant."Description 2";
    END ELSE BEGIN
    Item.GET("No.");
    Description := Item.Description;
    "Description 2" := Item."Description 2";
    END;
    // End of the lines.

    GetItemTranslation;
    ...

    Pastaba.

    ...IF Found THEN BEGIN
    "Cross-Reference No." := ItemCrossReference."Cross-Reference No.";
    "Unit of Measure (Cross Ref.)" := ItemCrossReference."Unit of Measure";
    "Cross-Reference Type" := ItemCrossReference."Cross-Reference Type";
    "Cross-Reference Type No." := ItemCrossReference."Cross-Reference Type No.";
    END ELSE BEGIN
    "Cross-Reference No." := '';
    "Cross-Reference Type" := "Cross-Reference Type"::" ";
    "Cross-Reference Type No." := '';
    GetItemTranslation;
    ...
  9. Pakeisti GetSpecialOrders funkcija, Kodinys Dist. integravimas (5702):
    Esamas kodas

    ...TESTFIELD("Sell-to Customer No.",SalesHeader."Sell-to Customer No.");
    TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code");

    // Delete the following line.
    PurchHeader.SetShipToForSpecOrder;

    PurchLine.LOCKTABLE;
    ...

    Pastaba.

    ...TESTFIELD("Sell-to Customer No.",SalesHeader."Sell-to Customer No.");
    TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code");

    // Add the following lines.
    IF DropShptSplOrderExists(SalesHeader) THEN
    CheckAndAddShipToAdd(SalesHeader,TRUE);
    // End of the lines.

    PurchLine.LOCKTABLE;
    ...
  10. Pakeisti TransfldsFromSalesToPurchLine funkcija, kopijuoti dokumento valdymo Kodinys (6620):
    Esamas kodas

    ...VALIDATE("Direct Unit Cost");
    END;
    ...

    Pastaba.

    ...VALIDATE("Direct Unit Cost");

    // Add the following lines.
    Description := FromSalesLine.Description;
    "Description 2" := FromSalesLine."Description 2";
    // End of the lines.

    END;
    ...
  11. Pakeisti kodą pirkimo.-gauti Drop Shpt. Kodinys (76) taip:
    Esamas kodas 1

    ...TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code");

    PurchLine.LOCKTABLE;
    ...

    Atsarginis kodas 1

    ...TESTFIELD("Ship-to Code",SalesHeader."Ship-to Code");

    // Add the following line.
    IF DropShptSplOrderExists(SalesHeader) THEN
    CheckAndAddShipToAdd(SalesHeader,TRUE);
    // End of the lines.

    PurchLine.LOCKTABLE;
    ...

    Esamas kodas 2

    ...CopyDocMgt.TransfldsFromSalesToPurchLine(SalesLine,PurchLine);
    PurchLine.Description := SalesLine.Description;
    PurchLine."Sales Order No." := SalesLine."Document No.";
    ...

    Atsarginis kodas 2

    ...CopyDocMgt.TransfldsFromSalesToPurchLine(SalesLine,PurchLine);
    PurchLine.Description := SalesLine.Description;

    // Add the following line.
    PurchLine."Description 2" := SalesLine."Description 2";

    PurchLine."Sales Order No." := SalesLine."Document No.";
    ...
  12. Pakeisti InsertReqWkshLine gauti pardavimo užsakymų ataskaitoje (698) kodą taip:
    Esamas kodas

    ..."Sell-to Customer No." := SalesLine."Sell-to Customer No.";
    SalesHeader.GET(1,SalesLine."Document No.");
    IF SpecOrder <> 1 THEN
    ...

    Pastaba.

    ..."Sell-to Customer No." := SalesLine."Sell-to Customer No.";

    // Add the following lines.
    Description := SalesLine.Description;
    "Description 2" := SalesLine."Description 2";
    // End of the lines.

    SalesHeader.GET(1,SalesLine."Document No.");
    IF SpecOrder <> 1 THEN
    ...
  13. Pridėti naują visuotinis kintamasis pirkimo antraštės lentelėje (38), ir tada nurodykite kintamojo taip:

    • Vardas: NameAddressDetails

    • Duomenų tipas: tekstas

    • Ilgis: 512

  14. Pridėti naują visuotinis kintamasis pirkimo antraštės lentelėje (38), ir tada nurodykite kintamojo taip:

    • Vardas: NameAddressDetails2

    • Duomenų tipas: tekstas

    • Ilgis: 512

  15. Pridėti naują teksto nuolat pirkimo antraštės lentelėje (38), ir tada nurodykite teksto konstanta taip:

    • Vardas: Text051

    • ConstValue: laukas %1 pirkimo užsakymo 2 turi būti toks pat, kaip pardavimo užsakymų %3.

  16. Sukurkite naują CheckAndAddShipToAdd funkcija pirkimo antraštės lentelėje (38). Norėdami tai padaryti, atlikite šiuos veiksmus:

    1. Pridėti naują vietos parametras CheckAndAddShipToAdd funkcija – pirkimo antraštės lentelės (38), ir tada nurodykite parametrą taip:

      • Var: No

      • Vardas: SalesHeader

      • Duomenų tipas: įrašas

      • Potipį: pardavimų antraštės

    2. Pridėti naują vietos parametras CheckAndAddShipToAdd funkcija – pirkimo antraštės lentelės (38), ir tada nurodykite parametrą taip:

      • Var: No

      • Vardas: ShowError

      • Duomenų tipas: Boolean

    3. Pridėti grąžinimo reikšmė CheckAndAddShipToAdd funkcija – pirkimo antraštės lentelės (38), ir tada nurodykite reikšmę taip:

      • Grąžinamas tipas: loginis kintamasis

    4. Pridėti naujos vietos kintamąjį CheckAndAddShipToAdd funkcija – pirkimo antraštės lentelės (38), ir tada nurodykite kintamojo taip:

      • Vardas: PurchLine2

      • Duomenų tipas: įrašas

      • Potipį: PurchLine2

    5. Įdėkite šį kodą CheckAndAddShipToAdd funkcija – pirkimo antraštės lentelės (38):

      IF ShowError THEN BEGINPurchLine2.RESET;
      PurchLine2.SETRANGE("Document Type","Document Type"::Order);
      PurchLine2.SETRANGE("Document No.","No.");
      IF NOT PurchLine2.ISEMPTY THEN BEGIN
      IF "Ship-to Name" <> SalesHeader."Ship-to Name" THEN
      ERROR(Text051,FIELDCAPTION("Ship-to Name"),"No.",SalesHeader."No.");
      IF "Ship-to Name 2" <> SalesHeader."Ship-to Name 2" THEN
      ERROR(Text051,FIELDCAPTION("Ship-to Name 2"),"No.",SalesHeader."No.");
      IF ("Ship-to Address" <> SalesHeader."Ship-to Address") THEN
      ERROR(Text051,FIELDCAPTION("Ship-to Address"),"No.",SalesHeader."No.");
      IF ("Ship-to Address 2" <> SalesHeader."Ship-to Address 2") THEN
      ERROR(Text051,FIELDCAPTION("Ship-to Address 2"),"No.",SalesHeader."No.");
      IF ("Ship-to Post Code" <> SalesHeader."Ship-to Post Code") THEN
      ERROR(Text051,FIELDCAPTION("Ship-to Post Code"),"No.",SalesHeader."No.");
      IF ("Ship-to City" <> SalesHeader."Ship-to City") THEN
      ERROR(Text051,FIELDCAPTION("Ship-to City"),"No.",SalesHeader."No.");
      IF ("Ship-to Contact" <> SalesHeader."Ship-to Contact") THEN
      ERROR(Text051,FIELDCAPTION("Ship-to Contact"),"No.",SalesHeader."No.");
      END ELSE BEGIN
      // no purchase line exists
      "Ship-to Name" := SalesHeader."Ship-to Name";
      "Ship-to Name 2" := SalesHeader."Ship-to Name 2";
      "Ship-to Address" := SalesHeader."Ship-to Address";
      "Ship-to Address 2" := SalesHeader."Ship-to Address 2";
      "Ship-to Post Code" := SalesHeader."Ship-to Post Code";
      "Ship-to City" := SalesHeader."Ship-to City";
      "Ship-to Contact" := SalesHeader."Ship-to Contact";
      END;
      END ELSE BEGIN
      NameAddressDetails :=
      SalesHeader."Ship-to Name" + SalesHeader."Ship-to Name 2" +
      SalesHeader."Ship-to Address" + SalesHeader."Ship-to Address 2" +
      SalesHeader."Ship-to Post Code" + SalesHeader."Ship-to City" +
      SalesHeader."Ship-to Contact";
      IF NameAddressDetails2 = '' THEN
      NameAddressDetails2 := NameAddressDetails;
      EXIT(NameAddressDetails2 = NameAddressDetails);
      END;
  17. Sukurkite naują DropShptSplOrderExists funkcija pirkimo antraštės lentelėje (38). Norėdami tai padaryti, atlikite šiuos veiksmus:

    1. Pridėti naują vietos parametras DropShptSplOrderExists funkcija – pirkimo antraštės lentelės (38), ir tada nurodykite parametrą taip:

      • Var: No

      • Vardas: SalesHeader

      • Duomenų tipas: įrašas

      • Potipį: pardavimų antraštės

    2. Pridėti reikšmę įveskite pirkimo antraštės lentelės (38) DropShptSplOrderExists funkcija, ir tada nurodykite reikšmę taip:

      • Grąžinamas tipas: Boolean

    3. Pridėti naujos vietos kintamąjį DropShptSplOrderExists funkcija – pirkimo antraštės lentelės (38), ir tada nurodykite kintamojo taip:

      • Vardas: SalesLine2

      • Duomenų tipas: įrašas

      • Potipį: pardavimo eilutė

    4. Įdėkite šį kodą DropShptSplOrderExists funkcija – pirkimo antraštės lentelės (38):

      // returns TRUE if sales is either Drop Shipment of Special OrderSalesLine2.RESET;
      SalesLine2.SETRANGE("Document Type",SalesLine2."Document Type"::Order);
      SalesLine2.SETRANGE("Document No.",SalesHeader."No.");
      SalesLine2.SETRANGE("Drop Shipment",TRUE);
      IF NOT SalesLine2.ISEMPTY THEN
      EXIT(TRUE);

      SalesLine2.SETRANGE("Drop Shipment");
      SalesLine2.SETRANGE("Special Order",TRUE);
      EXIT(NOT SalesLine2.ISEMPTY);

Būtinosios sąlygos

Turi būti viena iš toliau nurodytų produktų, norint taikyti šias karštąsias pataisas:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 1 pakeitimų paketas (SP1)

Pašalinimo informacija

Jūs negalite pašalinti šias karštąsias pataisas.

Būsena

„Microsoft“ patvirtino, kad tai yra „Microsoft“ produktų, išvardytų skyriuje „Taikoma“, problema.

Pastaba. Tai yra "GREITAI PUBLIKUOJAMAS" straipsnis, sukurtas tiesiogiai Microsoft palaikymo tarnybos. Čia pateikta informacija yra atsakas į kylančius klausimus. Dėl greito publikavimo medžiagoje gali būti spausdinimo klaidų ir ji gali būti peržiūrima bet kuriuo metu be įspėjimo. Naudojimo ieškokite kitų priežasčių.

Autorius: avannini
Rašytojas: v-zhipen
Techninis redaktorius: avannini
Redaktorius:

Reikia daugiau pagalbos?

Tobulinkite savo įgūdžius
Ieškoti mokymo
Pirmiausia gaukite naujų funkcijų
Prisijungti prie "Microsoft Insider"

Ar ši informacija buvo naudinga?

Dėkojame už jūsų atsiliepimus!

Dėkojame už jūsų atsiliepimą! Panašu, kad gali būti naudinga jus sujungti su vienu iš mūsų „Office“ palaikymo agentų.

×