Під час спроби змінити значення в поле "Оплати %" на замовлення на продаж Європи у версії Microsoft Dynamics NAV, 2009 відображається повідомлення про помилку "рядок-буфер оплати з. таблиці не вказано"


У цій статті стосуються Microsoft Dynamics NAV у мовних параметрах в Східній Європі (е-е).

Причини


Розглянемо таку ситуацію, Європа у версії Microsoft Dynamics NAV 2009 року з пакетом оновлень 1 (SP1) і Microsoft Dynamics NAV 2009-R2.
  • Вас замовлення на продаж, який використовує передоплату.
  • Створення лист заздалегідь. Після цього ви повідомлення і рахунок заздалегідь буква.
  • Відкрийте обробка замовлення і спробуйте змінити значення в полі оплати % заголовка.
У цій ситуації з'являється таке повідомлення про помилку:
Рядок-буфер оплати з. таблиці не вказано.

Ця проблема виникає після інсталяції виправлення в таких спільнотою,: KB2543219, KB2546451, KB2546490 та KB2546498.
Щоб отримати додаткові відомості, клацніть номер статті в базі знань Microsoft:
2543219 вам не вдалося обробити переплатили оплати в Європа у версії Microsoft Dynamics NAV 2009-R2
Щоб отримати додаткові відомості, клацніть номер статті в базі знань Microsoft:
2546451 "немає не користувацькі. Книга запис у фільтр"повідомлення про помилку під час спроби повідомлення що залишився кількість замовлення на продаж Європи у версії Microsoft Dynamics NAV, 2009
Щоб отримати додаткові відомості, клацніть номер статті в базі знань Microsoft:
2546490 "користувацькі. Під час спроби розміщувати замовлення на продаж, який використовує на заздалегідь лист оплати Європи у версії Microsoft Dynamics NAV, 2009 відображається повідомлення про помилку книга запис запис ні. [число] і вже існує"
Щоб отримати додаткові відомості, клацніть номер статті в базі знань Microsoft:
2546498 додано оплати залишаються відкритими, коли останній придбання рахунку-фактури в Європа у версії Microsoft Dynamics NAV, 2009

Вирішення


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

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

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



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

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

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

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

Корпорація Майкрософт рекомендує, що обліковий запис користувача Windows, вхід вікна або у вікні бази даних вхід призначити "Супер" роль ID. Якщо обліковий запис користувача не призначено роль ID "Супер", необхідно переконатися, що обліковий запис користувача, має такі дозволи:
  • Змінити дозвіл об'єкт, який буде змінити.
  • Права для виконання системи об'єкт з Ідентифікатором 5210 об'єкт а також системи об'єкт з Ідентифікатором 9015 об'єкта.


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

Зміни коду

