Коригувальні записи не групуються в щомісячний звіт або щоквартальний звіт належним чином під час друку та експорту записів в італійській версії Microsoft Dynamics NAV

Застосовується до
Dynamics NAV 2009 Service Pack 1 Microsoft Dynamics NAV 2009 R2 Microsoft Dynamics NAV 5.0 Service Pack 1

Ця стаття стосується microsoft Dynamics NAV для італійської мови (it) мови.

Ознаки

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

  • Італійська версія Microsoft Dynamics NAV 2009 із пакетом оновлень 1 (SP1)
  • Італійська версія Microsoft Dynamics NAV 2009 R2
  • Італійська версія Microsoft Dynamics NAV 5.0 із пакетом оновлень 1 (SP1)

Спосіб усунення проблеми

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

Від корпорації Майкрософт доступне виправлення, що підтримується. Однак вона призначена лише для виправлення проблеми, описаної в цій статті. Застосуйте її лише до систем, у яких виникла ця проблема. Це виправлення може отримати додаткове тестування. Таким чином, якщо ви не серйозно постраждали від цієї проблеми, ми радимо дочекатися наступного 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.

                
Примітка. Ви не повинні мати права на зберігання даних, якщо не потрібно відновлювати дані.

Зміни коду

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

  1. Змініть код в тригері OnAfterGetRecord в Intrastat Jnl. Рядок у звіті (501), як це зробити:
    Наявний код 1

    ...
            SupplUnits := "Intrastat Jnl. Line".Quantity;
    
    // Delete the following lines.
       { "Intra - form Buffer".RESET;
        IF "Intra - form Buffer".GET(
          "Intrastat Jnl. Line"."VAT Registration No.","Intrastat Jnl. Line"."Transaction Type",
          "Intrastat Jnl. Line"."Tariff No.","Intrastat Jnl. Line"."Group Code","Intrastat Jnl. Line"."Transport Method",
          "Intrastat Jnl. Line"."Transaction Specification",CountryOriginCode,"Intrastat Jnl. Line".Area,
          "Intrastat Jnl. Line"."Corrective entry")
        THEN BEGIN
          "Intra - form Buffer".Amount := "Intra - form Buffer".Amount + "Intrastat Jnl. Line".Amount;
          "Intra - form Buffer"."Source Currency Amount" := "Intra - form Buffer"."Source Currency Amount" +
            "Intrastat Jnl. Line"."Source Currency Amount";
          "Intra - form Buffer"."Total Weight" := "Intra - form Buffer"."Total Weight" + "Intrastat Jnl. Line"."Total Weight";
          "Intra - form Buffer"."Statistical Value" := "Intra - form Buffer"."Statistical Value" +
            "Intrastat Jnl. Line"."Statistical Value";
          "Intra - form Buffer".Quantity := "Intra - form Buffer".Quantity + SupplUnits;
          "Intra - form Buffer".MODIFY;
        END ELSE BEGIN
          "Intra - form Buffer".TRANSFERFIELDS("Intrastat Jnl. Line");
          "Intra - form Buffer"."Country of Origin Code" := CountryOriginCode;
          "Intra - form Buffer".Quantity := SupplUnits;
          "Intra - form Buffer"."No." := 0;
          "Intra - form Buffer"."User ID" := USERID;
          "Intra - form Buffer".INSERT;
      END; }
    // End of the deleted lines.
    
      END ELSE BEGIN          // Corrective Entry
    ...
    

    Код заміни 1

    ...
      SupplUnits := "Intrastat Jnl. Line".Quantity;
    
      END ELSE BEGIN          // Corrective Entry
    ...
    

    Наявний код 2

    ...
           LineNo := LineNo +1;
    
    // Delete the following lines.
     "Intra - form Buffer".TRANSFERFIELDS("Intrastat Jnl. Line");  
     "Intra - form Buffer"."Country of Origin Code" := CountryOriginCode;
     "Intra - form Buffer".Quantity := SupplUnits;
    "Intra - form Buffer"."User ID" := USERID;
    "Intra - form Buffer"."No." := LineNo;
     "Intra - form Buffer".INSERT;
     END 
    // End of the deleted lines.
    
    END;
    ...
    

    Код заміни 2

    ...
         LineNo := LineNo +1;
    
    // Add the following lines.
      END;   
      GroupIntraJnlLineIntoBuffer; 
    // End of the added lines.
    
    END;
    ...
    
  2. У звіті (501) у меню клацніть Подання в глобальних шаблонах C/AL додайте на вкладці функції таку функцію: GroupIntraJnlLineIntoBuffer. Потім додайте код у створеній функції GroupIntraJnlLineIntoBuffer таким мовою:

    "Intra - form Buffer".RESET;
    IF "Intra - form Buffer".GET(
      "Intrastat Jnl. Line"."VAT Registration No.","Intrastat Jnl. Line"."Transaction Type",
      "Intrastat Jnl. Line"."Tariff No.","Intrastat Jnl. Line"."Group Code","Intrastat Jnl. Line"."Transport Method",
      "Intrastat Jnl. Line"."Transaction Specification",CountryOriginCode,"Intrastat Jnl. Line".Area,
      "Intrastat Jnl. Line"."Corrective entry",0,"Intrastat Jnl. Line"."Service Tariff No.")
    THEN BEGIN
      "Intra - form Buffer".Amount := "Intra - form Buffer".Amount + "Intrastat Jnl. Line".Amount;
      "Intra - form Buffer"."Source Currency Amount" := "Intra - form Buffer"."Source Currency Amount" +
        "Intrastat Jnl. Line"."Source Currency Amount";
      "Intra - form Buffer"."Total Weight" := "Intra - form Buffer"."Total Weight" + "Intrastat Jnl. Line"."Total Weight";
        "Intra - form Buffer"."Statistical Value" := "Intra - form Buffer"."Statistical Value" +
      "Intrastat Jnl. Line"."Statistical Value";
      "Intra - form Buffer".Quantity := "Intra - form Buffer".Quantity + SupplUnits;
      "Intra - form Buffer".MODIFY;
    END ELSE BEGIN
      "Intra - form Buffer".TRANSFERFIELDS("Intrastat Jnl. Line");
      "Intra - form Buffer"."Country of Origin Code" := CountryOriginCode;
      "Intra - form Buffer".Quantity := SupplUnits;
      "Intra - form Buffer"."No." := 0;
      "Intra - form Buffer"."User ID" := USERID;
      "Intra - form Buffer".INSERT;
    END;
    
    
  3. Змініть код у тригері OnAfterGetRecord в intrastat Jnl. Рядок у звіті (593), як це зробити:
    Наявний код 1

    ...
         SupplUnits := "Intrastat Jnl. Line".Quantity;
    
    // Delete the following lines.
        {"Intra - form Buffer".RESET;
        IF "Intra - form Buffer".GET("Intrastat Jnl. Line"."VAT Registration No.",
          "Intrastat Jnl. Line"."Transaction Type", "Intrastat Jnl. Line"."Tariff No.",
          "Intrastat Jnl. Line"."Group Code", "Intrastat Jnl. Line"."Transport Method",
          "Intrastat Jnl. Line"."Transaction Specification", CountryOriginCode,
          "Intrastat Jnl. Line".Area,"Intrastat Jnl. Line"."Corrective entry")
        THEN BEGIN
          //"Intra - form Buffer".Amount := "Intra - form Buffer".Amount + "Intrastat Jnl. Line".Amount;//old line
          "Intra - form Buffer".Amount := "Intra - form Buffer".Amount + ROUND("Intrastat Jnl. Line".Amount,1);//new line
          "Intra - form Buffer"."Source Currency Amount" := "Intra - form Buffer"."Source Currency Amount" +
            "Intrastat Jnl. Line"."Source Currency Amount";
          "Intra - form Buffer"."Total Weight" := "Intra - form Buffer"."Total Weight" + "Intrastat Jnl. Line"."Total Weight";
          "Intra - form Buffer"."Statistical Value" := "Intra - form Buffer"."Statistical Value" +
            //"Intrastat Jnl. Line"."Statistical Value"; //old line
            ROUND("Intrastat Jnl. Line"."Statistical Value",1); //new line
          "Intra - form Buffer".Quantity := "Intra - form Buffer".Quantity + SupplUnits;
          "Intra - form Buffer".MODIFY;
          //TotalAmount += ABS(ROUND(Amount,1));//old line
          TotalAmount += ROUND(Amount,1);    //new line
        END ELSE BEGIN
          "Intra - form Buffer".TRANSFERFIELDS("Intrastat Jnl. Line");
          "Intra - form Buffer".Amount := ROUND("Intra - form Buffer".Amount,1);//new line
          "Intra - form Buffer"."Statistical Value" := ROUND("Intra - form Buffer"."Statistical Value",1); //new line
          "Intra - form Buffer"."Country of Origin Code" := CountryOriginCode;
          "Intra - form Buffer".Quantity := SupplUnits;
          "Intra - form Buffer"."User ID" := USERID;
          "Intra - form Buffer"."No." := 0;
          "Intra - form Buffer".INSERT;
          //TotalAmount += ABS(ROUND(Amount,1));//old line
          TotalAmount += ROUND(Amount,1);    //new line
          TotalRecords += 1;
        END;}
    // End of the deleted lines.
    
      END ELSE BEGIN          //Corrective E ntry
        IF STRLEN("Reference Period") <> 4 THEN   
    ...
    

    Код заміни 1

    ...
          SupplUnits := "Intrastat Jnl. Line".Quantity;
      END ELSE BEGIN          //Corrective Entry
        IF STRLEN("Reference Period") <> 4 THEN 
    ...
    

    Наявний код 2

    ...
         CheckCorrectiveStatPeriod;
    
    // Delete the following lines.
        "Intra - form Buffer".TRANSFERFIELDS("Intrastat Jnl. Line");
        "Intra - form Buffer".Amount := ROUND("Intra - form Buffer".Amount,1);//new line 
        "Intra - form Buffer"."Statistical Value" := ROUND("Intra - form Buffer"."Statistical Value",1); 
        "Intra - form Buffer"."User ID" := USERID;
        "Intra - form Buffer".INSERT; 
         TotalAmount += ROUND(Amount,1);  
         TotalRecords += 1; 
        OldReferencePeriod := "Reference Period";  
      //END   
    // End of the deleted lines.
    
    END;
    ...
    

    Код заміни 2

    ...
        CheckCorrectiveStatPeriod;
    
    // Add the following lines.
      END;
      GroupIntraJnlLineIntoBuffer;
    // End of the added lines.
    
    END;
    ...
    
  4. У звіті (593) у меню клацніть Подання в глобальних шаблонах C/AL додайте на вкладці функції таку функцію: GroupIntraJnlLineIntoBuffer. Потім додайте код у створеній функції GroupIntraJnlLineIntoBuffer таким мовою:

    "Intra - form Buffer".RESET;
    IF "Intra - form Buffer".GET("Intrastat Jnl. Line"."VAT Registration No.",
      "Intrastat Jnl. Line"."Transaction Type", "Intrastat Jnl. Line"."Tariff No.",
      "Intrastat Jnl. Line"."Group Code", "Intrastat Jnl. Line"."Transport Method",
      "Intrastat Jnl. Line"."Transaction Specification", CountryOriginCode,
      "Intrastat Jnl. Line".Area,"Intrastat Jnl. Line"."Corrective entry",0,"Intrastat Jnl. Line"."Service Tariff No.")
    THEN BEGIN
      "Intra - form Buffer".Amount := "Intra - form Buffer".Amount + ROUND("Intrastat Jnl. Line".Amount,1);
      "Intra - form Buffer"."Source Currency Amount" := "Intra - form Buffer"."Source Currency Amount" +
        "Intrastat Jnl. Line"."Source Currency Amount";
      "Intra - form Buffer"."Total Weight" := "Intra - form Buffer"."Total Weight" + "Intrastat Jnl. Line"."Total Weight";
      "Intra - form Buffer"."Statistical Value" := "Intra - form Buffer"."Statistical Value" +
        ROUND("Intrastat Jnl. Line"."Statistical Value",1);
      "Intra - form Buffer".Quantity := "Intra - form Buffer".Quantity + SupplUnits;
      "Intra - form Buffer".MODIFY;
      TotalAmount +=ROUND("Intrastat Jnl. Line".Amount,1);
    END ELSE BEGIN
      "Intra - form Buffer".TRANSFERFIELDS("Intrastat Jnl. Line");
      "Intra - form Buffer"."Country of Origin Code" := CountryOriginCode;
      "Intra - form Buffer".Amount := ROUND("Intra - form Buffer".Amount,1);
      "Intra - form Buffer"."Statistical Value" := ROUND("Intra - form Buffer"."Statistical Value",1);
      "Intra - form Buffer".Quantity := SupplUnits;
      "Intra - form Buffer"."User ID" := USERID;
      "Intra - form Buffer"."No." := 0;
      "Intra - form Buffer".INSERT;
      TotalAmount += ROUND("Intrastat Jnl. Line".Amount,1);
      TotalRecords += 1;
    END;
    
    

          

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

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

  • Італійська версія Microsoft Dynamics NAV 2009 із пакетом оновлень 1 (SP1)
  • Італійська версія Microsoft Dynamics NAV 2009 R2
  • Італійська версія Microsoft Dynamics NAV 5.0 із пакетом оновлень 1 (SP1)

                
              

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

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

Стан

Корпорація Microsoft підтвердила, що це одна з проблем з продуктами Microsoft, перелічених у розділі "Застосовується до".

Посилання

VSTF DynamicsNAV SE: 237988, 237989

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