Сообщение об ошибке «Товар Но. [Item_No.] не существует» при попытке отменить регистрацию в форме учтенных операций поставщика в русской версии Microsoft Dynamics NAV 2009 R2 с пакетом компонентов 1

Применимо к: Dynamics NAV 2009

Данная статья относится к Microsoft Dynamics NAV языка русский (ru).

Симптомы


В русской версии Microsoft Dynamics NAV 2009 R2 с пакетом компонентов 1 если есть изменения распределения НДС операции при попытке отменить регистрации в форме Поставщик Книга операций таблице НДС КНИГА операций (254) появляется следующее сообщение об ошибке:
Код товараItem_No. не существует.

Решение


Сведения об исправлении

Исправление от корпорации Майкрософт доступно. Однако оно предназначено только для устранения проблемы, описанной в этой статье. Предлагаемое исправление должно применяться исключительно в системах, в которых обнаружена эта специфическая неполадка. Это исправление может проходить дополнительное тестирование. Таким образом Если вы не подвержены серьезно эту проблему, рекомендуется дождаться следующего пакета обновления для Microsoft Dynamics NAV 2009 или следующей версии Microsoft Dynamics NAV, содержащего это исправление.

Примечание. В особых случаях оплата, предусмотренная в службу поддержки может быть отменена Если специалист службы технической поддержки Microsoft Dynamics и связанных продуктов определит, что решения проблемы является специально выпущенное. Затраты на обычные услуги службы поддержки будут применяться к дополнительным вопросам и проблемам, которые не охватываются конкретным обновлением.



Сведения об установке

Корпорация Майкрософт предлагает примеры программного кода только для иллюстрации и без явных или подразумеваемых гарантий. Это включает, но не ограничиваясь, подразумеваемые гарантии товарной пригодности или пригодности для определенной цели. В данной статье предполагается, что вы знакомы с демонстрируемым языком программирования и средствами, которые используются для создания и отладки. Сотрудники службы поддержки Майкрософт могут объяснить возможности конкретной процедуры, но не выполнять модификации примеров для обеспечения дополнительных функциональных возможностей или создания процедур для определенных требований.

Примечание. Перед установкой данного исправления убедитесь, что все пользователи Microsoft Navision вошли выход из системы. Это включает в себя пользователей клиентских служб приложений Microsoft Navision (NAS). Должен быть только клиент пользователя, который вошел в систему, при реализации данного исправления.

Чтобы реализовать это исправление, необходимо иметь лицензию разработчика.

Рекомендуется, чтобы учетной записи пользователя в окне Логины Windows или в окне Логины базы данных был присвоен идентификатор роли «SUPER» Если учетная запись пользователя не может быть назначена роль «SUPER» идентификатор, необходимо убедиться, что учетная запись пользователя имеет следующие разрешения.
  • Изменение разрешений для объекта, подлежащий изменению.
  • Разрешение Execute для объекта идентификатор объекта системы 5210 и 9015 идентификатор объекта системного объекта.


Примечание. Необходимо иметь права к хранилищам данных, если необходимо выполнить восстановление данных.

Изменения кода

Примечание. Всегда тестовый код исправления в контролируемой среде, прежде чем применить исправления на производственных компьютерах.
Чтобы устранить эту проблему, выполните следующие действия:
Примечание. Чтобы создать поле (12490), используйте следующий файл .fob.
Имя файлаВерсия файлаРазмер файлаДатаВремяПлатформа
Vstf260227.fobНеприменимо169,34003-Jun-201110:08Неприменимо
Следующий файл доступен для загрузки из файла Exchange Server Microsoft Dynamics:

Дата выпуска: 2 апреля 2014 г.