Примітка. Завжди тест код вирішення в середовищі контрольовані перед інсталяцією розглянутого виправлення виробництва комп'ютери.
Щоб вирішити цю проблему, виконайте такі дії.
  1. Змін у codeunit- Продажу та повідомлення, витрати майбутніх періодів (442), функція UpdateVATOnLines наступним чином:
    Наявний код
    ...     ROUND(NewAmountIncludingVAT,Currency."Amount Rounding Precision");
    "Prepmt. VAT Base Amt." := NewVATBaseAmount;

    // Delete the following lines.
    IF SalesHeader."Prices Including VAT" THEN
    "Prepmt. Line Amount" := "Prepmt. Amt. Incl. VAT"
    ELSE
    "Prepmt. Line Amount" :=
    ROUND(
    "Prepmt. Amt. Incl. VAT" / (1 + "VAT %" / 100),
    Currency."Amount Rounding Precision");
    // End of the deleted lines.

    IF (VATAmountLine."Line Amount" - VATAmountLine."Invoice Discount Amount") = 0 THEN
    VATDifference := 0
    ELSE
    ...
    Заміна код
    ...   ROUND(NewAmountIncludingVAT,Currency."Amount Rounding Precision");
    "Prepmt. VAT Base Amt." := NewVATBaseAmount;

    IF (VATAmountLine."Line Amount" - VATAmountLine."Invoice Discount Amount") = 0 THEN
    VATDifference := 0
    ELSE
    ...
  2. Змінити код функції UpdateVATOnLines в codeunit- Придбання та повідомлення, витрати майбутніх періодів (444) наступним чином:
    Наявний код
    ...     ROUND(NewAmountIncludingVAT,Currency."Amount Rounding Precision");
    "Prepmt. VAT Base Amt." := NewVATBaseAmount;

    // Delete the following lines.
    IF PurchHeader."Prices Including VAT" THEN
    "Prepmt. Line Amount" := "Prepmt. Amt. Incl. VAT"
    ELSE
    "Prepmt. Line Amount" :=
    ROUND(
    "Prepmt. Amt. Incl. VAT" / (1 + "VAT %" / 100),
    Currency."Amount Rounding Precision");
    // End of the deleted lines.

    IF (VATAmountLine."Line Amount" - VATAmountLine."Invoice Discount Amount") = 0 THEN
    VATDifference := 0
    ELSE
    ...
    Заміна код
    ...   ROUND(NewAmountIncludingVAT,Currency."Amount Rounding Precision");
    "Prepmt. VAT Base Amt." := NewVATBaseAmount;

    IF (VATAmountLine."Line Amount" - VATAmountLine."Invoice Discount Amount") = 0 THEN
    VATDifference := 0
    ELSE
    ...
  3. Змін у Продажу та повідомлення, досягнення codeunit (26585), функція PostInvoiceCorrection наступним чином:
    Видаліть наведену нижче глобальну змінну.
    • Ім'я: SumAmountToApply
    • Тип даних: десятковий

    Додайте наведену нижче глобальну змінну.
    • Ім'я: TempLineRelation
    • Запис для DataType:TEMPORARY (26592)
    :
    Наявний код
    ... GLSetup.GET;
    SalesSetup.GET;
    LinkedAdvanceEntry.DELETEALL;

    SalesLine.RESET;
    SalesLine.SETRANGE("Document Type",SalesHeader."Document Type");
    ...
    Заміна код
    ...  GLSetup.GET;
    SalesSetup.GET;
    LinkedAdvanceEntry.DELETEALL;

    // Add the following line.
    TempLineRelation.DELETEALL;

    SalesLine.RESET;
    SalesLine.SETRANGE("Document Type",SalesHeader."Document Type");
    ...
  4. Змін у Продажу та повідомлення, досягнення codeunit (26585), функція PostInvLineCorrection наступним чином:
    Наявний код
    ... LineRelation."Deducted Amount" := LineRelation."Deducted Amount" + AmountToDeduct;
    LineRelation.MODIFY;

    // Delete the following line.
    CalcLinkedPmtAmountToApply(LetterLine,AmountToDeduct,LinkedAdvanceEntry);
    IF LetterLine."VAT Amount" <> 0 THEN // NO VAT handling
    PostVATCorrection(
    LetterLine,SalesInvHeader,AmountToDeduct,DocNoForVATCorr,VATAmount,GenJnlPostLine,TempJnlLineDim);
    ...
    Заміна код
    ... LineRelation."Deducted Amount" := LineRelation."Deducted Amount" + AmountToDeduct;
    LineRelation.MODIFY;

    // Add the following lines.
    CalcLinkedPmtAmountToApply(
    LetterLine,
    AmountToDeduct,
    LinkedAdvanceEntry,
    RetrieveSumAmountToApply(LineRelation,AmountToDeduct));
    //End of the added lines.

    IF LetterLine."VAT Amount" <> 0 THEN // NO VAT handling
    PostVATCorrection(
    LetterLine,SalesInvHeader,AmountToDeduct,DocNoForVATCorr,VATAmount,GenJnlPostLine,TempJnlLineDim);
    ...
  5. Змін у Продажу та повідомлення, досягнення codeunit (26585), функція CalcLinkedPmtAmountToApply наступним чином:
    Додайте такий параметр:
    • Ім'я: SumAmountToApply
    • Тип даних: десятковий

    Наявний код
    ... // Delete the following line .      
    SumAmountToApply := SumAmountToApply + TotalAmountToApply;

    IF TotalAmountToApply = 0 THEN
    EXIT;
    SetCurrencyPrecision(LetterLine."Currency Code");
    ...
    Заміна код
    ... IF TotalAmountToApply = 0 THEN
    EXIT;
    SetCurrencyPrecision(LetterLine."Currency Code");
    ...
  6. Змін у Продажу та повідомлення, досягнення codeunit (26585), функція UpdateOrderLine наступним чином:
    Наявний код 1
    ...   LineRelation.SETRANGE(Type,LineRelation.Type::Sale);
    LineRelation.SETRANGE("Order No.",SalesLine."Document No.");
    LineRelation.SETRANGE("Order Line No.",SalesLine."Line No.");
    // Delete the following line
    LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount");

    SalesLine."Prepmt. Amount Inv. Incl. VAT" := LineRelation."Invoiced Amount";
    IF PricesInclVAT THEN BEGIN
    ...
    Код на заміну 1
    ... LineRelation.SETRANGE(Type,LineRelation.Type::Sale);
    LineRelation.SETRANGE("Order No.",SalesLine."Document No.");
    LineRelation.SETRANGE("Order Line No.",SalesLine."Line No.");
    // Add the following line
    LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount",Amount,"Requested Amount");

    SalesLine."Prepmt. Amount Inv. Incl. VAT" := LineRelation."Invoiced Amount";
    IF PricesInclVAT THEN BEGIN
    ...
    Наявний код 2
    ...        SalesLine."Prepayment VAT %" / (100 + SalesLine."Prepayment VAT %"),
    Currency."Amount Rounding Precision");
    END ELSE BEGIN
    // Delete the following lines.
    SalesLine."Prepmt. Amt. Inv." :=
    ROUND(LineRelation."Invoiced Amount" / (1 + SalesLine."Prepayment VAT %" / 100),
    Currency."Amount Rounding Precision");
    // End of the deleted lines.
    SalesLine."Prepmt. VAT Amount Inv." :=
    SalesLine."Prepmt. Amount Inv. Incl. VAT" - SalesLine."Prepmt. Amt. Inv.";
    END;
    ...
    Код на заміну 2
    ...        SalesLine."Prepayment VAT %" / (100 + SalesLine."Prepayment VAT %"),
    Currency."Amount Rounding Precision");
    END ELSE BEGIN
    // Add the following lines.
    IF LineRelation."Invoiced Amount" = LineRelation.Amount THEN
    SalesLine."Prepmt. Amt. Inv." := LineRelation."Requested Amount"
    ELSE
    SalesLine."Prepmt. Amt. Inv." :=
    ROUND(LineRelation."Invoiced Amount" / (1 + SalesLine."Prepayment VAT %" / 100),
    Currency."Amount Rounding Precision");
    //End of the added lines.
    SalesLine."Prepmt. VAT Amount Inv." :=
    SalesLine."Prepmt. Amount Inv. Incl. VAT" - SalesLine."Prepmt. Amt. Inv.";
    END;
    ...
  7. Змін у Продажу та повідомлення, досягнення codeunit (26585), функція UpdateLineRelations наступним чином:
    Наявний код
    ...   LineRelation.SETRANGE("Letter No.",LetterLine."Letter No.");
    LineRelation.SETRANGE("Letter Line No.",LetterLine."Line No.");
    LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount");
    ...
    Заміна код
    ...// Add the following line
    LineRelation.SETRANGE(Type,LineRelation.Type::Sale);

    LineRelation.SETRANGE("Letter No.",LetterLine."Letter No.");
    LineRelation.SETRANGE("Letter Line No.",LetterLine."Line No.");
    LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount");
    ...
  8. Створити RetrieveSumAmountToApply процедуру Продажу та повідомлення, досягнення codeunit (26585) наступним чином:
    LOCAL PROCEDURE RetrieveSumAmountToApply@1470050(LineRelation@1470000 : Record 26592;AmountToDeduct@1470001 : Decimal) : Decimal;  BEGIN
    WITH TempLineRelation DO BEGIN
    RESET;
    SETRANGE("Order No.",LineRelation."Order No.");
    SETRANGE("Letter No.",LineRelation."Letter No.");
    IF NOT FINDFIRST THEN BEGIN
    INIT;
    "Order No." := LineRelation."Order No.";
    "Letter No." := LineRelation."Letter No.";
    Amount := AmountToDeduct;
    INSERT;
    END ELSE BEGIN
    Amount := Amount + AmountToDeduct;
    MODIFY;
    END;
    EXIT(Amount);
    END;
    END;

  9. Змін на Придбання та повідомлення, досягнення codeunit (26586), функція PostInvoiceCorrection наступним чином:
    Видаліть наведену нижче глобальну змінну.
    • Ім'я: SumAmountToApply
    • Тип даних: десятковий

    Додайте наведену нижче глобальну змінну.
    • Ім'я: TempLineRelation
    • Тип:-ТИМЧАСОВІ запис (26592)

    Наявний код
    ... GLSetup.GET;
    PurchSetup.GET;
    LinkedAdvanceEntry.DELETEALL;

    PurchLine.RESET;
    PurchLine.SETRANGE("Document Type",PurchHeader."Document Type");
    ...
    Заміна код
    ...  GLSetup.GET;
    PurchSetup.GET;
    LinkedAdvanceEntry.DELETEALL;
    // Add the following line
    TempLineRelation.DELETEALL;

    PurchLine.RESET;
    PurchLine.SETRANGE("Document Type",PurchHeader."Document Type");
    ...
  10. Змін на Придбання та повідомлення, досягнення codeunit (26586), функція PostInvLineCorrection наступним чином:
    Наявний код
    ...   LineRelation."Deducted Amount" := LineRelation."Deducted Amount" + AmountToDeduct;
    LineRelation.MODIFY;
    // Delete the following line.
    CalcLinkedPmtAmountToApply(LetterLine,AmountToDeduct,LinkedAdvanceEntry);
    IF LetterLine."VAT Amount" <> 0 THEN // NO VAT handling
    PostVATCorrection(
    LetterLine,PurchInvHeader,AmountToDeduct,DocNoForVATCorr,VATAmount,GenJnlPostLine,TempJnlLineDim);
    ...
    Заміна код
    ... LineRelation."Deducted Amount" := LineRelation."Deducted Amount" + AmountToDeduct;
    LineRelation.MODIFY;
    // Add the following lines.
    CalcLinkedPmtAmountToApply(
    LetterLine,
    AmountToDeduct,
    LinkedAdvanceEntry,
    RetrieveSumAmountToApply(LineRelation,AmountToDeduct));
    //End of the added lines.
    IF LetterLine."VAT Amount" <> 0 THEN // NO VAT handling
    PostVATCorrection(
    LetterLine,PurchInvHeader,AmountToDeduct,DocNoForVATCorr,VATAmount,GenJnlPostLine,TempJnlLineDim);
    ...
  11. Змін на Придбання та повідомлення, досягнення codeunit (26586), функція CalcLinkedPmtAmountToApply наступним чином:
    У функції, додайте такий параметр:
    • Ім'я: SumAmountToApply
    • Тип даних: десятковий

    Наявний код
    ...   IF TotalAmountToApply = 0 THEN
    EXIT;
    // Delete the following lines.
    SumAmountToApply := SumAmountToApply + TotalAmountToApply;
    // End of the deleted lines.

    SetCurrencyPrecision(LetterLine."Currency Code");
    Link.SETRANGE("Entry Type",Link."Entry Type"::"Link To Letter");
    ...
    Заміна код
    ... IF TotalAmountToApply = 0 THEN
    EXIT;

    SetCurrencyPrecision(LetterLine."Currency Code");
    Link.SETRANGE("Entry Type",Link."Entry Type"::"Link To Letter");
    ...
  12. Змін на Придбання та повідомлення, досягнення codeunit (26586), функція UpdateOrderLine наступним чином:
    Наявний код 1
    ...   LineRelation.SETRANGE(Type,LineRelation.Type::Purchase);
    LineRelation.SETRANGE("Order No.",PurchLine."Document No.");
    LineRelation.SETRANGE("Order Line No.",PurchLine."Line No.");
    // Delete the following line.
    LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount");

    PurchLine."Prepmt. Amount Inv. Incl. VAT" := LineRelation."Invoiced Amount";
    IF PricesInclVAT THEN BEGIN
    ...
    Код на заміну 1
    ...  LineRelation.SETRANGE(Type,LineRelation.Type::Purchase);
    LineRelation.SETRANGE("Order No.",PurchLine."Document No.");
    LineRelation.SETRANGE("Order Line No.",PurchLine."Line No.");
    // Add the following line.
    LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount",Amount,"Requested Amount");

    PurchLine."Prepmt. Amount Inv. Incl. VAT" := LineRelation."Invoiced Amount";
    IF PricesInclVAT THEN BEGIN
    ...

    Наявний код 2
    ...         PurchLine."Prepayment VAT %" / (100 + PurchLine."Prepayment VAT %"),
    Currency."Amount Rounding Precision");
    END ELSE BEGIN
    // Delete the following lines.
    PurchLine."Prepmt. Amt. Inv." :=
    ROUND(LineRelation."Invoiced Amount" / (1 + PurchLine."Prepayment VAT %" / 100),
    Currency."Amount Rounding Precision");
    // End of the deleted lines.
    PurchLine."Prepmt. VAT Amount Inv." :=
    PurchLine."Prepmt. Amount Inv. Incl. VAT" - PurchLine."Prepmt. Amt. Inv.";
    END;
    ...
    Код на заміну 2
    ...       PurchLine."Prepayment VAT %" / (100 + PurchLine."Prepayment VAT %"),
    Currency."Amount Rounding Precision");
    END ELSE BEGIN
    // Add the following lines.
    IF LineRelation."Invoiced Amount" = LineRelation.Amount THEN
    PurchLine."Prepmt. Amt. Inv." := LineRelation."Requested Amount"
    ELSE
    PurchLine."Prepmt. Amt. Inv." :=
    ROUND(LineRelation."Invoiced Amount" / (1 + PurchLine."Prepayment VAT %" / 100),
    Currency."Amount Rounding Precision");
    // End of the added lines.
    PurchLine."Prepmt. VAT Amount Inv." :=
    PurchLine."Prepmt. Amount Inv. Incl. VAT" - PurchLine."Prepmt. Amt. Inv.";
    END;
    ...
  13. Змін на Придбання та повідомлення, досягнення codeunit (26586), функція UpdateLineRelations наступним чином:
    Наявний код
    ...  LineRelation.SETRANGE("Letter No.",LetterLine."Letter No.");
    LineRelation.SETRANGE("Letter Line No.",LetterLine."Line No.");
    LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount");
    ...
    Заміна код
    ...// Add the following line.
    LineRelation.SETRANGE(Type,LineRelation.Type::Purchase);
    // End of the added line.

    LineRelation.SETRANGE("Letter No.",LetterLine."Letter No.");
    LineRelation.SETRANGE("Letter Line No.",LetterLine."Line No.");
    LineRelation.CALCSUMS("Invoiced Amount","Deducted Amount");
    ...
  14. Створити RetrieveSumAmountToApply порядок Придбання та повідомлення, досягнення codeunit (26586) наступним чином:
     LOCAL PROCEDURE RetrieveSumAmountToApply@1470048(LineRelation@1470000 : Record 26592;AmountToDeduct@1470001 : Decimal) : Decimal;  BEGIN
    WITH TempLineRelation DO BEGIN
    RESET;
    SETRANGE("Order No.",LineRelation."Order No.");
    SETRANGE("Letter No.",LineRelation."Letter No.");
    IF NOT FINDFIRST THEN BEGIN
    INIT;
    "Order No." := LineRelation."Order No.";
    "Letter No." := LineRelation."Letter No.";
    Amount := AmountToDeduct;
    INSERT;
    END ELSE BEGIN
    Amount := Amount + AmountToDeduct;
    MODIFY;
    END;
    EXIT(Amount);
    END;
    END;

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

Ви повинні мати одну з таких продуктів, щоб застосувати це виправлення:
  • Європейська у версії Microsoft Dynamics NAV 2009 року з пакетом оновлень 1
  • Європейська у версії Microsoft Dynamics NAV 2009-R2
Примітка. Щоб застосувати це виправлення, потрібно застосувати виправлення в таких KB: KB2543219, KB2546451, KB2546490 та KB2546498.

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

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

Стан


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

Посилання


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