Перейти до основного
Підтримка
Вхід
Вхід за допомогою облікового запису Microsoft
Увійдіть або створіть обліковий запис.
Вітаємо,
Виберіть інший обліковий запис.
У вас є кілька облікових записів
Виберіть обліковий запис, за допомогою якого потрібно ввійти.

Ця стаття відноситься до Microsoft Dynamics NAV всі країни і всі мови.

Причини

Після виконання операції Отримати-обробка замовлення на замовлення у спеціальному придбати в порядку, в Microsoft Dynamics NAV, 2009, код для доставки до полів, в заголовку, спеціальні замовлення несподівано пустий.
Ця проблема виникає в таких продуктів:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 пакет оновлень 1 (SP1)

Вирішення

Відомості про виправлення

Корпорація Майкрософт випустила підтримуване виправлення доступна. Однак, застосовувати лише для вирішення проблеми, описаної в цій статті. Він придатний лише для систем, які мають з цією проблемою. Те, що це виправлення може потребувати додаткового тестування. Таким чином, якщо ви не завдає значної, рекомендовано почекати до виходу чергового пакета оновлень Microsoft Dynamics NAV, 2009 або наступної версії Microsoft Dynamics NAV, що містить це виправлення.

Примітка. В окремих випадках оплату звернення до служби підтримки може бути скасовано якщо технічної підтримки професійного для Microsoft Dynamics і пов'язані продукти визначає телефонів служби. Плата стягується на додаткові питання і проблеми, які не пов'язані з оновленням.

Відомості про інсталяцію

Корпорація Майкрософт надає приклади програмного коду тільки для ілюстрації, без гарантій – прямих або інших. Це включає, але не обмежується, будь-яких гарантій придатності до продажу та придатності для певної мети. У цій статті припускається, що ви знайомі з, що демонструє мову програмування та інструменти, які використовуються для створення та налагодження процедури. Співробітники служби підтримки корпорації Майкрософт можуть пояснити функціональні особливості кожної конкретної процедури, але вони не будуть змінювати приклади для реалізації додаткових можливостей або створювати процедури на вимогу окремих користувачів.

Примітка. Перш ніж інсталювати це виправлення, переконайтеся, що всі користувачі Microsoft Navision-клієнт відключився система. Пакет оновлень містить Microsoft Navision застосунок служби (NAS) клієнта користувачів. Ви повинні тільки клієнт користувача, який увійшов до системи, під час виконання цього виправлення.

Щоб застосувати це виправлення, потрібно мати ліцензію для розробників.

Корпорація Майкрософт рекомендує, що обліковий запис користувача Windows входи вікна або у вікні бази даних входи призначити "Супер" роль ID. Якщо обліковий запис користувача не призначено "Супер" Ідентифікатор ролі, необхідно переконатися, що обліковий запис користувача, має такі дозволи:

  • Змінити дозвіл об'єкт, який буде змінюється.

  • Права для виконання системи об'єкт з Ідентифікатором 5210 об'єкт а також системи об'єкт з Ідентифікатором 9015 об'єкта.



Примітка. Маєте відповідних прав у сховища даних, якщо не потрібно виконати дані відновлення не потрібно.

Зміни коду

