Ви можете створити кілька запасів вибір для замовлення на продаж несподівано, якщо в полі доставки поради в замовленні на продаж має значення Complete у Microsoft Dynamics NAV 2009 із пакетом оновлень 1

Застосовується до
Dynamics NAV 2009 Service Pack 1

Ця стаття стосується Microsoft Dynamics NAV для всіх країн і всіх мов.

Ознаки

У Microsoft Dynamics NAV 2009 із пакетом оновлень 1 (SP1) можна створити кілька вибірок запасів для замовлення на продаж, якщо значення поля Поради з доставки в замовленні завершено. У цій ситуації не можна опублікувати будь-який запасів вибірки, які створюються.

Спосіб усунення проблеми

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

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

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

            
          

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

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

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

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

Радимо призначити обліковому запису користувача у вікні "Вхід у Windows" або у вікні "Вхід до бази даних" ідентифікатор ролі "SUPER". Якщо обліковому запису користувача не вдалося призначити ідентифікатор ролі SUPER, переконайтеся, що обліковий запис має такі дозволи:

  • Дозвіл на змінення об'єкта, який буде змінюватися.
  • Дозвіл Execute для об'єкта System Object ID 5210 і для об'єкта System Object ID 9015.

                
Примітка. Ви не повинні мати права на зберігання даних, якщо не потрібно відновлювати дані.

Зміни коду

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

  1. Змініть поля в таблиці "Рядок продажів" (37), як показано нижче.
    Наявний код

    ...
    
    CALCFIELDS("Reserved Qty. (Base)");
    
    TESTFIELD("Reserved Qty. (Base)",0);
    
    IF Type = Type::Item THEN
    
        WhseValidateSourceLine.SalesLineVerifyChange(Rec,xRec);
    
    END;
    
    TESTFIELD("Qty. Shipped Not Invoiced",0);
    
    TESTFIELD("Quantity Shipped",0);
    
    TESTFIELD("Shipment No.",'');
    
    
    
    TESTFIELD("Prepmt. Amt. Inv.",0);
    ...
    

    Код заміни

    ...
    
    CALCFIELDS("Reserved Qty. (Base)");
    
    TESTFIELD("Reserved Qty. (Base)",0);
    
    IF Type = Type::Item THEN
    
        WhseValidateSourceLine.SalesLineVerifyChange(Rec,xRec);
    
    END;
    
    //Add the following lines.
    IF Type = Type::Item THEN
    
        CheckWhseActivityExists;
    //End of the lines.
    
    TESTFIELD("Qty. Shipped Not Invoiced",0);
    
    TESTFIELD("Quantity Shipped",0);
    
    TESTFIELD("Shipment No.",'');
    
    
    
    TESTFIELD("Prepmt. Amt. Inv.",0);
    ...
    
  2. Змініть глобальні змінні в таблиці Sales Line (37), як показано нижче.
    Наявний код

    ...
            Text046@1105 : TextConst 'ENU=You cannot return more than the %1 units that you have shipped for %2 %3.';
    
            Text047@1106 : TextConst 'ENU=must be positive when %1 is not 0.';
    
            TrackingBlocked@1107 : Boolean;
    
            Text048@1108 : TextConst 'ENU=You cannot use item tracking on a %1 created from a %2.';
    
            Text049@1139 : TextConst 'ENU=cannot be %1.';
    
    
          PROCEDURE InitOutstanding@16();
    
          BEGIN
    
            IF "Document Type" IN ["Document Type"::"Return Order","Document Type"::"Credit Memo"] THEN BEGIN
    
              "Outstanding Quantity" := Quantity - "Return Qty. Received";
    ...
    

    Код заміни

    ...
            Text046@1105 : TextConst 'ENU=You cannot return more than the %1 units that you have shipped for %2 %3.';
    
            Text047@1106 : TextConst 'ENU=must be positive when %1 is not 0.';
    
            TrackingBlocked@1107 : Boolean;
    
            Text048@1108 : TextConst 'ENU=You cannot use item tracking on a %1 created from a %2.';
    
            Text049@1139 : TextConst 'ENU=cannot be %1.';
    
            //Add the following line.
            Text052@1022 : TextConst 'ENU=Because the value of the %1 field is %2, and warehouse activities exist, you cannot add a new item to this order. You can either change the %3 field to Partial or delete the warehouse activities.';
    
    
          PROCEDURE InitOutstanding@16();
    
          BEGIN
    
            IF "Document Type" IN ["Document Type"::"Return Order","Document Type"::"Credit Memo"] THEN BEGIN
    
              "Outstanding Quantity" := Quantity - "Return Qty. Received";
    ...
    
  3. Змініть код у функції CheckWhseActivityExists у таблиці "Рядок продажів" (37), як показано нижче.
    Наявний код

    ...
              IF "Qty. to Invoice" = 0 THEN
    
                EXIT(TRUE);
    
            EXIT(FALSE);
    
          END;
    
    
    
          BEGIN
    
          END.
    
        }
    
      }
    ...
    

    Код заміни

    ...
              IF "Qty. to Invoice" = 0 THEN
    
                EXIT(TRUE);
    
            EXIT(FALSE);
    
          END;
    
    
          //Add the following lines.
          PROCEDURE CheckWhseActivityExists@1011();
    
          VAR
    
            WhseActivityLine@1019 : Record 5767;
    
          BEGIN
    
            IF SalesHeader."Shipping Advice" = SalesHeader."Shipping Advice"::Complete THEN BEGIN
    
              WhseActivityLine.RESET;
    
              WhseActivityLine.SETCURRENTKEY("Source Type","Source Subtype","Source No.","Source Line No.","Source Subline No.");
    
              WhseActivityLine.SETRANGE("Source Type",DATABASE::"Sales Line");
    
              WhseActivityLine.SETRANGE("Source Subtype","Document Type");
    
              WhseActivityLine.SETRANGE("Source No.","Document No.");
    
              IF "Document Type" = "Document Type"::Order THEN
    
                WhseActivityLine.SETRANGE("Source Document",WhseActivityLine."Source Document"::"Sales Order");
    
              IF "Document Type" = "Document Type"::"Return Order" THEN
    
                WhseActivityLine.SETRANGE("Source Document",WhseActivityLine."Source Document"::"Sales Return Order");
    
              IF NOT WhseActivityLine.ISEMPTY THEN
    
                ERROR(Text052,SalesHeader.FIELDCAPTION("Shipping Advice"),SalesHeader."Shipping Advice",SalesHeader.FIELDCAPTION("Shipping Advice"));
    
            END;
    
          END;
          //End of the lines.
    
    
          BEGIN
    
          END.
    
        }
    
      }
    ...
    

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

Щоб застосувати це виправлення, потрібно мати Microsoft Dynamics NAV 2009 із пакетом оновлень 1.

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

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

Стан

Корпорація Microsoft підтвердила, що це одна з проблем з продуктами Microsoft, перелічених у розділі "Застосовується до".

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