Dit artikel is van toepassing op Microsoft Dynamics NAV voor de taalinstelling Portugees (pt).
Symptomen
Stel dat u een SAF-T-bestand maakt in de Portugese versie van Microsoft Dynamics NAV. Wanneer u het gemaakte .xml-bestand controleert, ziet u dat de waarde in de opgeslagen NumberOfEntries onjuist is. U verwacht dat de waarde hetzelfde is als het getal als de transacties in de database.
Dit probleem treedt op in de volgende producten:
- De Portugese versie van Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
- De Portugese versie van Microsoft Dynamics NAV 2009 R2
- De Portugese versie van Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)
Oplossing
Hotfix-informatie
Er is nu een ondersteunde hotfix beschikbaar bij Microsoft. Het is echter alleen bedoeld om het probleem op te lossen dat in dit artikel wordt beschreven. Pas deze alleen toe op systemen die dit specifieke probleem ondervinden. Deze hotfix kan aanvullende tests ontvangen. Als u niet ernstig last hebt van dit probleem, raden we u aan te wachten op het volgende Microsoft Dynamics NAV 2009-servicepack of de volgende Microsoft Dynamics NAV-versie die deze hotfix bevat.
Opmerking In speciale gevallen kunnen kosten die gewoonlijk worden gemaakt voor ondersteuningsoproepen worden geannuleerd als een technische ondersteuningsmedewerker voor Microsoft Dynamics en gerelateerde producten vaststelt dat een specifieke update uw probleem oplost. De gebruikelijke ondersteuningskosten zijn van toepassing op aanvullende ondersteuningsvragen en problemen die niet in aanmerking komen voor de specifieke update in kwestie.
Installatie-informatie
Microsoft biedt programmeervoorbeelden uitsluitend ter illustratie, zonder uitdrukkelijke of impliciete garantie. Dit omvat, maar is niet beperkt tot, de impliciete garanties van verkoopbaarheid of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend bent met de programmeertaal die wordt gedemonstreerd en met de hulpprogramma's die worden gebruikt om procedures te maken en fouten op te sporen. Microsoft-ondersteuningstechnici kunnen helpen bij het uitleggen van de functionaliteit van een bepaalde procedure, maar ze zullen deze voorbeelden niet wijzigen om extra functionaliteit te bieden of procedures te maken die voldoen aan uw specifieke vereisten.
Opmerking Voordat u deze hotfix installeert, controleert u of alle Microsoft Navision-clientgebruikers zijn afgemeld bij het systeem. Dit geldt ook voor gebruikers van Microsoft Navision Application Services (NAS). U moet de enige clientgebruiker zijn die is aangemeld wanneer u deze hotfix implementeert.
Als u deze hotfix wilt implementeren, moet u een ontwikkelaarslicentie hebben.
We raden u aan om aan het gebruikersaccount in het venster Windows-aanmeldingen of in het venster Databaseaanmeldingen de rol-id 'SUPER' toe te wijzen. Als de rol-id 'SUPER' niet kan worden toegewezen aan het gebruikersaccount, moet u controleren of het gebruikersaccount de volgende machtigingen heeft:
- De machtiging Wijzigen voor het object dat u gaat wijzigen.
- De machtiging Uitvoeren voor het object Systeemobject-id 5210 en voor het object Systeemobject-id 9015.
Opmerking U hoeft geen rechten te hebben voor de gegevensarchieven, tenzij u gegevensherstel moet uitvoeren.
Codewijzigingen
Opmerking Test altijd codecorrecties in een beheerde omgeving voordat u de correcties toepast op uw productiecomputers.
Voer de volgende stappen uit om dit probleem op te lossen:
Wijzig de code in de Elementen in de SAF-T PT XMLPort (13301) als volgt:
Bestaande code
... { [{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 ...Vervangende code
... { [{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 ...Wijzig de code in de functie SetData in de SAF-T PT XMLPort (13301) als volgt:
Bestaande code
... 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); ...Vervangende code
... 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); ...Wijzig de code in de documentatie in de SAF-T PT XMLPort (13301) als volgt:
Bestaande code
... 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. ...Vervangende code
... 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. ...
Vereisten
U moet een van de volgende producten hebben geïnstalleerd om deze hotfix toe te passen:
- De Portugese versie van Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
- De Portugese versie van Microsoft Dynamics NAV 2009 R2
- De Portugese versie van Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)
Verwijderingsgegevens
U kunt deze hotfix niet verwijderen.
Status
Microsoft heeft bevestigd dat dit een probleem is bij de Microsoft-producten die worden vermeld in de sectie Van toepassing op.
Meer informatie
VSTF DynamicsNAV SE: 263721; 263722
Opmerking Dit is een artikel 'FAST PUBLISH' dat rechtstreeks vanuit de microsoft-ondersteuningsorganisatie is gemaakt. De hierin opgenomen informatie wordt als zodanig verstrekt als reactie op nieuwe problemen. Als gevolg van de snelheid waarmee het beschikbaar wordt gesteld, kunnen de materialen typografische fouten bevatten en te allen tijde zonder voorafgaande kennisgeving worden herzien. Zie Gebruiksvoorwaarden voor andere overwegingen.