Корпорация Майкрософт проверила этот файл на наличие вирусов. Корпорация Майкрософт использует последнее антивирусное программное обеспечение, доступное на период публикации файла. Файл хранится на защищенных серверах, что предотвращает его несанкционированное изменение.
  1. Измените код в таблице Запись реверсирования (179) следующим образом:
    1. Добавить следующее поле: {12490; Распределение НДС; Логическое значение}
    2. Измените код в функцию InsertReversalEntry следующим образом:
      Существующий код
      ...                  ReversalEntry."Bal. Account Type" := GLEntry."Bal. Account Type";

      ReversalEntry."Bal. Account No." := GLEntry."Bal. Account No.";

      ReversalEntry."Line No." := NextLineNo;

      NextLineNo := NextLineNo + 1;

      ReversalEntry.INSERT;



      IF GLEntry.Amount > 0 THEN BEGIN

      GLItemLedgRelation.RESET;

      GLItemLedgRelation.SETRANGE("G/L Entry No.",GLEntry."Entry No.");
      ...
      Код для замены
      ...                 ReversalEntry."Bal. Account Type" := GLEntry."Bal. Account Type";

      ReversalEntry."Bal. Account No." := GLEntry."Bal. Account No.";

      ReversalEntry."Line No." := NextLineNo;

      // Add the following line.
      ReversalEntry."VAT Allocation" := VATAllocOnCost;
      // End of the added line.

      NextLineNo := NextLineNo + 1;

      ReversalEntry.INSERT;



      IF GLEntry.Amount >0 THEN BEGIN

      GLItemLedgRelation.RESET;

      GLItemLedgRelation.SETRANGE("G/L Entry No.",GLEntry."Entry No.");
      ...
    3. Измените код в функцию CheckEntries следующим образом:
      Существующий код 1
      ...    PROCEDURE CheckEntries@14();   
      ...
      Код для замены 1
      ...   PROCEDURE CheckEntries@14(IsVATAllocOnCost@1000000000 : Boolean);        
      ...
      Существующий код 2
      ...      MaxPostingDate := 0D;

      IF NOT GLEntry.FIND('-') THEN

      ERROR(Text009,GLEntry.TABLECAPTION,GLAcc.TABLECAPTION);

      // Delete the following line.
      VATAllocOnCost := VATAllocationExist(VATEntry);
      // End of the deleted line.

      IF GLEntry.FIND('-') THEN BEGIN

      // Delete the following line.
      IF (GLEntry."Journal Batch Name" = '') AND NOT VATAllocOnCost THEN
      // End of the deleted line.

      TestFieldError;

      REPEAT

      CheckGLAcc(GLEntry,BalanceCheckAmount,BalanceCheckAddCurrAmount);

      UNTIL GLEntry.NEXT = 0;

      END;
      ...
      Код для замены 2
      ...         MaxPostingDate := 0D;

      IF NOT GLEntry.FIND('-') THEN

      ERROR(Text009,GLEntry.TABLECAPTION,GLAcc.TABLECAPTION);

      IF GLEntry.FIND('-') THEN BEGIN

      // Add the following line.
      IF (GLEntry."Journal Batch Name" = '') AND NOT IsVATAllocOnCost THEN
      // End of the added line.

      TestFieldError;

      REPEAT

      CheckGLAcc(GLEntry,BalanceCheckAmount,BalanceCheckAddCurrAmount);

      UNTIL GLEntry.NEXT = 0;

      END;
      ...
      Существующий код 3
      ...       IF VATEntry.FIND('-') THEN

      REPEAT

      CheckVAT(VATEntry);

      UNTIL VATEntry.NEXT = 0;

      // Delete the following line.
      IF VATAllocOnCost THEN
      // End of the deleted line.

      IF ValueEntry.FIND('-') THEN

      REPEAT

      CheckItem(ValueEntry);

      UNTIL ValueEntry.NEXT = 0;
      ...
      Код для замены 3
      ...       IF VATEntry.FIND('-') THEN

      REPEAT

      CheckVAT(VATEntry);

      UNTIL VATEntry.NEXT = 0;

      // Add the following line.
      IF IsVATAllocOnCost THEN
      // End of the added line.

      IF ValueEntry.FIND('-') THEN

      REPEAT

      CheckItem(ValueEntry);

      UNTIL ValueEntry.NEXT = 0;
      ...
    4. Измените код в функцию SetReverseFilter следующим образом:
      Существующий код 1
      ...           TaxDiffEntry.SETRANGE("Transaction No.",Number);

      END ELSE BEGIN

      GLReg.GET(Number);
      ...
      Код для замены 1
      ...         TaxDiffEntry.SETRANGE("Transaction No.",Number);

      // Add the following line.
      ValueEntry.SETRANGE("Entry No.",0);
      // End of the added line.

      END ELSE BEGIN

      GLReg.GET(Number);
      ...
      Существующий код 2
      ...           VATEntry.SETRANGE("Entry No.",GLReg."From VAT Entry No.",GLReg."To VAT Entry No.");

      GLItemLedgRelation.SETCURRENTKEY(GLItemLedgRelation."G/L Register No.");

      GLItemLedgRelation.SETRANGE("G/L Register No.",GLReg."No.");

      IF GLItemLedgRelation.FINDFIRST THEN

      FromValueEntryNo := GLItemLedgRelation."Value Entry No.";

      IF GLItemLedgRelation.FINDLAST THEN

      ToValueEntryNo := GLItemLedgRelation."Value Entry No.";

      ValueEntry.SETRANGE("Entry No.",FromValueEntryNo,ToValueEntryNo);
      ...
      Код для замены 2
      ...        VATEntry.SETRANGE("Entry No.",GLReg."From VAT Entry No.",GLReg."To VAT Entry No.");

      // Add the following lines.
      FromValueEntryNo := 0;

      ToValueEntryNo := 0;

      IF VATAllocOnCost THEN BEGIN
      // End of the added lines.

      GLItemLedgRelation.SETCURRENTKEY(GLItemLedgRelation."G/L Register No.");

      GLItemLedgRelation.SETRANGE("G/L Register No.",GLReg."No.");

      IF GLItemLedgRelation.FINDFIRST THEN

      FromValueEntryNo := GLItemLedgRelation."Value Entry No.";

      IF GLItemLedgRelation.FINDLAST THEN

      ToValueEntryNo := GLItemLedgRelation."Value Entry No.";
      // Add the following line.
      END;
      // End of the added line.

      ValueEntry.SETRANGE("Entry No.",FromValueEntryNo,ToValueEntryNo);
      ...
    5. Измените код в функцию VATAllocationExist следующим образом:
      Существующий код
      ...// Delete the following line.
      VATEntry2.COPYFILTERS(VATEntry2);
      // End of the deleted line.

      VATEntry2.SETRANGE("VAT Allocation Type",VATEntry2."VAT Allocation Type"::Charge);

      EXIT(NOT VATEntry2.ISEMPTY);
      ...
      Код для замены
      ...// Add the following line.
      VATEntry2.COPYFILTERS(VATEntry);
      // End of the added line.

      VATEntry2.SETRANGE("VAT Allocation Type",VATEntry2."VAT Allocation Type"::Charge);

      EXIT(NOT VATEntry2.ISEMPTY);
      ...
  2. Измените код в функцию Учёт в форме Операции реверсирование (179) следующим образом:
    Добавьте следующие локальной переменной:
    • Имя: VATAllocOnCost
    • Тип данных: логические
    Существующий код 1
    ...            IF TempGLReg.FINDSET THEN

    REPEAT

    ReversalEntry2.SetReverseFilter(TempGLReg."No.","Reversal Type");

    // Delete the following line.
    ReversalEntry2.CheckEntries;
    // End of the deleted line.

    GET(1);

    IF "Reversal Type" = "Reversal Type"::Register THEN

    Number := TempGLReg."No."

    ELSE

    Number := "Transaction No.";
    ...
    Код для замены 1
    ...             IF TempGLReg.FINDSET THEN

    REPEAT

    // Add the following lines.
    SETRANGE("G/L Register No.",TempGLReg."No.");

    SETRANGE("VAT Allocation",TRUE);

    VATAllocOnCost := NOT ISEMPTY;
    // End of the added lines.

    ReversalEntry2.SetReverseFilter(TempGLReg."No.","Reversal Type");

    // Add the following line.
    ReversalEntry2.CheckEntries(VATAllocOnCost);
    // End of the added line.

    GET(1);

    IF "Reversal Type" = "Reversal Type"::Register THEN

    Number := TempGLReg."No."

    ELSE

    Number := "Transaction No.";
    ...
    Существующий код 2
    ...          UNTIL TempGLReg.NEXT = 0;

    END ELSE BEGIN

    ReversalEntry2.SetReverseFilter("Transaction No.","Reversal Type");

    // Delete the following line.
    ReversalEntry2.CheckEntries;
    // End of the deleted line.

    GET(1);

    IF "Reversal Type" = "Reversal Type"::Register THEN

    Number := "G/L Register No."
    ...
    Код для замены 2
    ...             UNTIL TempGLReg.NEXT = 0;

    END ELSE BEGIN

    // Add the following lines.
    SETRANGE("G/L Register No.",TempGLReg."No.");

    SETRANGE("VAT Allocation",TRUE);

    VATAllocOnCost := NOT ISEMPTY;
    // End of the added lines.

    ReversalEntry2.SetReverseFilter("Transaction No.","Reversal Type");

    // Add the following line.
    ReversalEntry2.CheckEntries(VATAllocOnCost);
    // End of the added line.

    GET(1);

    IF "Reversal Type" = "Reversal Type"::Register THEN

    Number := "G/L Register No."
    ...

Предварительные условия

В русской версии Microsoft Dynamics NAV 2009 R2 с Feature Pack 1 для установки этого исправления необходимо иметь.

Сведения об удалении

Установленное обновление удалить нельзя.

Статус


Корпорация Майкрософт подтверждает, что это проблема продуктов Майкрософт, перечисленных в разделе "Относится к".

Ссылки


VSTF DynamicsNAV SE: 260227
Примечание. Это статья «БЫСТРАЯ ПУБЛИКАЦИЯ», созданная непосредственно из технической поддержки корпорации Майкрософт. Сведения, содержащиеся в настоящем документе, предоставляются "как есть" в ответ на возникающие проблемы. В результате скорости предоставления материалов они могут включать опечаток и быть изменены в любое время без предварительного уведомления. Другие вопросы, связанные с Условиями использования см.