Ця стаття стосується мови мови Microsoft Dynamics NAV для країн Східної Європи (EE).
Ознаки
Розглянемо такий сценарій у східноєвропейській версії Microsoft Dynamics NAV 2009 R2 і Microsoft Dynamics NAV 2009 із пакетом оновлень 1 (SP1):
- Ви встановлюєте значення Типу виправлення adv. рахунок-фактураабсолютний або повністю виставлений рахунок-фактуру.
- У вас є замовлення на продаж, який використовує авансовий лист передоплати.
- Опублікувати і рахунок-фактура половину суми передоплати.
- Опублікувати часткову доставку від замовлення на продаж.
- Опублікувати та рахунок-фактура залишкову суму передоплати.
- Опублікувати остаточний доставки замовлення на продаж.
У цьому випадку з'являється таке повідомлення про помилку:
Примітка.
Cust. Ledger Entry Entry No. "Число" вже існує.
Спосіб усунення проблеми
Відомості про виправлення
Від корпорації Майкрософт доступне виправлення, що підтримується. Однак вона призначена лише для виправлення проблеми, описаної в цій статті. Застосуйте її лише до систем, у яких виникла ця проблема. Це виправлення може отримати додаткове тестування. Таким чином, якщо ви не серйозно постраждали від цієї проблеми, ми радимо дочекатися наступного 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.
Примітка. Ви не повинні мати права на зберігання даних, якщо не потрібно відновлювати дані.
Зміни коду
Примітка. Завжди перевіряйте виправлення коду в контрольованому середовищі, перш ніж застосовувати виправлення до робочих комп'ютерів.
Щоб вирішити цю проблему, виконайте такі дії:
Змініть код у функції PostPaymentCorrection у коді Sales-Post Advances codeunit (26585), як виконайте наведені нижче дії.
Наявний код... LedgEntryDim.SETRANGE("Entry No.",LinkedAdvanceEntry."Entry No."); DimMgt.CopyLedgEntryDimToJnlLineDim(LedgEntryDim,TempJnlLineDim); GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim); // Delete the following line. UNTIL LinkedAdvanceEntry.NEXT = 0; // Post Payment GenJnlLine.INIT; ...Код заміни
... LedgEntryDim.SETRANGE("Entry No.",LinkedAdvanceEntry."Entry No."); DimMgt.CopyLedgEntryDimToJnlLineDim(LedgEntryDim,TempJnlLineDim); GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim); // Add the following line. UNTIL (LinkedAdvanceEntry.NEXT = 0) OR (InvoiceAmount = 0); // Post Payment GenJnlLine.INIT; ...Змініть код у функції CalcLinkedPmtAmountToApply у кодоуніті Sales-Post Advances (26585), як описано нижче.
Наявний код... AmountToApply := ROUND(TotAmt,Currency."Amount Rounding Precision") - TotAmtRnded; TotAmtRnded := TotAmtRnded + AmountToApply; // Delete the following lines. IF LinkedAdvanceEntry.GET(CustLedgEntry."Entry No.") THEN BEGIN LinkedAdvanceEntry."Amount to Apply" := LinkedAdvanceEntry."Amount to Apply" + AmountToApply; LinkedAdvanceEntry.MODIFY; END ELSE BEGIN LinkedAdvanceEntry := CustLedgEntry; LinkedAdvanceEntry."Amount to Apply" := AmountToApply; LinkedAdvanceEntry."Currency Code" := Link."Currency Code"; LinkedAdvanceEntry.INSERT; // End of the deleted lines. END; END; UNTIL Link.NEXT = 0; ...Код заміни
... AmountToApply := ROUND(TotAmt,Currency."Amount Rounding Precision") - TotAmtRnded; TotAmtRnded := TotAmtRnded + AmountToApply; // Add the following lines. IF AmountToApply <> 0 THEN IF LinkedAdvanceEntry.GET(CustLedgEntry."Entry No.") THEN BEGIN LinkedAdvanceEntry."Amount to Apply" := LinkedAdvanceEntry."Amount to Apply" + AmountToApply; LinkedAdvanceEntry.MODIFY; END ELSE BEGIN LinkedAdvanceEntry := CustLedgEntry; LinkedAdvanceEntry."Amount to Apply" := AmountToApply; LinkedAdvanceEntry."Currency Code" := Link."Currency Code"; LinkedAdvanceEntry.INSERT; //End of the added lines. END; END; UNTIL Link.NEXT = 0; ...Змініть код у функції PostPaymentCorrection у коді Purchase-Post Advances codeunit (26586), як виконайте наведені нижче дії.
Наявний код... LedgEntryDim.SETRANGE("Entry No.",LinkedAdvanceEntry."Entry No."); DimMgt.CopyLedgEntryDimToJnlLineDim(LedgEntryDim,TempJnlLineDim); GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim); // Delete the following line. UNTIL LinkedAdvanceEntry.NEXT = 0; // Post Payment GenJnlLine.INIT; ...Код заміни
... LedgEntryDim.SETRANGE("Entry No.",LinkedAdvanceEntry."Entry No."); DimMgt.CopyLedgEntryDimToJnlLineDim(LedgEntryDim,TempJnlLineDim); GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim); // Add the following line. UNTIL (LinkedAdvanceEntry.NEXT = 0) OR (InvoiceAmount = 0); // Post Payment GenJnlLine.INIT; ...Змініть код у функції CalcLinkedPmtAmountToApply у кодоуніті Purchase-Post Advances (26586), як описано нижче.
Наявний код... AmountToApply := ROUND(TotAmt,Currency."Amount Rounding Precision") - TotAmtRnded; TotAmtRnded := TotAmtRnded + AmountToApply; // Delete the following lines. IF LinkedAdvanceEntry.GET(VendLedgEntry."Entry No.") THEN BEGIN LinkedAdvanceEntry."Amount to Apply" := LinkedAdvanceEntry."Amount to Apply" + AmountToApply; LinkedAdvanceEntry.MODIFY; END ELSE BEGIN LinkedAdvanceEntry := VendLedgEntry; LinkedAdvanceEntry."Amount to Apply" := AmountToApply; LinkedAdvanceEntry."Currency Code" := Link."Currency Code"; LinkedAdvanceEntry.INSERT; // End of the deleted lines. END; END; UNTIL Link.NEXT = 0; ...Код заміни
... AmountToApply := ROUND(TotAmt,Currency."Amount Rounding Precision") - TotAmtRnded; TotAmtRnded := TotAmtRnded + AmountToApply; // Add the following lines. IF AmountToApply <> 0 THEN IF LinkedAdvanceEntry.GET(VendLedgEntry."Entry No.") THEN BEGIN LinkedAdvanceEntry."Amount to Apply" := LinkedAdvanceEntry."Amount to Apply" + AmountToApply; LinkedAdvanceEntry.MODIFY; END ELSE BEGIN LinkedAdvanceEntry := VendLedgEntry; LinkedAdvanceEntry."Amount to Apply" := AmountToApply; LinkedAdvanceEntry."Currency Code" := Link."Currency Code"; LinkedAdvanceEntry.INSERT; //End of the added lines. END; END; UNTIL Link.NEXT = 0; ...
Попередні вимоги
Щоб застосувати це виправлення, потрібно мати один із таких продуктів:
- Східноєвропейська версія Microsoft Dynamics NAV 2009 R2
- Східноєвропейська версія Microsoft Dynamics NAV 2009 із пакетом оновлень 1
Крім того, потрібно мати виправлення 2543219 та виправлення 2546451 інстальовано для застосування цього виправлення.
Щоб отримати додаткові відомості, клацніть номер статті в базі знань база знань Microsoft:
2543219 у східноєвропейській версії Microsoft Dynamics NAV 2009 R2 не можна обробити переплату, як очікувалося
2546451 повідомлення про помилку "Немає Cust. Ledger запис у фільтрі" під час спроби опублікувати залишкову кількість замовлення на продаж у східноєвропейській версії Microsoft Dynamics NAV 2009
Відомості про видалення
Не можна видалити це виправлення.
Стан
Корпорація Microsoft підтвердила, що це одна з проблем з продуктами Microsoft, перелічених у розділі "Застосовується до".
Примітка. Це стаття "FAST PUBLISH", створена безпосередньо з організації підтримки Корпорації Майкрософт. Інформація, що міститься в цьому документі, надається як у відповідь на нові проблеми. В результаті швидкості її використання матеріали можуть включати друкарські помилки і можуть бути переглянуті в будь-який час без попередження. Інші зауваження див. в розділі Умови використання .