Oluşturulan bir SAF-T dosyasında dosyalanan NumberOfEntries değerindeki değer, SAF-T dosyasını Microsoft Dynamics NAV'ın Portekizce sürümünde oluşturduğunuzda yanlış olur

Uygulandığı Öğe
Dynamics NAV 2009 Microsoft Dynamics NAV 5.0

Bu makale, Portekizce (pt) dil yerel ayarı için Microsoft Dynamics NAV için geçerlidir.

Belirtiler

Microsoft Dynamics NAV'ın Portekizce sürümünde bir SAF-T dosyası oluşturduğunuzu varsayalım. Oluşturulan .xml dosyasını denetlediğinizde, NumberOfEntries dosyasındaki değerin hatalı olduğunu fark edersiniz. Veritabanında işlem yapılırsa değerin sayı ile aynı olmasını beklersiniz.
Bu sorun aşağıdaki ürünlerde oluşur:

  • Microsoft Dynamics NAV 2009 Service Pack 1'in (SP1) Portekizce sürümü
  • Microsoft Dynamics NAV 2009 R2'nin Portekizce sürümü
  • Microsoft Dynamics NAV 5.0 Service Pack 1'in (SP1) Portekizce sürümü

Çözüm

Düzeltme bilgileri

Artık Microsoft, desteklenen bir düzeltme sunmaktadır. Ancak, yalnızca bu makalede açıklanan sorunu düzeltmeye yöneliktir. Bunu yalnızca bu özel sorunun yaşandığı sistemlere uygulayın. Bu düzeltme için ek sınamalar gerekebilir. Bu nedenle, bu sorundan ciddi bir şekilde etkilenmiyorsanız, bir sonraki Microsoft Dynamics NAV 2009 hizmet paketini veya bu düzeltmeyi içeren bir sonraki Microsoft Dynamics NAV sürümünü beklemenizi öneririz.

Not Özel durumlarda, Microsoft Dynamics ve ilgili ürünler için bir Teknik Destek Uzmanı belirli bir güncelleştirmenin sorunu çözeceğini belirlerse, normalde destek aramaları için yapılan ücretler iptal edilebilir. Ek destek soruları ve söz konusu güncelleştirme için uygun olmayan sorunlara normal destek ücretleri uygulanır.

            
          

Yükleme bilgileri

Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar; açık veya zımni hiçbir garanti vermez. Bu, satılabilirlik veya belirli bir amaca uygunluk ile ilgili zımni garantileri içerir, ancak bunlarla sınırlı değildir. Bu makale, gösterilen programlama diline ve prosedürler oluşturmak ve prosedürlerde hata ayıklamak için kullanılan araçlara aşina olduğunuzu varsaymaktadır. Microsoft destek mühendisleri, belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilir, ancak gereksinimlerinizi karşılamaya yönelik ek işlevsellik sağlamak veya yordamlar geliştirmek amacıyla bu örnekleri değiştirmezler.

Not Bu düzeltmeyi yüklemeden önce, tüm Microsoft Navision istemcisi kullanıcılarının sistem oturumunu kapattığını doğrulayın. Bu, Microsoft Navision Application Services (NAS) istemci kullanıcılarını içerir. Bu düzeltmeyi uyguladığınızda oturum açan tek istemci kullanıcı siz olmalısınız.

Bu düzeltmeyi uygulamak için bir geliştirici lisansınız olmalıdır.

Windows Oturum Açma veya Veritabanı Oturum Açma penceresindeki kullanıcı hesabına "SUPER" rol kimliğinin atanmasını öneririz. Kullanıcı hesabına "SUPER" rol kimliği atanamıyorsa, kullanıcı hesabının aşağıdaki izinlere sahip olduğunu doğrulamanız gerekir:

  • Değiştireceğiniz nesnenin Değiştirme izni.
  • Sistem Nesne Kimliği 5210 nesnesi ve Sistem Nesne Kimliği 9015 nesnesi için Yürütme izni.

                
Not: Veri onarımı gerçekleştirmeniz gerekmediği sürece, veri depoları üzerinde haklarınız olması gerekmez.

Kod değişiklikleri

Not: Kod düzeltmelerini üretim bilgisayarlarınıza uygulamadan önce her zaman denetimli bir ortamda sınayın.
Bu sorunu gidermek için aşağıdaki adımları izleyin:

  1. SAF-T PT XMLPort'taki (13301) Öğeler'deki kodu aşağıdaki gibi değiştirin:

    Mevcut kod

    ...
            { [{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 
    ...
    

    Değişim kodu

    ...
           { [{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. SAF-T PT XMLPort'taki (13301) SetData işlevindeki kodu aşağıdaki gibi değiştirin:

    Mevcut kod

    ...
              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);
    ...
    

    Değişim kodu

    ...
              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'taki (13301) Belgelerdeki kodu aşağıdaki gibi değiştirin:

    Mevcut kod

    ...
           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.
    ...
    

    Değişim kodu

    ...
           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.
    ...
    

Önkoşullar

Bu düzeltmeyi uygulamak için aşağıdaki ürünlerden birini yüklemiş olmanız gerekir:

  • Microsoft Dynamics NAV 2009 Service Pack 1'in (SP1) Portekizce sürümü
  • Microsoft Dynamics NAV 2009 R2'nin Portekizce sürümü
  • Microsoft Dynamics NAV 5.0 Service Pack 1'in (SP1) Portekizce sürümü

                
              

Kaldırma bilgileri

Bu düzeltmeyi kaldıramazsınız.

Durum

Microsoft bunun, "Şunlar için geçerlidir" bölümünde listelenen Microsoft ürünlerinde sorun olduğunu doğrulamıştır.

Başvurular

VSTF DynamicsNAV SE: 263721; 263722

Not: Bu, doğrudan Microsoft destek kuruluşu tarafından hazırlanmış bir "HIZLI YAYIMLAMA" makalesidir. Burada yer alan bilgiler acil sorunlar karşısında bu şekliyle verilir. Kullanıma sunma hızının bir sonucu olarak, materyaller yazım hataları içerebilir ve herhangi bir zamanda önceden haber verilmeksizin revize edilebilir. Göz önünde bulundurulması gereken diğer hususlar için Kullanım Koşulları'na bakın.