"Елемент No [Item_No.] не съществува", когато се опитате да обърнете регистъра във формуляра "Записи в книгата на доставчиците" в руската версия на Microsoft Dynamics NAV 2009 R2 с Feature Pack 1

Отнася се за
Dynamics NAV 2009

Тази статия се отнася за Microsoft Dynamics NAV за езиково-географска променлива за руски (ru).

Симптоми

В руската версия на Microsoft Dynamics NAV 2009 R2 с Feature Pack 1, ако таблицата за въвеждане на VAT (254) съдържа операции за промени в разпределението на ДДС, когато се опитате да обърнете регистъра във формуляра "Записи в книгата на доставчиците", получавате следното съобщение за грешка:

Забележка

Артикул No Item_No. не съществува.

      

Решение

Информация за горещи поправки

Поддържа гореща поправка вече се предлага от Microsoft. Целта му е обаче само да коригира проблема, който е описан в тази статия. Прилагайте го само към системи, които срещат този конкретен проблем. Тази гореща корекция може да бъде подложена на допълнително тестване. Ето защо, ако не сте сериозно засегнати от този проблем, ви препоръчваме да изчакате следващия сервизен пакет за Microsoft Dynamics NAV 2009 или следващата версия на Microsoft Dynamics NAV, която съдържа тази гореща корекция.

Забележка: При специални случаи таксите, които обикновено се начисляват за свързани с поддръжката разговори, могат да бъдат отменени, ако специалист по техническа поддръжка за Microsoft Dynamics и свързаните продукти реши, че проблемът може да бъде решен със специфична актуализация. Стандартните такси за поддръжката ще важат за допълнителни въпроси, свързани с нея, както и за проблеми, които не спадат към съответната актуализация.

            
          

Информация за инсталиране

Microsoft предоставя примери за програмиране само за илюстрация, без гаранция, нито изрична, или подразбираща се. Това включва, но не се ограничава до, подразбиращите се гаранции за продаваемост или годност за определена цел. В тази статия се предполага, че сте запознати с езика за програмиране, който се демонстрира, и с инструментите, които се използват за създаване и за процедури за отстраняване на грешки. Инженерите по поддръжка на Microsoft могат да ви помогнат да обяснят функционалността на дадена процедура, но няма да променят тези примери, за да предоставят допълнителна функционалност или да конструират процедури, които да отговарят на вашите конкретни изисквания.

Забележка Преди да инсталирате тази гореща корекция, уверете се, че всички потребители на клиента на Microsoft Navision са излезли от системата. Това включва потребители на клиенти на Microsoft Navision Application Services (NAS). Когато внедрявате тази гореща корекция, трябва да сте единственият клиентски потребител е влязъл.

За да приложите тази гореща корекция, трябва да имате лиценз за разработчик.

Препоръчваме на потребителския акаунт в прозореца за влизане в Windows или в прозореца за влизане в база данни да бъде присвоен ИД на роля "SUPER". Ако на потребителския акаунт не може да бъде присвоен ИД на роля "SUPER", трябва да се уверите, че този потребителски акаунт има следните разрешения:

  • Разрешението за промяна за обекта, който ще променяте.
  • Разрешението за изпълнение за обекта 5210 на системен обект с ИД 5210 и за обекта 9015 на системен обект.

                
Забележка: Не е необходимо да имате права за хранилищата за данни, освен ако не трябва да извършите поправка на данни.

Промени в кода

Забележка: Винаги тествайте корекциите на кода в контролирана среда, преди да ги приложите към производствените си компютри.
За да решите този проблем, изпълнете следните стъпки:
Забележка: За да създадете полето (12490), използвайте следния .fob файл.

Име на файл Версия на файл Размер на файл Дата Час Платформа
Vstf260227.fob Не е приложимо 169,340 03 юни 2011 г. 10:08 Не е приложимо

Следният файл е достъпен за изтегляне от Microsoft Dynamics File Exchange Server :

https://mbs2.microsoft.com/fileexchange/?fileID=5f52394d-7020-4d24-98b4-909002c45cfe Дата на издаване: 2 април 2014 г.

   Microsoft сканира този файл за вируси. Microsoft използва най-актуалния софтуер за откриване на вируси, наличен към датата на публикуване на файла. Файлът се съхранява на сървъри с повишена сигурност, които помагат да се предотвратят неразрешени промени във файла.

  1. Променете кода в таблицата за запис за обръщане (179) по следния начин:

    1. Добавете следното поле: { 12490; ; Разпределение на ДДС; Boolean }

    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. Променете кода във функцията Post във формуляра за обратни записи (179) по следния начин:
    Добавете следната локална променлива:

    • Име: VATAllocOnCost
    • DataType: Boolean

    Съществуващ код 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, за да приложите тази гореща корекция.

Информация за премахване

Не можете да премахнете тази гореща корекция.

Състояние

Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.

Справки

VSTF DynamicsNAV SE: 260227

Забележка: Това е статия "FAST PUBLISH", създадена директно от организацията за поддръжка на Microsoft. Информацията, съдържаща се тук, е предоставена както е в отговор на възникващи проблеми. В резултат на бързината на предоставянето им, материалите могат да включват печатни грешки и могат да бъдат коригирани по всяко време без предизвестие. Вижте условията на използване за други съображения.