Ця стаття стосується Microsoft Dynamics NAV для всіх мовних мов.
Ознаки
Під час запуску реєстру оцінки звіту в Microsoft Dynamics NAV, ви помітите, що елемент кількість дорівнює нулю, а значення обсяг елемента не нуль у результаті. Очікується, що значення значення елемента, буде нуль. Ця проблема виникає в таких продуктах:
- Microsoft Dynamics NAV 2009 із пакетом оновлень 1 (SP1)
- Microsoft Dynamics NAV 2009
- Microsoft Dynamics NAV 5.0 із пакетом оновлень 1
Спосіб усунення проблеми
Відомості про виправлення
Від корпорації Майкрософт доступне виправлення, що підтримується. Однак вона призначена лише для виправлення проблеми, описаної в цій статті. Застосуйте її лише до систем, у яких виникла ця проблема. Це виправлення може отримати додаткове тестування. Таким чином, якщо ви не серйозно постраждали від цієї проблеми, ми радимо дочекатися наступного Microsoft Dynamics NAV 2009 пакет оновлень або наступної версії Microsoft Dynamics NAV, яка містить це виправлення.
Примітка У особливих випадках стягнення плати, які зазвичай понесені для викликів підтримки, може бути скасовано, якщо спеціаліст служби технічної підтримки Microsoft Dynamics і пов'язані продукти визначать, що конкретне оновлення вирішить вашу проблему. Звичайні витрати на підтримку застосовуватимуться до додаткових запитань і питань підтримки, які не відповідають вимогам для конкретного оновлення, про яке йде мова.
Відомості про інсталяцію
Корпорація Майкрософт надає приклади програмування лише для ілюстрації без жодних гарантій, явних або неявних. Це стосується зокрема неявних гарантій щодо придатності до продажу чи придатності для певної мети. У цій статті припускається, що ви знайомі з мовою програмування, яка демонструється, і з інструментами, які використовуються для створення і налагодження процедур. Спеціалісти служби підтримки Microsoft можуть допомогти пояснити функціональність певної процедури, але вони не змінюватимуть ці приклади, щоб надавати додаткові функції або конструювати процедури відповідно до ваших конкретних вимог.
Примітка. Перш ніж інсталювати це виправлення, переконайтеся, що всі користувачі клієнта Microsoft Navision, вийти із системи. Це стосується користувачів клієнтських служб Microsoft Navision (NAS). Ви повинні бути єдиним клієнтом користувача, який ввійшов, коли ви впроваджуєте це виправлення.
Щоб реалізувати це виправлення, потрібно мати ліцензію розробника.
Радимо призначити обліковому запису користувача у вікні "Вхід у Windows" або у вікні "Вхід до бази даних" ідентифікатор ролі "SUPER". Якщо обліковому запису користувача не вдалося призначити ідентифікатор ролі SUPER, переконайтеся, що обліковий запис має такі дозволи:
- Дозвіл на змінення об'єкта, який буде змінюватися.
- Дозвіл Execute для об'єкта System Object ID 5210 і для об'єкта System Object ID 9015.
Примітка. Ви не повинні мати права на зберігання даних, якщо не потрібно відновлювати дані.
Зміни коду
Примітка. Завжди перевіряйте виправлення коду в контрольованому середовищі, перш ніж застосовувати виправлення до робочих комп'ютерів.
Щоб вирішити цю проблему, виконайте такі дії:
Додайте такі локальні змінні у функції IsAvgCostException в таблиці (5802):
- ItemLedgEntry@1002 : Запис 32
- xItemLedgEntry@1003 : Запис 32
- TempItemLedgEntry@1004 : ТИМЧАСОВИЙ запис 32
Змініть код у функції IsAvgCostException у таблиці (5802), як показано нижче.
Наявний код... IF ItemApplnEntry.AppliedInbndEntryExists("Item Ledger Entry No.",TRUE) THEN EXIT(TRUE); EXIT(FALSE); ...Код заміни
... IF ItemApplnEntry.AppliedInbndEntryExists("Item Ledger Entry No.",TRUE) THEN EXIT(TRUE); // Add the following lines. IF "Item Ledger Entry Type" = "Item Ledger Entry Type"::Consumption THEN IF ItemApplnEntry.AppliedFromEntryExists("Item Ledger Entry No.") THEN REPEAT ItemLedgEntry.GET(ItemApplnEntry."Outbound Item Entry No."); IF ItemLedgEntry."Entry No." <> xItemLedgEntry."Entry No." THEN BEGIN xItemLedgEntry := ItemLedgEntry; ItemApplnEntry.GetVisitedEntries(ItemLedgEntry,TempItemLedgEntry); TempItemLedgEntry.SETCURRENTKEY("Item No.",Positive,"Location Code","Variant Code"); TempItemLedgEntry.SETRANGE("Item No.","Item No."); TempItemLedgEntry.SETRANGE(Positive,TRUE); TempItemLedgEntry.SETRANGE("Location Code","Location Code"); TempItemLedgEntry.SETRANGE("Variant Code","Variant Code"); IF NOT TempItemLedgEntry.ISEMPTY THEN EXIT(TRUE); END; UNTIL ItemApplnEntry.NEXT = 0; // End of the added lines. EXIT(FALSE); ...Додайте такі локальні змінні у функції AvgValueEntriesToAdjustExist у кодіуніті (5895):
- CurrIsException@1009 : логічне значення
- NextIsException@1010 : логічне значення
Змініть код у функції AvgValueEntriesToAdjustExist у кодіуніті (5895), як виконайте наведені нижче дії.
Наявний код... IF "Valued By Average Cost" AND NOT Adjustment AND ("Valued Quantity" < 0) THEN BEGIN OutbndValueEntry := ValueEntry; OutbndValueEntry.INSERT; FindNextRange := FALSE; END; // Delete the following lines. IF IsAvgCostException THEN BEGIN AvgCostExceptionBuf.Number := "Entry No."; AvgCostExceptionBuf.INSERT; END; // End of the deleted lines. IF ("Entry Type" = "Entry Type"::Revaluation) OR ...Код заміни
... IF "Valued By Average Cost" AND NOT Adjustment AND ("Valued Quantity" <0) THEN BEGIN OutbndValueEntry := ValueEntry; OutbndValueEntry.INSERT; FindNextRange := FALSE; END; // Add the following lines. IF NOT Adjustment THEN BEGIN CurrIsException := NextIsException; NextIsException := IsAvgCostException; IF NextIsException OR CurrIsException THEN BEGIN AvgCostExceptionBuf.Number := "Entry No."; AvgCostExceptionBuf.INSERT; END; END; // End of the added lines. IF ("Entry Type" = "Entry Type"::Revaluation) OR ...Змініть код у коді налаштування запасів (5895), як виконайте такі дії:
Наявний код... CODE ... LOCAL PROCEDURE AvgValueEntriesToAdjustExist@79(VAR OutbndValueEntry@1003 : Record 5802;VAR ExcludedValueEntry@1000 : Record 5802;VAR AvgCostAdjmtEntryPoint@1001 : Record 5804) : Boolean; ... IF FindNextRange THEN BEGIN AvgCostAdjmtEntryPoint."Valuation Date" := GetNextDate(AvgCostAdjmtEntryPoint."Valuation Date"); AvgValueEntriesToAdjustExist(OutbndValueEntry,ExcludedValueEntry,AvgCostAdjmtEntryPoint); END; ... LOCAL PROCEDURE IsExcludeEntryFromAvgCostCalc@36(ValueEntry@1000 : Record 5802;OutbndValueEntry@1001 : Record 5802;VAR ItemLedgEntryInChain@1003 : Record 32) : Boolean; ... IF NOT "Valued By Average Cost" THEN EXIT(FALSE); ItemLedgEntry.GET("Item Ledger Entry No."); IF ItemLedgEntry.Positive THEN EXIT(FALSE); // Delete the following line. EXIT(TRUE); // End of the deleted line. ...Код заміни
... CODE ... LOCAL PROCEDURE AvgValueEntriesToAdjustExist@79(VAR OutbndValueEntry@1003 : Record 5802;VAR ExcludedValueEntry@1000 : Record 5802;VAR AvgCostAdjmtEntryPoint@1001 : Record 5804) : Boolean; ... IF FindNextRange THEN BEGIN AvgCostAdjmtEntryPoint."Valuation Date" := GetNextDate(AvgCostAdjmtEntryPoint."Valuation Date"); AvgValueEntriesToAdjustExist(OutbndValueEntry,ExcludedValueEntry,AvgCostAdjmtEntryPoint); END; // Add the following line. OutbndValueEntry.SETCURRENTKEY("Item Ledger Entry No."); // End of the added line. ... LOCAL PROCEDURE IsExcludeEntryFromAvgCostCalc@36(ValueEntry@1000 : Record 5802;OutbndValueEntry@1001 : Record 5802;VAR ItemLedgEntryInChain@1003 : Record 32) : Boolean; ... IF NOT "Valued By Average Cost" THEN EXIT(FALSE); ItemLedgEntry.GET("Item Ledger Entry No."); IF ItemLedgEntry.Positive THEN EXIT(FALSE); // Add the following line. EXIT("Item Ledger Entry No." > OutbndValueEntry."Item Ledger Entry No."); // End of the added line. ...
Попередні вимоги
Щоб застосувати це виправлення, потрібно мати один із таких продуктів:
- Microsoft Dynamics NAV 2009 із пакетом оновлень 1 (SP1)
- Microsoft Dynamics NAV 2009
- Microsoft Dynamics NAV 5.0 із пакетом оновлень 1 (SP1)
Відомості про видалення
Не можна видалити це виправлення.
Стан
Корпорація Microsoft підтвердила, що це одна з проблем з продуктами Microsoft, перелічених у розділі "Застосовується до".
Посилання
Помилка VSTF: 235179
Примітка. Це стаття "FAST PUBLISH", створена безпосередньо з організації підтримки Корпорації Майкрософт. Інформація, що міститься в цьому документі, надається як у відповідь на нові проблеми. В результаті швидкості її використання матеріали можуть включати друкарські помилки і можуть бути переглянуті в будь-який час без попередження. Інші зауваження див. в розділі Умови використання .