Примітка. Завжди тест код вирішення в середовищі контрольовані перед інсталяцією розглянутого виправлення виробництва комп'ютерів.
Щоб вирішити цю проблему, виконайте такі дії.

  1. Змін у, funtion GetDescriptionAndRcptName з у ReqJnlManagement codeunit (330), як описано нижче:
    Наявний код

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

    Заміна код

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

    IF ReqLine."Vendor No." = '' THEN
    ...
  2. Додати нову глобальну змінну в полі вимагає вашого р. Wksh.-зробити замовлення, codeunit (333) і вкажіть змінна наступним чином:

    • Ім'я: DropShptSpecialOrderExists

    • Тип даних: логічний вираз

  3. Додати нову локальну змінну InsertPurchOrderLine функції в полі вимагає вашого р. Wksh.-зробити замовлення, codeunit (333) і вкажіть змінна наступним чином:

    • Ім'я: SalesHeader

    • Тип даних: запис

    • Підтип: заголовок на продаж

  4. Додати нову локальну змінну InsertPurchOrderLine функції в полі вимагає вашого р. Wksh.-зробити замовлення, codeunit (333) і вкажіть змінна наступним чином:

    • Ім'я: DropShptSplOrderDiffAddress

    • Тип даних: логічний вираз

  5. Змінити код InsertPurchOrderLine функції в полі вимагає вашого р. Wksh.-зробити codeunit-порядку (333), таким чином:
    Наявний код

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

    Заміна код

    ...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. Додати нову локальну змінну InsertHeader функції в полі вимагає вашого р. Wksh.-зробити замовлення, codeunit (333) і вкажіть змінна наступним чином:

    • Ім'я: SalesHeader

    • Тип даних: , запис

    • Підтип: - продажу заголовка

  7. Змінити код InsertHeader функції в полі вимагає вашого р. Wksh.-зробити замовлення, codeunit (333), таким чином:
    Наявний код

    ...PurchOrderHeader.SetShipToForSpecOrder;
    END;

    PurchOrderHeader.MODIFY;
    ...

    Заміна код

    ...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. Змін у DIST. інтеграція-codeunit (5702), функція EnterPurchaseItemCrossRef наступним чином:
    Наявний код

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

    Заміна код

    ...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. Змін у DIST. інтеграція-codeunit (5702), функція GetSpecialOrders наступним чином:
    Наявний код

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

    Заміна код

    ...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. Змінити код TransfldsFromSalesToPurchLine функції в копії документа Mgt.-codeunit (6620), таким чином:
    Наявний код

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

    Заміна код

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

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

    END;
    ...
  11. Змінити код код Purch.-отримати codeunit на стрілку Shpt. (76), таким чином:
    Наявний код 1

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

    PurchLine.LOCKTABLE;
    ...

    Код на заміну 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;
    ...

    Наявний код 2

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

    Код на заміну 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. Змінити код у InsertReqWkshLine , у звіті про отримання замовлення для продажу (698) наступним чином:
    Наявний код

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

    Заміна код

    ..."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. Додавання нового змінною придбання заголовка таблиці (38) і вкажіть змінна наступним чином:

    • Ім'я: NameAddressDetails

    • Тип даних: текст

    • Довжина: 512

  14. Додавання нового змінною придбання заголовка таблиці (38) і вкажіть змінна наступним чином:

    • Ім'я: NameAddressDetails2

    • Тип даних: , текст

    • Довжина: 512

  15. Додати новий текст постійний придбання заголовка таблиці (38) і вкажіть постійне текст наступним чином:

    • Ім'я: Text051

    • ConstValue: поле "%1", на замовлення %2, має бути так само, як і на обробка замовлення на %3.

  16. Створіть нову функцію CheckAndAddShipToAdd , придбання заголовка таблиці (38). Щоб це зробити, виконайте такі дії:

    1. Додати новий параметр локальної CheckAndAddShipToAdd функції придбання заголовка таблиці (38) і вкажіть параметр наступним чином:

      • Var: No

      • Ім'я: SalesHeader

      • Тип даних: запис

      • Підтип: заголовок на продаж

    2. Додати новий параметр локальної CheckAndAddShipToAdd функції придбання заголовка таблиці (38) і вкажіть параметр наступним чином:

      • Var: No

      • Ім'я: ShowError

      • Тип даних: логічний вираз

    3. Додайте значення, яке повертається CheckAndAddShipToAdd функції придбання заголовка таблиці (38) і вкажіть такі значення:

      • Повернення введіть: логічний вираз

    4. Додати нову локальну змінну CheckAndAddShipToAdd функції придбання заголовка таблиці (38) і вкажіть змінна наступним чином:

      • Ім'я: PurchLine2

      • Тип даних: запис

      • Підтипу (Mixed): PurchLine2

    5. Функції CheckAndAddShipToAdd придбання заголовка таблиці (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. Створити нову функцію DropShptSplOrderExists придбання заголовка таблиці (38). Щоб це зробити, виконайте такі дії:

    1. Додати новий параметр локальної DropShptSplOrderExists функції придбання заголовка таблиці (38) і вкажіть параметр наступним чином:

      • Var: No

      • Ім'я: SalesHeader

      • Тип даних: запис

      • Підтип: заголовок на продаж

    2. Додайте значення типу DropShptSplOrderExists функції придбання заголовка таблиці (38) і вкажіть такі значення:

      • Повернення тип: логічний вираз

    3. Додавання нового локальну змінну DropShptSplOrderExists функції придбання заголовка таблиці (38) і вкажіть змінна наступним чином:

      • Ім'я: SalesLine2

      • Тип даних: запис

      • Підтип: продаж лінія

    4. Функції DropShptSplOrderExists придбання заголовка таблиці (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);

Попередні вимоги

Ви повинні мати одну з таких продуктів, щоб застосувати це виправлення:

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 пакет оновлень 1 (SP1)

Відомості про видалення

Це виправлення не можна видалити.

Стан

Корпорація Майкрософт підтвердила існування цієї неполадки у продуктах Майкрософт, перелічених у розділі "Застосовується до".

Примітка. Це "Швидка публікація" статті, надана службою підтримки корпорації Майкрософт. Відомості в цій статті надано без змін у відповідь на повідомлення про проблеми. З огляду на швидкість публікації матеріали можуть містити орфографічні помилки. Їх може бути змінено в будь-який час без повідомлення. Щоб отримати додаткові відомості, див. Умови використання.

Потрібна додаткова довідка?

Потрібні додаткові параметри?

Ознайомтеся з перевагами передплати, перегляньте навчальні курси, дізнайтесь, як захистити свій пристрій тощо.

Спільноти допомагають ставити запитання й відповідати на них, надавати відгуки та дізнаватися думки висококваліфікованих експертів.

Чи ця інформація була корисною?

Наскільки ви задоволені якістю мови?
Що вплинуло на ваші враження?
Натиснувши кнопку "Надіслати", ви надасте свій відгук для покращення продуктів і служб Microsoft. Ваш ІТ-адміністратор зможе збирати ці дані. Декларація про конфіденційність.

Дякуємо за відгук!

×