Mall: CPR - Navision koodi paranduse Mall

VEA nr: 156421 (Content Maintenance)

Käesolev artikkel kehtib Microsoft Dynamics nav-i kõik riigid ja kõik language locales.

Sümptomid

Pärast funktsiooni Võta Müügitellimus jaoks erilist ostutellimuse Microsoft Dynamics nav-i 2009, spetsiaalne ostutellimuse päises välja Saaja tähis on tühi ootamatult.
See probleem ilmneb järgmiste toodetega:

  • Microsoft Dynamics nav-i 2009 R2

  • Microsoft Dynamics nav-i 2009 Service Pack 1 (SP1)

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 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 tavaliselt abi 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.

Kui see käigultparandus pole sisestatud avalikkusele allalaadimiseks (st avalik URL selle käigultparanduse selles artiklis on toodud), jaotus vajab, laiendamine meeskonnaliikme, või halduri kinnitamise ja järgmine teave kehtib:

  • Selle käigultparanduse saamiseks peavad kliendid esineb jaotises "Tunnused" kirjeldatud tarkvaraveaga.

  • Peate jälgima kliente, selle paranduse saadate, ning saatma neile järgmise hoolduspaketi kui see on saadaval (kui hoolduspakett välja antakse).

See käigultparandus plaanitakse kaasata Microsoft Dynamics nav-i 2009 R2.

