Стойността в NumberOfEntries filed in a created SAF-T file is incorrect when create SAF-T file in the португалска версия на Microsoft Dynamics NAV

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

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

Симптоми

Да предположим, че сте създали SAF-T файл в португалската версия на Microsoft Dynamics NAV. Когато проверите създадения .xml файл, ще забележите, че стойността във файла NumberOfEntries е неправилна. Очаквате стойността да бъде същата като броя на транзакциите в базата данни.
Този проблем възниква в следните продукти:

  • Португалска версия на Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
  • Португалска версия на Microsoft Dynamics NAV 2009 R2
  • Португалска версия на Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)

Решение

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

Поддържа гореща поправка вече се предлага от 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 на системен обект.

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

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

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

  1. Променете кода в елементите в SAF-T PT XMLPort (13301) както следва:

    Съществуващ код

    ...
            { [{2FBD739B-4063-4410-80DA-15187CE38CB6}];5 ;CreditAmount        ;Element ;Text    ;
                                                        VariableName=EntriesSalesLnCreditAmount }
    
          { [{158561B4-B3C1-4D40-9FE8-2260247EFFE4}];1 ;SourceDocuments     ;Element ;Text    ;
                                                        Export::OnBeforePassVariable=BEGIN
                                                                                       IF TotalDocs = 0 THEN 
    ...
    

    Код за подмяна

    ...
           { [{2FBD739B-4063-4410-80DA-15187CE38CB6}];5 ;CreditAmount        ;Element ;Text    ;
                                                        VariableName=EntriesSalesLnCreditAmount }
    
    // Add the following lines.
         { [{3CD38B38-F1FA-494A-9863-2B919BF4B14B}];2 ;Journal             ;Element ;Table   ;
                                                       VariableName=EntriesBlankSourceCode;
                                                       SourceTable=Table2000000026;
                                                       Export::OnPreXMLItem=BEGIN
                                                                              EntriesBlankSourceCode.SETRANGE(Number,1,1);
                                                                              Window.UPDATE(1,Text1110008);
                                                                            END;
    
                                                       Export::OnAfterGetRecord=BEGIN
                                                                                  IF NOT CheckGLRegBlankSourceCode THEN
                                                                                    currXMLport.SKIP;
    
                                                                                  ClearTempRec;
    
                                                                                  REPEAT
                                                                                    GetGLEntries;
                                                                                  UNTIL TempGLReg.NEXT = 0;
    
                                                                                  EntriesBlankJnlID := 'VAZIO';
                                                                                  EntriesBlankJnlDescription := 'VAZIO';
                                                                                  Window.UPDATE(2,'');
                                                                                END;
                                                                                 }
    
         { [{4829023A-4C43-4746-B15E-55BE1C8A77BC}];3 ;JournalID           ;Element ;Text    ;
                                                       VariableName=EntriesBlankJnlID }
    
         { [{AC925688-8EBD-4477-BE49-731F4647CF75}];3 ;Description         ;Element ;Text    ;
                                                       VariableName=EntriesBlankJnlDescription }
    
         { [{EA486FCE-6103-4895-AE4A-A970D1AA69E5}];3 ;Transaction         ;Element ;Table   ;
                                                       VariableName=EntriesBlankTr;
                                                       SourceTable=Table2000000026;
                                                       Export::OnPreXMLItem=BEGIN
                                                                              TempGLEntry.RESET;
                                                                              EntriesBlankTr.SETRANGE(Number,1,TempGLEntry.COUNT);
                                                                              TempGLEntry.FINDFIRST;
                                                                            END;
    
                                                       Export::OnAfterGetRecord=BEGIN
                                                                                  ApplyFilters;
                                                                                  EntriesBlankTrID := FORMAT(FORMAT(TempGLEntry."Posting Date",0,9) + ' ' + EntriesBlankJnlID + ' ' + TempGLEntry."Document No.");
                                                                                  EntriesBlankDocArchivalNumber := TempGLEntry."Document No.";
                                                                                  EntriesBlankTrPeriod := FORMAT(GetPeriod(TempGLEntry."Posting Date"),0,9);
                                                                                  EntriesBlankTrDate := FORMAT(NORMALDATE(TempGLEntry."Posting Date"),0,9);
                                                                                  IF CLOSINGDATE(TempGLEntry."Posting Date") = TempGLEntry."Posting Date" THEN
                                                                                    EntriesBlankTransactionType := 'A'
                                                                                  ELSE
                                                                                    EntriesBlankTransactionType := 'N';
                                                                                  EntriesBlankTrDescription := EntriesBlankJnlDescription;
                                                                                  EntriesBlankGLPostingDate := GetGLentryCreationDateTime(TempGLEntry."Entry No.");
                                                                                  TempGLEntry.NEXT;
                                                                                END;
                                                                                 }
    
         { [{1A2E1328-2281-4276-B7F2-93032558BF4D}];4 ;TransactionID       ;Element ;Text    ;
                                                       VariableName=EntriesBlankTrID }
    
         { [{7238FAE0-4177-49F2-88D7-322E3479BEDF}];4 ;Period              ;Element ;Text    ;
                                                       VariableName=EntriesBlankTrPeriod }
    
         { [{CB2AE9CA-4533-4F21-A5F0-9DB125CCE6A7}];4 ;TransactionDate     ;Element ;Text    ;
                                                       VariableName=EntriesBlankTrDate }
    
         { [{06565DE9-009E-4CD1-9567-F869ADD6AF09}];4 ;Description         ;Element ;Text    ;
                                                       VariableName=EntriesBlankTrDescription }
    
         { [{FC7AF546-FDA6-4409-9A11-E8C3F08B0245}];4 ;DocArchivalNumber   ;Element ;Text    ;
                                                       VariableName=EntriesBlankDocArchivalNumber }
    
         { [{0D9858E8-71B7-4730-ACD3-208CB18E55D5}];4 ;TransactionType     ;Element ;Text    ;
                                                       VariableName=EntriesBlankTransactionType }
    
         { [{7A0CC2BE-C3C8-4EDA-A616-C17000B3631C}];4 ;GLPostingDate       ;Element ;Text    ;
                                                       VariableName=EntriesBlankGLPostingDate }
    
         { [{F7668B87-49B8-4CB6-8316-D1440A5E3ABA}];4 ;Line                ;Element ;Table   ;
                                                       VariableName=EntriesLinedBlankDbtAmt;
                                                       SourceTable=Table2000000026;
                                                       Export::OnPreXMLItem=BEGIN
                                                                              TempGLEntry2.SETFILTER("Debit Amount",'<>% 1',0);
                                                                              IF NOT TempGLEntry2.FINDFIRST THEN
                                                                                currXMLport.BREAK;
                                                                              EntriesLinedBlankDbtAmt.SETRANGE(Number,1,TempGLEntry2.COUNT);
                                                                            END;
    
                                                       Export::OnAfterGetRecord=BEGIN
                                                                                  EntriesLnBlankDbtAmtRecordID := FORMAT(TempGLEntry2."Entry No.",0,9);
                                                                                  EntriesLnBlankDbtAmtAccountID := TempGLEntry2."G/L Account No.";
                                                                                  EntriesLnBlankDbtAmtSysEntDate := GetGLentryCreationDateTime(TempGLEntry2."Entry No.");
                                                                                  EntriesLnBlankDbtAmtDescr := TempGLEntry2.Description;
                                                                                  EntriesLnBlankDebitAmount := FORMAT(TempGLEntry2."Debit Amount",0,9);
                                                                                  TempGLEntry2.NEXT;
                                                                                END;
                                                                                 }
    
         { [{455ABAA5-310A-4999-B349-FF32D14A1968}];5 ;RecordID            ;Element ;Text    ;
                                                       VariableName=EntriesLnBlankDbtAmtRecordID }
    
         { [{82412AE1-E33F-4DC9-837E-8E7AAEEFE2ED}];5 ;AccountID           ;Element ;Text    ;
                                                       VariableName=EntriesLnBlankDbtAmtAccountID }
    
         { [{448EE384-AF3E-4A02-AC66-373591BC28CD}];5 ;SystemEntryDate     ;Element ;Text    ;
                                                       VariableName=EntriesLnBlankDbtAmtSysEntDate }
    
         { [{9F8171F0-A12E-49B6-A00D-93745204EB23}];5 ;Description         ;Element ;Text    ;
                                                       VariableName=EntriesLnBlankDbtAmtDescr }
    
         { [{1BD67E80-3CC3-41DF-86B7-7A9FF3514B36}];5 ;DebitAmount         ;Element ;Text    ;
                                                       VariableName=EntriesLnBlankDebitAmount }
    
         { [{35FC60AD-0217-4D95-978A-FFAD08D66558}];4 ;Line                ;Element ;Table   ;
                                                       VariableName=EntriesLinedBlankCrAmt;
                                                       SourceTable=Table2000000026;
                                                       Export::OnPreXMLItem=BEGIN
                                                                              TempGLEntry2.SETRANGE("Debit Amount");
                                                                              TempGLEntry2.SETFILTER("Credit Amount",' <>%1',0);
                                                                              IF NOT TempGLEntry2.FINDFIRST THEN
                                                                                currXMLport.BREAK;
                                                                              EntriesLinedBlankCrAmt.SETRANGE(Number,1,TempGLEntry2.COUNT);
                                                                            END;
    
                                                       Export::OnAfterGetRecord=BEGIN
                                                                                  EntriesLnBlankCrAmtRecordID := FORMAT(TempGLEntry2."Entry No.",0,9);
                                                                                  EntriesLnBlankCrAmtAccountID := TempGLEntry2."G/L Account No.";
                                                                                  EntriesLnBlankCrAmtSysEntrDate := GetGLentryCreationDateTime(TempGLEntry2."Entry No.");
                                                                                  EntriesLnBlankCrAmtDescr := TempGLEntry2.Description;
                                                                                  EntriesLnBlankCreditAmount := FORMAT(TempGLEntry2."Credit Amount",0,9);
                                                                                  TempGLEntry2.NEXT;
                                                                                END;
                                                                                 }
    
         { [{42970CEB-47B1-4737-9067-5D8310FCFA39}];5 ;RecordID            ;Element ;Text    ;
                                                       VariableName=EntriesLnBlankCrAmtRecordID }
    
         { [{C236B36C-53F0-4FD1-ABCF-28828E216114}];5 ;AccountID           ;Element ;Text    ;
                                                       VariableName=EntriesLnBlankCrAmtAccountID }
    
         { [{AEC885C8-FCE9-4C04-BBFB-B1A6B7540DDA}];5 ;SystemEntryDate     ;Element ;Text    ;
                                                       VariableName=EntriesLnBlankCrAmtSysEntrDate }
    
         { [{D2F54DEF-3BF6-4F7F-BCB9-384A96BE514D}];5 ;Description         ;Element ;Text    ;
                                                       VariableName=EntriesLnBlankCrAmtDescr }
    
         { [{F1DA085A-9AC4-4DB4-AC54-DA77AFE7CCAD}];5 ;CreditAmount        ;Element ;Text    ;
                                                       VariableName=EntriesLnBlankCreditAmount }
    // End of the added lines.
    
          { [{158561B4-B3C1-4D40-9FE8-2260247EFFE4}];1 ;SourceDocuments     ;Element ;Text    ;
                                                        Export::OnBeforePassVariable=BEGIN
                                                                                       IF TotalDocs = 0 THEN
    ...
    
  2. Променете кода във функцията SetData в SAF-T PT XMLPort (13301) по следния начин:

    Съществуващ код

    ...
              GLEntry.RESET;
            // No. of transactions
            GetOpenGLRegister;
    // Delete the following lines.
           IF SourceCode.FINDSET THEN
             REPEAT
               IF CheckGLReg THEN
                 REPEAT
                   TempGLEntry3.DELETEALL;
                   GLEntry2.RESET;
                   GLEntry2.SETRANGE("Entry No.",TempGLReg."From Entry No.",TempGLReg."To Entry No.");
                   IF GLEntry2.FINDSET THEN
                     REPEAT
                       TempGLEntry3.RESET;
                       TempGLEntry3.SETCURRENTKEY("Document No.","Posting Date");
                       TempGLEntry3.SETRANGE("Document No.",GLEntry2."Document No.");
                       TempGLEntry3.SETRANGE("Posting Date",GLEntry2."Posting Date");
                       IF NOT TempGLEntry3.FINDFIRST THEN BEGIN
                         NoOfTransactions += 1;
                         TempGLEntry3.INIT;
                         TempGLEntry3.TRANSFERFIELDS(GLEntry2);
                         TempGLEntry3.INSERT;
                       END;
                     UNTIL GLEntry2.NEXT=0;
                 UNTIL TempGLReg.NEXT = 0;
             UNTIL SourceCode.NEXT = 0;
    // End of the deleted lines.
    
            // Sales Invoice Docs
            SalesInvoice.RESET;
            SalesInvoice.SETFILTER("Posting Date",'%1..%2',StartDate3,EndDate2);
    ...
    

    Код за подмяна

    ...
              GLEntry.RESET;
            // No. of transactions
            GetOpenGLRegister;
    // Add the following lines.
           TempGLEntry3.DELETEALL;
           IF SourceCode.FINDSET THEN
             REPEAT
               IF CheckGLReg THEN
                 REPEAT
                   CalcNoOfTransactions(TempGLReg."From Entry No.",TempGLReg."To Entry No.",TempGLEntry3);
                 UNTIL TempGLReg.NEXT = 0;
             UNTIL SourceCode.NEXT = 0;
    
           IF CheckGLRegBlankSourceCode THEN
             REPEAT
               CalcNoOfTransactions(TempGLReg."From Entry No.",TempGLReg."To Entry No.",TempGLEntry3);
             UNTIL TempGLReg.NEXT = 0;
    // End of the added lines.
    
            // Sales Invoice Docs
            SalesInvoice.RESET;
            SalesInvoice.SETFILTER("Posting Date",'%1..%2',StartDate3,EndDate2);
    ...
    
  3. Променете кода в документацията на SAF-T PT XMLPort (13301) както следва:

    Съществуващ код

    ...
           EXIT(FORMAT(DateParam,0,9) + 'T' + FORMAT(TimeParam,0,'<Hours24,2><Filler Character,0>:<Minutes,2>:<Seconds,2>'));
          END;
    
    // Delete the following lines.
         BEGIN
         END.
       }
     }
    // End of the deleted lines.
    ...
    

    Код за подмяна

    ...
           EXIT(FORMAT(DateParam,0,9) + 'T' + FORMAT(TimeParam,0,'<Hours24,2><Filler Character,0>:<Minutes,2>:<Seconds,2>'));
          END;
    // Add the following lines.
         LOCAL PROCEDURE CalcNoOfTransactions@1110021(FromEntryNo@1110000 : Integer;ToEntryNo@1110001 : Integer;VAR TempGLEntry@1110002 : Record 17);
         VAR
           GLEntry@1110003 : Record 17;
         BEGIN
           GLEntry.RESET;
           GLEntry.SETRANGE("Entry No.",TempGLReg."From Entry No.",TempGLReg."To Entry No.");
           IF GLEntry.FINDSET THEN
             REPEAT
               TempGLEntry.RESET;
               TempGLEntry.SETCURRENTKEY("Document No.","Posting Date");
               TempGLEntry.SETRANGE("Document No.",GLEntry."Document No.");
               TempGLEntry.SETRANGE("Posting Date",GLEntry."Posting Date");
               TempGLEntry.SETRANGE("Source Code",GLEntry."Source Code");
               IF NOT TempGLEntry.FINDFIRST THEN BEGIN
                 NoOfTransactions += 1;
                 TempGLEntry.INIT;
                 TempGLEntry.TRANSFERFIELDS(GLEntry);
                 TempGLEntry.INSERT;
               END;
             UNTIL GLEntry.NEXT=0;
         END;
    
         LOCAL PROCEDURE CheckGLRegBlankSourceCode@1110022() : Boolean;
         BEGIN
           TempGLReg.RESET;
           TempGLReg.SETFILTER("Posting Date",'%1..%2',StartDate3,CLOSINGDATE(EndDate2));
           TempGLReg.SETRANGE("Source Code",'');
           EXIT(TempGLReg.FINDFIRST);
         END;
    
         BEGIN
         END.
       }
     } 
    // End of the added lines.
    ...
    

Предварителни изисквания

Трябва да имате инсталиран един от следните продукти, за да приложите тази гореща корекция:

  • Португалска версия на Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
  • Португалска версия на Microsoft Dynamics NAV 2009 R2
  • Португалска версия на Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)

                
              

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

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

Състояние

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

Справки

VSTF DynamicsNAV SE: 263721; 263722

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