Ця стаття стосується Microsoft Dynamics NAV для всіх країн і всіх мов.
Ознаки
Припустімо, що встановити значення Попередньо встановлена кількість виводунуль для всіх операцій у діалоговому вікні Настроювання виробництва в Microsoft Dynamics NAV. Ви визначаєте відстеження елементів для замовлення на виробництво. У цій ситуації під час спроби опублікувати частковий результат для виробництва замовлення, з'являється таке повідомлення про помилку:
Примітка.
Відстеження елементів, визначене для елемента No. У рядку журналу елементів кількість, яку ви ввели. Слід змінити відстеження наявних елементів і повторно ввести нову кількість.
Під час спроби виправити елемент відстеження для виробництва замовлення, з'являється таке повідомлення про помилку:
Примітка.
Не вдалося зберегти виправлення, оскільки визначено надлишкову кількість. Усе одно закрити форму?
Ця проблема виникає в таких продуктах:
- Microsoft Dynamics NAV 2009 R2
- Microsoft Dynamics NAV 2009 із пакетом оновлень 1 (SP1)
Спосіб усунення проблеми
Відомості про виправлення
Від корпорації Майкрософт доступне виправлення, що підтримується. Однак вона призначена лише для виправлення проблеми, описаної в цій статті. Застосуйте її лише до систем, у яких виникла ця проблема. Це виправлення може отримати додаткове тестування. Таким чином, якщо ви не серйозно постраждали від цієї проблеми, радимо дочекатися наступного пакета оновлень Microsoft Dynamics NAV або наступної версії Microsoft Dynamics NAV, яка містить це виправлення.
Примітка У особливих випадках стягнення плати, які зазвичай понесені для викликів підтримки, може бути скасовано, якщо спеціаліст служби технічної підтримки Microsoft Dynamics і пов'язані продукти визначать, що конкретне оновлення вирішить вашу проблему. Звичайні витрати на підтримку застосовуватимуться до додаткових запитань і питань підтримки, які не відповідають вимогам для конкретного оновлення, про яке йде мова.
Відомості про інсталяцію
Корпорація Майкрософт надає приклади програмування лише для ілюстрації без жодних гарантій, явних або неявних. Це стосується зокрема неявних гарантій щодо придатності до продажу чи придатності для певної мети. У цій статті припускається, що ви знайомі з мовою програмування, яка демонструється, і з інструментами, які використовуються для створення і налагодження процедур. Спеціалісти служби підтримки Microsoft можуть пояснити вам функціональні можливості певної процедури. Однак вони не змінюватимуть ці приклади, щоб надавати додаткові функції або конструювати процедури відповідно до ваших конкретних вимог.
Примітка. Перш ніж інсталювати це виправлення, переконайтеся, що всі користувачі клієнта Microsoft Dynamics NAV, вийти із системи. Це стосується служб Microsoft Dynamics NAV Application Server (NAS). Ви повинні бути єдиним клієнтом користувача, який ввійшов, коли ви впроваджуєте це виправлення.
Щоб реалізувати це виправлення, потрібно мати ліцензію розробника.
Радимо призначити обліковому запису користувача у вікні "Вхід у Windows" або у вікні "Вхід до бази даних" ідентифікатор ролі "SUPER". Якщо обліковому запису користувача не вдалося призначити ідентифікатор ролі SUPER, переконайтеся, що обліковий запис має такі дозволи:
Дозвіл на змінення об'єкта, який буде змінюватися.
Дозвіл execute для об'єкта System Object ID 5210 і system Object ID 9015
Об'єкт.
Примітка. Ви не повинні мати права на зберігання даних, якщо не потрібно відновлювати дані.
Зміни коду
Примітка. Завжди перевіряйте виправлення коду в контрольованому середовищі, перш ніж застосовувати виправлення до робочих комп'ютерів.
Щоб вирішити цю проблему, виконайте такі дії:
Змініть код у коді керування резервуванням (99000845):
Наявний код... CODE ... PROCEDURE DeleteReservEntries2@31(DeleteAll@1000 : Boolean;DownToQuantity@1001 : Decimal;VAR ReservEntry@1002 : Record 337); ... IF QtyToRelease <> 0 THEN BEGIN IF ItemTrackingHandling = ItemTrackingHandling::None THEN IF DeleteAll THEN ERROR(Text010,ReservEntry."Item No.",ReservEntry.TextCaption) ELSE // Delete the following line. ERROR(Text008,ReservEntry."Item No.",ReservEntry.TextCaption); // End of the deleted line. ...THEN CalcReservedQtyOnPick(TotalAvailQty,QtyAllocInWhse); END; BEGIN END. ...Код заміни
... CODE ... PROCEDURE DeleteReservEntries2@31(DeleteAll@1000 : Boolean;DownToQuantity@1001 : Decimal;VAR ReservEntry@1002 : Record 337); ... IF QtyToRelease <> 0 THEN BEGIN IF ItemTrackingHandling = ItemTrackingHandling::None THEN IF DeleteAll THEN ERROR(Text010,ReservEntry."Item No.",ReservEntry.TextCaption) ELSE // Add the following lines. IF NOT ProdJnlLineEntry(ReservEntry) THEN ERROR(Text008,ReservEntry."Item No.",ReservEntry.TextCaption); // End of the added lines. ... THEN CalcReservedQtyOnPick(TotalAvailQty,QtyAllocInWhse); END; BEGIN // Add the following lines. WITH ReservationEntry DO EXIT(("Source Type" = DATABASE::"Item Journal Line") AND ("Source Subtype" = 6)); END; BEGIN // End of the added lines. END. ...Змініть код у формі "Лінії відстеження елементів" (6510):
Наявний код 1... Text018@1057 : TextConst 'ENU=Saving item tracking line changes'; ForBinCode@1043 : Code[20]; Text019@1013 : TextConst 'ENU=There are availability warnings on one or more lines.\Close the form anyway?'; Text020@1002 : TextConst 'ENU=Placeholder'; IsPick@1042 : Boolean; PROCEDURE SetFormRunMode@19(Mode@1000 : ',Reclass,Combined Ship/Rcpt,Drop Shipment'); ...Код заміни 1
... Text018@1057 : TextConst 'ENU=Saving item tracking line changes'; ForBinCode@1043 : Code[20]; Text019@1013 : TextConst 'ENU=There are availability warnings on one or more lines.\Close the form anyway?'; Text020@1002 : TextConst 'ENU=Placeholder'; IsPick@1042 : Boolean; // Add the following line. ProdOrderLineHandling@2002 : Boolean; // End of the added line. PROCEDURE SetFormRunMode@19(Mode@1000 : ',Reclass,Combined Ship/Rcpt,Drop Shipment'); ...Наявний код 2
... THEN CurrentEntryStatus := CurrentEntryStatus::Surplus ELSE CurrentEntryStatus := CurrentEntryStatus::Prospect; // Delete the following lines. IF (TrackingSpecification."Source Type" IN [DATABASE::"Item Ledger Entry", DATABASE::"Item Journal Line", DATABASE::"Job Journal Line", DATABASE::"BOM Journal Line", DATABASE::"Requisition Line"]) OR ((TrackingSpecification."Source Type" IN [DATABASE::"Sales Line",DATABASE::"Purchase Line",DATABASE::"Service Line"]) AND (TrackingSpecification."Source Subtype" IN [0,2,3])) THEN SetControls(Controls::Handle,FALSE) ELSE SetControls(Controls::Handle,TRUE); // End of the deleted lines. SetControls(Controls::Reclass,FormRunMode = FormRunMode::Reclass); ...Код заміни 2
... THEN CurrentEntryStatus := CurrentEntryStatus::Surplus ELSE CurrentEntryStatus := CurrentEntryStatus::Prospect; // Add the following lines. // Set controls for Qty To Handle: SetControls(Controls::Handle,GetHandleSource(TrackingSpecification)); // Set controls for Qty To Invoice: SetControls(Controls::Invoice,GetInvoiceSource(TrackingSpecification)); // End of the added lines. SetControls(Controls::Reclass,FormRunMode = FormRunMode::Reclass); ...Наявний код 3
... SetControls(Controls::Handle,TRUE); // Delete the following lines. IF (TrackingSpecification."Source Type" IN [DATABASE::"Item Ledger Entry", DATABASE::"Item Journal Line", DATABASE::"Job Journal Line", DATABASE::"BOM Journal Line", DATABASE::"Requisition Line", DATABASE::"Transfer Line", DATABASE::"Prod. Order Line", DATABASE::"Prod. Order Component"]) OR ((TrackingSpecification."Source Type" IN [DATABASE::"Sales Line",DATABASE::"Purchase Line",DATABASE::"Service Line"]) AND (TrackingSpecification."Source Subtype" IN [0,2,3,4])) THEN SetControls(Controls::Invoice,FALSE) ELSE SetControls(Controls::Invoice,TRUE); // End of the deleted lines. SetControls(Controls::Reclass,FormRunMode = FormRunMode::Reclass); ...Код заміни 3
... SetControls(Controls::Handle,TRUE); SetControls(Controls::Reclass,FormRunMode = FormRunMode::Reclass); ...Наявний код 4
... BEGIN UndefinedQtyArray[1] := SourceQuantityArray[1] - TotalItemTrackingLine."Quantity (Base)"; UndefinedQtyArray[2] := SourceQuantityArray[2] - TotalItemTrackingLine."Qty. to Handle (Base)"; UndefinedQtyArray[3] := SourceQuantityArray[3] - TotalItemTrackingLine."Qty. to Invoice (Base)"; // Delete the following lines. IF ABS(SourceQuantityArray[1]) < ABS(TotalItemTrackingLine."Quantity (Base)") THEN BEGIN ColorOfQuantityArray[1] := 255; QtyIsValid := FALSE; END ELSE BEGIN // End of the deleted lines. ColorOfQuantityArray[1] := 0; // Delete the following lines. QtyIsValid := TRUE; END; // End of the deleted lines. IF ABS(SourceQuantityArray[2]) < ABS(TotalItemTrackingLine."Qty. to Handle (Base)") THEN ...Код заміни 4
... BEGIN UndefinedQtyArray[1] := SourceQuantityArray[1] - TotalItemTrackingLine."Quantity (Base)"; UndefinedQtyArray[2] := SourceQuantityArray[2] - TotalItemTrackingLine."Qty. to Handle (Base)"; UndefinedQtyArray[3] := SourceQuantityArray[3] - TotalItemTrackingLine."Qty. to Invoice (Base)"; // Add the following lines. QtyIsValid := ProdOrderLineHandling OR (ABS(SourceQuantityArray[1]) >= ABS(TotalItemTrackingLine."Quantity (Base)")); IF ABS(SourceQuantityArray[1]) < ABS(TotalItemTrackingLine."Quantity (Base)") THEN ColorOfQuantityArray[1] := 255 ELSE // End of the added lines. ColorOfQuantityArray[1] := 0; IF ABS(SourceQuantityArray[2]) < ABS(TotalItemTrackingLine."Qty. to Handle (Base)") THEN ...Наявний код 5
... CurrForm."Appl.-from Item Entry".VISIBLE(FALSE); END; BEGIN { In order to provide F6 invoked lookup from availability bitmap columns, a menu button has been hidden behind control 1. ...Код заміни 5
... CurrForm."Appl.-from Item Entry".VISIBLE(FALSE); END; // Add the following lines. PROCEDURE GetHandleSource@63(TrackingSpecification@2004 : Record 336) : Boolean; VAR QtyToHandleColumnIsHidden@2005 : Boolean; // End of the added lines. BEGIN // Add the following lines. WITH TrackingSpecification DO BEGIN IF ("Source Type" = DATABASE::"Item Journal Line") AND ("Source Subtype" = 6) THEN BEGIN // 6 => Prod.order line ProdOrderLineHandling := TRUE; EXIT(TRUE); // Display Handle column for prod. orders END; QtyToHandleColumnIsHidden := ("Source Type" IN [DATABASE::"Item Ledger Entry", DATABASE::"Item Journal Line", DATABASE::"Job Journal Line", DATABASE::"Requisition Line"]) OR (("Source Type" IN [DATABASE::"Sales Line",DATABASE::"Purchase Line",DATABASE::"Service Line"]) AND ("Source Subtype" IN [0,2,3])); END; EXIT(NOT QtyToHandleColumnIsHidden); END; PROCEDURE GetInvoiceSource@73(TrackingSpecification@2007 : Record 336) : Boolean; VAR QtyToInvoiceColumnIsHidden@2009 : Boolean; BEGIN WITH TrackingSpecification DO BEGIN QtyToInvoiceColumnIsHidden := ("Source Type" IN [DATABASE::"Item Ledger Entry", DATABASE::"Item Journal Line", DATABASE::"Job Journal Line", DATABASE::"Requisition Line", DATABASE::"Transfer Line", DATABASE::"Prod. Order Line", DATABASE::"Prod. Order Component"]) OR (("Source Type" IN [DATABASE::"Sales Line",DATABASE::"Purchase Line",DATABASE::"Service Line"]) AND ("Source Subtype" IN [0,2,3,4])) END; EXIT(NOT QtyToInvoiceColumnIsHidden); END; BEGIN // End of the added lines. { In order to provide F6 invoked lookup from availability bitmap columns, a menu button has been hidden behind control 1. ...
Попередні вимоги
Щоб застосувати це виправлення, потрібно мати один із таких продуктів:
- Microsoft Dynamics NAV 2009 R2
- Microsoft Dynamics NAV 2009 із пакетом оновлень 1
Відомості про видалення
Не можна видалити це виправлення.
Стан
Корпорація Microsoft підтвердила, що це одна з проблем з продуктами Microsoft, перелічених у розділі "Застосовується до".
Примітка. Це стаття "FAST PUBLISH", створена безпосередньо з організації підтримки Корпорації Майкрософт. Інформація, що міститься в цьому документі, надається як у відповідь на нові проблеми. В результаті швидкості її використання матеріали можуть включати друкарські помилки і можуть бути переглянуті в будь-який час без попередження. Інші зауваження див. в розділі Умови використання .