Applies ToDynamics NAV 2009

Валюта використовується в 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 Dynamics NAV-клієнт відключився системи. Це стосується, служби Microsoft Dynamics NAV Application Server (NAS). Ви повинні тільки клієнт користувача, який увійшов до системи, під час виконання цього виправлення.Щоб застосувати це виправлення, потрібно мати ліцензію для розробників.Корпорація Майкрософт рекомендує, що обліковий запис користувача Windows, вхід вікна або у вікні бази даних вхід призначити "Супер" роль ID. Якщо обліковий запис користувача не призначено роль ID "Супер", необхідно переконатися, що обліковий запис користувача, має такі дозволи:

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

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

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

Зміни коду

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

  1. Зміни у властивостях код у вигляді застосування записи для клієнта (232) наступним чином:Наявний код

    ...OnModifyRecord=BEGIN                     CODEUNIT.RUN(CODEUNIT::"Cust. Entry-Edit",Rec);                     EXIT(FALSE);                   END;...

    Заміна код

    ...OnModifyRecord=BEGIN                     CODEUNIT.RUN(CODEUNIT::"Cust. Entry-Edit",Rec);                     IF "Applies-to ID" <> xRec."Applies-to ID" THEN                       CalcApplnAmount;                     EXIT(FALSE);                   END;...
  2. Змінити код у вигляді застосування записи для клієнта (232), функції HandlChosenEntries наступним чином:Наявний код 1

    ...IF NOT FromZeroGenJnl THEN          AppliedCustLedgEntryTemp.SETRANGE(Positive,CurrentAmount < 0);        IF AppliedCustLedgEntryTemp.FINDFIRST THEN BEGIN          AppliedCustLedgEntryTemp.CALCFIELDS("Remaining Amount");          IF Type = Type::Direct THEN            CalculateCurrency := ApplyingCustLedgEntry."Entry No." <> 0          ELSE            CalculateCurrency := TRUE;          IF (CurrencyCode <> AppliedCustLedgEntryTemp."Currency Code") AND CalculateCurrency THEN BEGIN            AppliedCustLedgEntryTemp."Remaining Amount" :=              GenJnlPostLine.ExchAmount(                AppliedCustLedgEntryTemp."Remaining Amount",                AppliedCustLedgEntryTemp."Currency Code",                CurrencyCode,"Posting Date");            AppliedCustLedgEntryTemp."Remaining Pmt. Disc. Possible" :=              GenJnlPostLine.ExchAmount(                AppliedCustLedgEntryTemp."Remaining Pmt. Disc. Possible",                AppliedCustLedgEntryTemp."Currency Code",                CurrencyCode,"Posting Date");            AppliedCustLedgEntryTemp."Amount to Apply" :=              GenJnlPostLine.ExchAmount(                AppliedCustLedgEntryTemp."Amount to Apply",                AppliedCustLedgEntryTemp."Currency Code",                CurrencyCode,"Posting Date");          END;          CASE Type OF            Type::Direct:...

    Код на заміну 1

    ...IF NOT FromZeroGenJnl THEN          AppliedCustLedgEntryTemp.SETRANGE(Positive,CurrentAmount < 0);        IF AppliedCustLedgEntryTemp.FINDFIRST THEN BEGIN          ExchangeAmountsOnLedgerEntry(Type,CurrencyCode,AppliedCustLedgEntryTemp);          CASE Type OF            Type::Direct:...

    Наявний код 2

    ...END ELSE BEGIN          AppliedCustLedgEntryTemp.SETRANGE(Positive);          AppliedCustLedgEntryTemp.FINDFIRST;        END;        IF (OldPmtDisc <> PmtDiscAmount) THEN...

    Код на заміну 2

    ...END ELSE BEGIN          AppliedCustLedgEntryTemp.SETRANGE(Positive);          AppliedCustLedgEntryTemp.FINDFIRST;          ExchangeAmountsOnLedgerEntry(Type,CurrencyCode,AppliedCustLedgEntryTemp);        END;        IF (OldPmtDisc <> PmtDiscAmount) THEN...
  3. Змін у вигляді застосування записи для клієнта (232), функція ExchangeAmountsOnLedgerEntry наступним чином:Наявний код

    ...CheckRounding;    END;    BEGIN    END.  }...

    Заміна код

    ...CheckRounding;    END;    LOCAL PROCEDURE ExchangeAmountsOnLedgerEntry@20(Type@1003 : 'Direct,GenJnlLine,SalesHeader';CurrencyCode@1000 : Code[10];VAR AppliedCustLedgEntryTemp@1001 : Record 21);    VAR      CalculateCurrency@1002 : Boolean;    BEGIN      AppliedCustLedgEntryTemp.CALCFIELDS("Remaining Amount");      IF Type = Type::Direct THEN        CalculateCurrency := ApplyingCustLedgEntry."Entry No." <> 0      ELSE        CalculateCurrency := TRUE;      IF (CurrencyCode <> AppliedCustLedgEntryTemp."Currency Code") AND CalculateCurrency THEN BEGIN        AppliedCustLedgEntryTemp."Remaining Amount" :=          GenJnlPostLine.ExchAmount(            AppliedCustLedgEntryTemp."Remaining Amount",            AppliedCustLedgEntryTemp."Currency Code",            CurrencyCode,"Posting Date");        AppliedCustLedgEntryTemp."Remaining Pmt. Disc. Possible" :=          GenJnlPostLine.ExchAmount(            AppliedCustLedgEntryTemp."Remaining Pmt. Disc. Possible",            AppliedCustLedgEntryTemp."Currency Code",            CurrencyCode,"Posting Date");        AppliedCustLedgEntryTemp."Amount to Apply" :=          GenJnlPostLine.ExchAmount(            AppliedCustLedgEntryTemp."Amount to Apply",            AppliedCustLedgEntryTemp."Currency Code",            CurrencyCode,"Posting Date");      END;    END;    BEGIN    END.  }...
  4. Зміни у властивостях код у вигляді застосування записи в постачальника (233) наступним чином:Наявний код

    ...OnModifyRecord=BEGIN                     CODEUNIT.RUN(CODEUNIT::"Vend. Entry-Edit",Rec);                     EXIT(FALSE);                   END;...

    Заміна код

    ...OnModifyRecord=BEGIN                     CODEUNIT.RUN(CODEUNIT::"Vend. Entry-Edit",Rec);                     IF "Applies-to ID" <> xRec."Applies-to ID" THEN                       CalcApplnAmount;                     EXIT(FALSE);                   END;...
  5. Змінити код у вигляді застосування записи в постачальника (233), функції HandlChosenEntries наступним чином:Наявний код 1

    ...IF NOT FromZeroGenJnl THEN          AppliedVendLedgEntryTemp.SETRANGE(Positive,CurrentAmount < 0);        IF AppliedVendLedgEntryTemp.FINDFIRST THEN BEGIN          AppliedVendLedgEntryTemp.CALCFIELDS("Remaining Amount");          IF Type = Type::Direct THEN            CalculateCurrency := ApplyingVendLedgEntry."Entry No." <> 0          ELSE            CalculateCurrency := TRUE;          IF (CurrencyCode <> AppliedVendLedgEntryTemp."Currency Code") AND CalculateCurrency THEN BEGIN            AppliedVendLedgEntryTemp."Remaining Amount" :=              GenJnlPostLine.ExchAmount(                AppliedVendLedgEntryTemp."Remaining Amount",                AppliedVendLedgEntryTemp."Currency Code",                CurrencyCode,"Posting Date");            AppliedVendLedgEntryTemp."Remaining Pmt. Disc. Possible" :=              GenJnlPostLine.ExchAmount(                AppliedVendLedgEntryTemp."Remaining Pmt. Disc. Possible",                AppliedVendLedgEntryTemp."Currency Code",                CurrencyCode,"Posting Date");            AppliedVendLedgEntryTemp."Amount to Apply" :=              GenJnlPostLine.ExchAmount(                AppliedVendLedgEntryTemp."Amount to Apply",                AppliedVendLedgEntryTemp."Currency Code",                CurrencyCode,"Posting Date");          END;          CASE Type OF            Type::Direct:...

    Код на заміну 1

    ...IF NOT FromZeroGenJnl THEN          AppliedVendLedgEntryTemp.SETRANGE(Positive,CurrentAmount < 0);        IF AppliedVendLedgEntryTemp.FINDFIRST THEN BEGIN          ExchangeAmountsOnLedgerEntry(Type,CurrencyCode,AppliedVendLedgEntryTemp);          CASE Type OF            Type::Direct:...

    Наявний код 2

    ...END ELSE BEGIN          AppliedVendLedgEntryTemp.SETRANGE(Positive);          AppliedVendLedgEntryTemp.FINDFIRST;        END;        IF (OldPmtdisc <> PmtDiscAmount) THEN...

    Код на заміну 2

    ...END ELSE BEGIN          AppliedVendLedgEntryTemp.SETRANGE(Positive);          AppliedVendLedgEntryTemp.FINDFIRST;          ExchangeAmountsOnLedgerEntry(Type,CurrencyCode,AppliedVendLedgEntryTemp);        END;        IF (OldPmtdisc <> PmtDiscAmount) THEN...
  6. Змін у вигляді застосування записи в постачальника (233), функція ExchangeAmountsOnLedgerEntry наступним чином:Наявний код

    ...AppliesToID := AppliesToID2;    END;    BEGIN    END.  }...

    Заміна код

    ...AppliesToID := AppliesToID2;    END;    PROCEDURE ExchangeAmountsOnLedgerEntry@14(Type@1000 : 'Direct,GenJnlLine,PurchHeader';CurrencyCode@1001 : Code[10];VAR AppliedVendLedgEntryTemp@1002 : Record 25);    VAR      CalculateCurrency@1003 : Boolean;    BEGIN      AppliedVendLedgEntryTemp.CALCFIELDS("Remaining Amount");      IF Type = Type::Direct THEN        CalculateCurrency := ApplyingVendLedgEntry."Entry No." <> 0      ELSE        CalculateCurrency := TRUE;      IF (CurrencyCode <> AppliedVendLedgEntryTemp."Currency Code") AND CalculateCurrency THEN BEGIN        AppliedVendLedgEntryTemp."Remaining Amount" :=          GenJnlPostLine.ExchAmount(            AppliedVendLedgEntryTemp."Remaining Amount",            AppliedVendLedgEntryTemp."Currency Code",            CurrencyCode,"Posting Date");        AppliedVendLedgEntryTemp."Remaining Pmt. Disc. Possible" :=          GenJnlPostLine.ExchAmount(            AppliedVendLedgEntryTemp."Remaining Pmt. Disc. Possible",            AppliedVendLedgEntryTemp."Currency Code",            CurrencyCode,"Posting Date");        AppliedVendLedgEntryTemp."Amount to Apply" :=          GenJnlPostLine.ExchAmount(            AppliedVendLedgEntryTemp."Amount to Apply",            AppliedVendLedgEntryTemp."Currency Code",            CurrencyCode,"Posting Date");      END;    END;    BEGIN    END.  }...

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

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

  • Microsoft Dynamics NAV 2009 R2

  • Microsoft Dynamics NAV 2009 року з пакетом оновлень 1

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

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

Стан

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

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

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

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

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

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