VSTF DynamicsNAVSE: 255792

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 funktsiooni selgitada, kuid 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 Navision kliendi kasutajat sisse loginud süsteem välja. See hõlmab Microsoft Navision Application teenused (NAS) kliendi kasutajatele. 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.

  1. Muuda koodi GetDescriptionAndRcptName funtion on selle ReqJnlManagement koodiplokk (330) on järgmine:
    Kood

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

    Eemaldamise teave

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

    IF ReqLine."Vendor No." = '' THEN
    ...
  2. Lisage uus Globaalne muutuja on nõutav töölehel.-tellimuse koodiplokk (333) ja seejärel määrake muutuja järgmiselt:

    • Nimi: DropShptSpecialOrderExists

    • DataType (andmetüüp): Boolean

  3. Lisage uus kohaliku muutuja InsertPurchOrderLine funktsioon on nõutav töölehel.-tellimuse koodiplokk (333) ja seejärel määrake muutuja järgmiselt:

    • Nimi: SalesHeader

    • Andmetüüp: kirje

    • Alamliiki: Müügi päis

  4. Lisage uus kohaliku muutuja InsertPurchOrderLine funktsioon on nõutav töölehel.-tellimuse koodiplokk (333) ja seejärel määrake muutuja järgmiselt:

    • Nimi: DropShptSplOrderDiffAddress

    • Andmetüüp: Boolean

  5. Muuda koodi InsertPurchOrderLine funktsioon on nõutav töölehel.-teha tellimuse koodiplokk (333) järgmiselt:
    Kood

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

    Eemaldamise teave

    ...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. Lisage uus kohaliku muutuja InsertHeader funktsioon on nõutav töölehel.-tellimuse koodiplokk (333) ja seejärel määrake muutuja järgmiselt:

    • Nimi: SalesHeader

    • Andmetüüp: kirje

    • Alatüüpi: Müügi päis

  7. Muuda koodi InsertHeader funktsioon on nõutav töölehel.-teha tellimuse koodiplokk (333) järgmiselt:
    Kood

    ...PurchOrderHeader.SetShipToForSpecOrder;
    END;

    PurchOrderHeader.MODIFY;
    ...

    Eemaldamise teave

    ...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. Muuda koodi EnterPurchaseItemCrossRef funktsioon Dist. integreerimine koodiplokk (5702) järgmiselt:
    Kood

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

    Eemaldamise teave

    ...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. Muuda koodi GetSpecialOrders funktsioon Dist. integreerimine koodiplokk (5702) järgmiselt:
    Kood

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

    Eemaldamise teave

    ...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. Muuta koodi TransfldsFromSalesToPurchLine funktsiooni Kopeeri dokument Hooldushalduse koodiplokk (6620) järgmiselt:
    Kood

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

    Eemaldamise teave

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

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

    END;
    ...
  11. Muuda koodi koodi ostuarve.-saada tilk lähetusele koodiplokk (76) on järgmine:
    Kood 1

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

    PurchLine.LOCKTABLE;
    ...

    Kood 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;
    ...

    Kood 2

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

    Asendamine kood 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. Muuda koodi InsertReqWkshLine saada müügitellimused aruanne (698) järgmiselt:
    Kood

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

    Eemaldamise teave

    ..."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. Lisage uus Globaalne muutuja tabeli Ostu päis (38) ja seejärel määrake muutuja järgmiselt:

    • Nimi: NameAddressDetails

    • Andmetüüp: tekst

    • Pikkus: 512

  14. Lisage uus Globaalne muutuja tabeli Ostu päis (38) ning määrake muutuja järgmiselt:

    • Nimi: NameAddressDetails2

    • Andmetüüp: tekst

    • Pikkus: 512

  15. Lisage uus teksti pidev tabeli Ostu päis (38) ning määrake teksti pidev järgmiselt:

    • Nimi: Text051

    • ConstValue: ostutellimuse %2 välja %1 peab olema sama mis müügi tellida %3.

  16. Looge uus CheckAndAddShipToAdd funktsioon tabeli Ostu päis (38). Selleks toimige järgmiselt.

    1. Lisage uus kohalik parameeter CheckAndAddShipToAdd funktsiooni tabeli Ostu päis (38) ja määrake parameetri järgmiselt:

      • Var: No

      • Nimi: SalesHeader

      • Andmetüüp: kirje

      • Alamliiki: Müügi päis

    2. Lisage uus kohalik parameeter CheckAndAddShipToAdd funktsiooni tabeli Ostu päis (38) ja seejärel määrake parameetri järgmiselt:

      • Var: No

      • Nimi: ShowError

      • DataType (andmetüüp): Boolean

    3. Lisage tagastatava väärtuse CheckAndAddShipToAdd funktsiooni tabeli Ostu päis (38) ja seejärel määrake tagastatava väärtuse järgmiselt:

      • Tagasi tüüp: Boolean

    4. Lisage uus kohaliku muutuja CheckAndAddShipToAdd funktsioon tabeli Ostu päis (38) ja seejärel määrake muutuja järgmiselt:

      • Nimi: PurchLine2

      • Andmetüüp: kirje

      • Alatüüpi: PurchLine2

    5. Lisage järgmine kood CheckAndAddShipToAdd funktsiooni tabeli Ostu päis (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. Looge uus DropShptSplOrderExists funktsioon tabeli Ostu päis (38). Selleks toimige järgmiselt.

    1. Lisage uus kohalik parameeter DropShptSplOrderExists funktsiooni tabeli Ostu päis (38) ja seejärel määrake parameetri järgmiselt:

      • Var: No

      • Nimi: SalesHeader

      • Andmetüüp: kirje

      • Alamliiki: Müügi päis

    2. Lisada tabeli Ostu päis (38) DropShptSplOrderExists funktsiooni tagastatava väärtuse tüüp ja seejärel määrake tagastatava väärtuse järgmiselt:

      • Tagasi tüüp: Boolean

    3. Lisage uus kohaliku muutuja DropShptSplOrderExists funktsioon tabeli Ostu päis (38) ja seejärel määrake muutuja järgmiselt:

      • Nimi: SalesLine2

      • Andmetüüp: kirje

      • Alamliiki: müügi rida

    4. Lisage järgmine kood DropShptSplOrderExists funktsiooni tabeli Ostu päis (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);

Eeltingimused

Teil peab olema üks selle kiirparanduse installinud järgmisi tooteid:

  • Microsoft Dynamics nav-i 2009 R2

  • Microsoft Dynamics nav-i 2009 Service Pack 1 (SP1)

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 Kasutustingimused muid kaalutlusi.

Autor: avannini
Koostaja: v-zhipen
Tehniline toimetaja: avannini
Toimetaja:

Kas vajate veel abi?

Täiendage oma oskusi
Tutvuge koolitusmaterjalidega
Kasutage uusi funktsioone enne teisi
Liitu Microsofti Insideri programmis osalejad

Kas sellest teabest oli abi?

Kui rahul te tõlkekvaliteediga olete?
Mis mõjutas teie kasutuskogemust?

Täname tagasiside eest!

×