Ten artykuł dotyczy systemu Microsoft Dynamics NAV dla ustawień regionalnych języka włoski (it).
Objawy
Załóżmy, zainstaluj poprawkę 2274594 We włoskiej wersji systemu Microsoft Dynamics NAV 2009 R2 i z dodatkiem Service Pack 1 (SP1) dla systemu Microsoft Dynamics NAV 2009. Po uruchomieniu raportu księgi amortyzacji (12119), raport nie drukować sumy koniec, związanych z poprzedniego roku.
Aby uzyskać więcej informacji dotyczących poprawki 2274594 kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:2274594 wartość księgowa jest niepoprawna, podczas drukowania raportu księgi amortyzacji (12119) w wersji włoskiej dla systemu Microsoft Dynamics NAV 2009
Rozwiązanie
Informacje o poprawce
Obsługiwana poprawka jest obecnie udostępniana przez firmę Microsoft. Jednak to jest przeznaczona tylko do usunięcia problemu opisanego w tym artykule. Zastosuj ją tylko w systemach, w których występuje ten problem. Ta poprawka może być wciąż w fazie testowania. Jeśli dany system nie jest poważnie narażony na ten problem, firma Microsoft zaleca, aby poczekać na następny dodatek service pack dla systemu Microsoft Dynamics NAV 2009 lub następną wersję systemu Microsoft Dynamics NAV, zawierający tę poprawkę.
Uwaga W wyjątkowych przypadkach opłaty, telefonujący do pomocy technicznej mogą zostać anulowane, jeśli pomocy technicznej dla systemu Microsoft Dynamics i produktów powiązanych Określa, że określonej aktualizacji, można rozwiązać swój problem. Koszty obsługi zwykłych zastosuje się do dodatkowych pytań i problemów, których nie można rozwiązać przy użyciu określonej aktualizacji.
Informacje dotyczące instalacji
Firma Microsoft podaje przykłady programowania wyłącznie, bez jakichkolwiek gwarancji wyrażonych wprost lub domyślnie. To obejmuje, ale nie jest ograniczona, ustawowej rękojmi co do przydatności handlowej lub przydatności do określonego celu. W tym artykule założono, że użytkownik zna demonstrowany język programowania oraz narzędzia, które są używane do tworzenia i debugowania procedur. Wykwalifikowani pracownicy pomocy technicznej firmy Microsoft mogą pomóc w wyjaśnieniu, jak działa określona procedura, ale nie będą modyfikować tych przykładów ani dodawać funkcjonalności i konstruować procedur w celu zaspokojenia określonych potrzeb użytkownika.
Uwaga Przed zainstalowaniem tej poprawki należy zweryfikować, że wszyscy użytkownicy klienta Microsoft Navision są wylogowani systemu. Dotyczy to również użytkowników klienta Microsoft Navision Application Services (NAS). Powinny być użytkownika klienta, który jest zalogowany w momencie wdrożyć tę poprawkę. Aby wdrożyć tę poprawkę, musi mieć licencję deweloperską. Firma Microsoft zaleca, aby do konta użytkownika w oknie identyfikatorów logowania systemu Windows lub w oknie identyfikatorów logowania bazy danych być przypisany identyfikator roli "SUPER". Jeśli konto użytkownika nie można przypisać Identyfikatora roli "SUPER", należy sprawdzić, czy konto użytkownika ma następujące uprawnienia:-
Uprawnienie Modyfikacja dla obiektu, który będzie zmieniany.
-
Uprawnienie Execute obiektu 5210 identyfikator obiektu systemu i dla obiektu 9015 identyfikator obiektu systemu .
Uwaga Nie trzeba mieć prawa do magazynów danych, chyba że konieczne jest przeprowadzenie naprawy danych.
Zmiany kodu
Uwaga Zawsze test poprawki kodu w kontrolowanym środowisku przed zastosowaniem poprawki na komputerach produkcyjnych.
Aby rozwiązać ten problem, wykonaj następujące kroki:-
Zmień kod w 1 numer elementu danych w raporcie księgi amortyzacji (12119) w następujący sposób:
Istniejący kod 1... FASource := Text008;
IF NOT FADeprBook.GET("No.",DeprBookCode) THEN CurrReport.SKIP; // Delete the following lines. IF SkipRecord THEN CurrReport.SKIP; // End of the lines. IF "FA Posting Group" <> FADeprBook."FA Posting Group" THEN ERROR(Text007,FIELDCAPTION("FA Posting Group"),"No."); ...Kod zastępczy 1
... FASource := Text008;
IF NOT FADeprBook.GET("No.",DeprBookCode) THEN CurrReport.SKIP; // Add the following lines. FixedAsset.COPY("Fixed Asset"); IF SkipRecord THEN BEGIN IF FixedAsset.NEXT = 0 THEN CreateTotals; CurrReport.SKIP; END; // End of the lines. IF "FA Posting Group" <> FADeprBook."FA Posting Group" THEN ERROR(Text007,FIELDCAPTION("FA Posting Group"),"No."); ...Istniejący kod 2
... FillTempFALedgEntry;
UpdateTotals; CreateGroupTotals; // Delete the following lines. CreateTotals; TotalStartingAccumulated := TotalStartAmounts[2] + TotalStartAmounts[5] + TotalStartAmounts[6]; TotalAntAccDepreciation := TotalNetChangeAmounts[5] + TotalNetChangeAmounts[6]; IF TotalEndingAmounts[1]+TotalEndingAmounts[3]+TotalEndingAmounts[4] = 0 THEN BEGIN TotalBasicDepreciationPerc := 0; TotalAntAccDepreciationPerc := 0 END ELSE BEGIN TotalBasicDepreciationPerc := ABS(ROUND((((TotalNetChangeAmounts[2] + ReclassDeprAmount) / // IT0001 (TotalEndingAmounts[1] + TotalEndingAmounts[3] + TotalEndingAmounts[4])) * 100),0.01)); TotalAntAccDepreciationPerc := ABS(ROUND(((TotalAntAccDepreciation / TotalEndingAmounts[1] + TotalEndingAmounts[3] + TotalEndingAmounts[4]) * 100),0.01)); END; // End of the lines. END; ReqFilterFields=No.,FA Class Code,FA Subclass Code,Budgeted Asset; ...Kod zastępczy 2
... FillTempFALedgEntry;
UpdateTotals; CreateGroupTotals; // Add the following lines. IF FixedAsset.NEXT = 0 THEN CreateTotals; // End of the lines. END; ReqFilterFields=No.,FA Class Code,FA Subclass Code,Budgeted Asset; ... -
Zmień kod w sekcji 1 numer elementu danych w raporcie księgi amortyzacji (12119) w następujący sposób:
Istniejący kod 1... CONTROLS
{ { 169 ;TextBox ;24450;0 ;1650 ;423 ;FontBold=Yes; // Delete the following line. SourceExpr=BookValueAtEndingDate; // End of the line. AutoFormatType=1; DataSetFieldName=BookValueAtEndingDate_Control169 } { 1130064;Label ;0 ;0 ;2250 ;423 ;HorzAlign=Left; ...Kod zastępczy 1
... CONTROLS
{ { 169 ;TextBox ;24450;0 ;1650 ;423 ;FontBold=Yes; // Add the following line. SourceExpr=EndTotalBookValueAtEndingDate; // End of the line. AutoFormatType=1; DataSetFieldName=BookValueAtEndingDate_Control169 } { 1130064;Label ;0 ;0 ;2250 ;423 ;HorzAlign=Left; ...Istniejący kod 2
...TotalNetChangeAmounts_3__TotalNetChangeAmounts_4_ }
{ 1130077;TextBox ;5850 ;0 ;1800 ;423 ;SourceExpr=TotalDisposalAmounts[1]+TotalDisposalAmounts[3]+TotalDisposalAmounts[4]; DataSetFieldName=TotalDisposalAmounts_1__TotalDisposalAmounts_3__TotalDisposalAmounts_4_ } // Delete the following line. { 1130078;TextBox ;7650 ;0 ;1800 ;423 ;SourceExpr=TotalEndingAmounts[1]+TotalEndingAmounts[3]+TotalEndingAmounts[4]; // End of the line. DataSetFieldName=TotalEndingAmounts_1__TotalEndingAmounts_3__TotalEndingAmounts_4__Control1130078 } { 1130079;TextBox ;9450 ;0 ;1500 ;423 ;SourceExpr=TotalStartingAccumulated; DataSetFieldName=TotalStartingAccumulated } ...Kod zastępczy 2
... DataSetFieldName=TotalNetChangeAmounts_1__TotalNetChangeAmounts_3__TotalNetChangeAmounts_4_ }
{ 1130077;TextBox ;5850 ;0 ;1800 ;423 ;SourceExpr=TotalDisposalAmounts[1]+TotalDisposalAmounts[3]+TotalDisposalAmounts[4]; DataSetFieldName=TotalDisposalAmounts_1__TotalDisposalAmounts_3__TotalDisposalAmounts_4_ } // Add the following line. { 1130078;TextBox ;7650 ;0 ;1800 ;423 ;SourceExpr=EndTotalEndingAmounts[1]+EndTotalEndingAmounts[3]+EndTotalEndingAmounts[4]; // End of the line. DataSetFieldName=TotalEndingAmounts_1__TotalEndingAmounts_3__TotalEndingAmounts_4__Control1130078 } { 1130079;TextBox ;9450 ;0 ;1500 ;423 ;SourceExpr=TotalStartingAccumulated; DataSetFieldName=TotalStartingAccumulated } ...Istniejący kod 3
... DataSetFieldName=TotalStartingAccumulated }
{ 1130081;TextBox ;13950;0 ;1500 ;423 ;SourceExpr=ABS(TotalNetChangeAmounts[2]); DataSetFieldName=ABS_TotalNetChangeAmounts_2__ } // Delete the following line. { 1130083;TextBox ;22950;0 ;1500 ;423 ;SourceExpr=ABS(TotalEndingAmounts[2]+TotalEndingAmounts[5]+TotalEndingAmounts[6]); // End of the line. DataSetFieldName=ABS_TotalEndingAmounts_2__TotalEndingAmounts_5__TotalEndingAmounts_6___Control1130083 } { 1130090;TextBox ;21450;0 ;1500 ;423 ;SourceExpr=ABS(TotalNetChangeAmounts[2]+TotalAntAccDepreciation); DataSetFieldName=ABS_TotalNetChangeAmounts_2__TotalAntAccDepreciation_ } ...Kod zastępczy 3
... DataSetFieldName=TotalStartingAccumulated }
{ 1130081;TextBox ;13950;0 ;1500 ;423 ;SourceExpr=ABS(TotalNetChangeAmounts[2]); DataSetFieldName=ABS_TotalNetChangeAmounts_2__ } // Add the following line. { 1130083;TextBox ;22950;0 ;1500 ;423 ;SourceExpr=ABS(EndTotalEndingAmounts[2]+EndTotalEndingAmounts[5]+EndTotalEndingAmounts[6]); // End of the line. DataSetFieldName=ABS_TotalEndingAmounts_2__TotalEndingAmounts_5__TotalEndingAmounts_6___Control1130083 } { 1130090;TextBox ;21450;0 ;1500 ;423 ;SourceExpr=ABS(TotalNetChangeAmounts[2]+TotalAntAccDepreciation); DataSetFieldName=ABS_TotalNetChangeAmounts_2__TotalAntAccDepreciation_ } ... -
Dodaj następujące zmienne globalne w raporcie księgi amortyzacji (12119):
-
FixedAsset@1130040: Rekord 5600
-
EndTotalEndingAmounts@1130041: Decimal [7] z tablicy
-
EndTotalBookValueAtEndingDate@1130042: dziesiętny
-
-
Zmień kod w funkcji UpdateTotals w raporcie księgi amortyzacji (12119) w następujący sposób:
Istniejący kod 1... GroupStartAmounts[J] := 0;
GroupNetChangeAmounts[J] := 0; GroupDisposalAmounts[J] := 0; // Delete the following lines. TotalStartAmounts[J] := 0; TotalNetChangeAmounts[J] := 0; TotalDisposalAmounts[J] := 0; TotalReclassDeprAmount := ReclassDeprAmount; // End of the lines. END; // IT0001.end FOR J := 1 TO NumberOfTypes DO BEGIN ...Kod zastępczy 1
... GroupStartAmounts[J] := 0;
GroupNetChangeAmounts[J] := 0; GroupDisposalAmounts[J] := 0; END; // IT0001.end FOR J := 1 TO NumberOfTypes DO BEGIN ...Istniejący kod 2
... TotalStartAmounts[J] := TotalStartAmounts[J] + StartAmounts[J];
TotalNetChangeAmounts[J] := TotalNetChangeAmounts[J] + NetChangeAmounts[J]; TotalDisposalAmounts[J] := TotalDisposalAmounts[J] + DisposalAmounts[J]; END; END; ...Kod zastępczy 2
... TotalStartAmounts[J] := TotalStartAmounts[J] + StartAmounts[J];
TotalNetChangeAmounts[J] := TotalNetChangeAmounts[J] + NetChangeAmounts[J]; TotalDisposalAmounts[J] := TotalDisposalAmounts[J] + DisposalAmounts[J]; // Add the following lines. IF J = 2 THEN TotalReclassDeprAmount := TotalReclassDeprAmount + ReclassDeprAmount; // End of the lines. END; END; ... -
Zmień kod w funkcji CreateGroupTotals w raporcie księgi amortyzacji (12119) w następujący sposób:
Istniejący kod 1... LOCAL PROCEDURE CreateGroupTotals@1130114();
BEGIN BookValueAtEndingDate := 0; BookValueAtStartingDate := 0; FOR J := 1 TO NumberOfTypes DO BEGIN ...Kod zastępczy 1
... LOCAL PROCEDURE CreateGroupTotals@1130114();
BEGIN BookValueAtEndingDate := 0; BookValueAtStartingDate := 0; FOR J := 1 TO NumberOfTypes DO BEGIN ...Istniejący kod 2
... BookValueAtStartingDate := 0;
FOR J := 1 TO NumberOfTypes DO BEGIN TotalEndingAmounts[J] := GroupStartAmounts[J] + GroupNetChangeAmounts[J] + GroupDisposalAmounts[J]; BookValueAtEndingDate := BookValueAtEndingDate + TotalEndingAmounts[J]; BookValueAtStartingDate := BookValueAtStartingDate + GroupStartAmounts[J]; ...Kod zastępczy 2
... BookValueAtStartingDate := 0;
FOR J := 1 TO NumberOfTypes DO BEGIN TotalEndingAmounts[J] := GroupStartAmounts[J] + GroupNetChangeAmounts[J] + GroupDisposalAmounts[J]; // Add the following lines. IF J = 2 THEN TotalEndingAmounts[J] += ReclassDeprAmount; // End of the lines. BookValueAtEndingDate := BookValueAtEndingDate + TotalEndingAmounts[J]; BookValueAtStartingDate := BookValueAtStartingDate + GroupStartAmounts[J]; ...Istniejący kod 3
... BookValueAtEndingDate := BookValueAtEndingDate + TotalEndingAmounts[J];
BookValueAtStartingDate := BookValueAtStartingDate + GroupStartAmounts[J]; // Delete the following lines. IF J = 2 THEN TotalEndingAmounts[J] += ReclassDeprAmount; // End of the lines. END; END; ...Kod zastępczy 3
... BookValueAtEndingDate := BookValueAtEndingDate + TotalEndingAmounts[J];
BookValueAtStartingDate := BookValueAtStartingDate + GroupStartAmounts[J]; END; END; ... -
Zmień kod w funkcji CreateTotals w raporcie księgi amortyzacji (12119) w następujący sposób:
Istniejący kod 1... LOCAL PROCEDURE CreateTotals@1130117();
BEGIN // Delete the following lines. BookValueAtEndingDate := 0; BookValueAtStartingDate := 0; FOR J := 1 TO NumberOfTypes DO BEGIN TotalEndingAmounts[J] := TotalStartAmounts[J] + TotalNetChangeAmounts[J] + TotalDisposalAmounts[J]; // End of the lines. // IT0001.begin IF J = 2 THEN ...Kod zastępczy 1
... LOCAL PROCEDURE CreateTotals@1130117();
BEGIN // Add the following lines. FOR J := 1 TO NumberOfTypes DO BEGIN EndTotalEndingAmounts[J] := TotalStartAmounts[J] + TotalNetChangeAmounts[J] + TotalDisposalAmounts[J]; // End of the lines. // IT0001.begin IF J = 2 THEN ...Istniejący kod 2
... // IT0001.begin
IF J = 2 THEN // Delete the following lines. TotalEndingAmounts[J] += ReclassDeprAmount; // IT0001.end BookValueAtEndingDate := BookValueAtEndingDate + TotalEndingAmounts[J]; BookValueAtStartingDate := BookValueAtStartingDate + TotalStartAmounts[J]; // End of the lines. END; END; ...Kod zastępczy 2
... // IT0001.begin
IF J = 2 THEN // Add the following lines. EndTotalEndingAmounts[J] := EndTotalEndingAmounts[J] + TotalReclassDeprAmount; // IT0001.end EndTotalBookValueAtEndingDate := EndTotalBookValueAtEndingDate + EndTotalEndingAmounts[J]; END; TotalStartingAccumulated := TotalStartAmounts[2] + TotalStartAmounts[5] + TotalStartAmounts[6]; TotalAntAccDepreciation := TotalNetChangeAmounts[5] + TotalNetChangeAmounts[6]; IF EndTotalEndingAmounts[1]+EndTotalEndingAmounts[3]+EndTotalEndingAmounts[4] = 0 THEN BEGIN TotalBasicDepreciationPerc := 0; TotalAntAccDepreciationPerc := 0 END ELSE BEGIN TotalBasicDepreciationPerc := ABS(ROUND((((TotalNetChangeAmounts[2] + TotalReclassDeprAmount) / // IT0001 (EndTotalEndingAmounts[1] + EndTotalEndingAmounts[3] + EndTotalEndingAmounts[4])) * 100),0.01)); TotalAntAccDepreciationPerc := ABS(ROUND(((TotalAntAccDepreciation / EndTotalEndingAmounts[1] + EndTotalEndingAmounts[3] + EndTotalEndingAmounts[4]) * 100),0.01)); // End of the lines. END; END; ... -
Zmień kod w raporcie księgi amortyzacji (12119) w następujący sposób:
Istniejący kod 1... <PaddingTop>2pt</PaddingTop>
<VerticalAlign>Middle</VerticalAlign> </Style> // Delete the following line. <Value>=LAST(Fields!TotalEndingAmounts_1__TotalEndingAmounts_3__TotalEndingAmounts_4_.Value)</Value> // End of the line. <ZIndex>11</ZIndex> </Textbox> </ReportItems> ...Kod zastępczy 1
... <PaddingTop>2pt</PaddingTop>
<VerticalAlign>Middle</VerticalAlign> </Style> // Add the following line. <Value>=LAST(Fields!TotalEndingAmounts_1__TotalEndingAmounts_3__TotalEndingAmounts_4__Control1130078.Value)</Value> // End of the line. <ZIndex>11</ZIndex> </Textbox> </ReportItems> ...Istniejący kod 2
... <PaddingTop>2pt</PaddingTop>
<VerticalAlign>Middle</VerticalAlign> </Style> // Delete the following line. <Value>=LAST(Fields!ABS_TotalEndingAmounts_2__TotalEndingAmounts_5__TotalEndingAmounts_6__.Value)</Value> // End of the line. <ZIndex>2</ZIndex> </Textbox> </ReportItems> ...Kod zastępczy 2
... <PaddingTop>2pt</PaddingTop>
<VerticalAlign>Middle</VerticalAlign> </Style> // Add the following line. <Value>=LAST(Fields!ABS_TotalEndingAmounts_2__TotalEndingAmounts_5__TotalEndingAmounts_6___Control1130083.Value)</Value> // End of the line. <ZIndex>2</ZIndex> </Textbox> </ReportItems> ...Istniejący kod 3
... <PaddingTop>2pt</PaddingTop>
<VerticalAlign>Middle</VerticalAlign> </Style> // Delete the following line. <Value>=LAST(Fields!BookValueAtEndingDate.Value)</Value> // End of the line. <ZIndex>1</ZIndex> </Textbox> </ReportItems> ...Kod zastępczy 3
... <PaddingTop>2pt</PaddingTop>
<VerticalAlign>Middle</VerticalAlign> </Style> // Add the following line. <Value>=LAST(Fields!BookValueAtEndingDate_Control169.Value)</Value> // End of the line. <ZIndex>1</ZIndex> </Textbox> </ReportItems> ...Istniejący kod 4
... <Field Name="ABS_ReclassDeprAmount__Control1130212Format">
<DataField>ABS_ReclassDeprAmount__Control1130212Format</DataField> </Field> <Field Name="BookValueAtEndingDate_Control169Format"> <DataField>BookValueAtEndingDate_Control169Format</DataField> </Field> ...Kod zastępczy 4
... <Field Name="ABS_ReclassDeprAmount__Control1130212Format">
<DataField>ABS_ReclassDeprAmount__Control1130212Format</DataField> </Field> // Add the following lines. <Field Name="BookValueAtEndingDate_Control169"> <DataField>BookValueAtEndingDate_Control169</DataField> </Field> // End of the lines. <Field Name="BookValueAtEndingDate_Control169Format"> <DataField>BookValueAtEndingDate_Control169Format</DataField> </Field> ...Istniejący kod 5
... <Field Name="TotalDisposalAmounts_1__TotalDisposalAmounts_3__TotalDisposalAmounts_4_Format">
<DataField>TotalDisposalAmounts_1__TotalDisposalAmounts_3__TotalDisposalAmounts_4_Format</DataField> </Field> <Field Name="TotalEndingAmounts_1__TotalEndingAmounts_3__TotalEndingAmounts_4__Control1130078Format"> <DataField>TotalEndingAmounts_1__TotalEndingAmounts_3__TotalEndingAmounts_4__Control1130078Format</DataField> </Field> ...Kod zastępczy 5
... <Field Name="TotalDisposalAmounts_1__TotalDisposalAmounts_3__TotalDisposalAmounts_4_Format">
<DataField>TotalDisposalAmounts_1__TotalDisposalAmounts_3__TotalDisposalAmounts_4_Format</DataField> </Field> // Add the following lines. <Field Name="TotalEndingAmounts_1__TotalEndingAmounts_3__TotalEndingAmounts_4__Control1130078"> <DataField>TotalEndingAmounts_1__TotalEndingAmounts_3__TotalEndingAmounts_4__Control1130078</DataField> </Field> // End of the lines. <Field Name="TotalEndingAmounts_1__TotalEndingAmounts_3__TotalEndingAmounts_4__Control1130078Format"> <DataField>TotalEndingAmounts_1__TotalEndingAmounts_3__TotalEndingAmounts_4__Control1130078Format</DataField> </Field> ...Istniejący kod 6
... <Field Name="ABS_TotalNetChangeAmounts_2__Format">
<DataField>ABS_TotalNetChangeAmounts_2__Format</DataField> </Field> <Field Name="ABS_TotalEndingAmounts_2__TotalEndingAmounts_5__TotalEndingAmounts_6___Control1130083Format"> <DataField>ABS_TotalEndingAmounts_2__TotalEndingAmounts_5__TotalEndingAmounts_6___Control1130083Format</DataField> </Field> ...Kod zastępczy 6
... <Field Name="ABS_TotalNetChangeAmounts_2__Format">
<DataField>ABS_TotalNetChangeAmounts_2__Format</DataField> </Field> // Add the following lines. <Field Name="ABS_TotalEndingAmounts_2__TotalEndingAmounts_5__TotalEndingAmounts_6___Control1130083"> <DataField>ABS_TotalEndingAmounts_2__TotalEndingAmounts_5__TotalEndingAmounts_6___Control1130083</DataField> </Field> // End of the lines. <Field Name="ABS_TotalEndingAmounts_2__TotalEndingAmounts_5__TotalEndingAmounts_6___Control1130083Format"> <DataField>ABS_TotalEndingAmounts_2__TotalEndingAmounts_5__TotalEndingAmounts_6___Control1130083Format</DataField> </Field> ...
Wymagania wstępne
Musi mieć jedną z następujących produktów, w celu zastosowania tej poprawki:
-
W wersji włoskiej dla systemu Microsoft Dynamics NAV 2009 R2
-
Włoskiej wersji dodatku Service Pack 1 dla systemu Microsoft Dynamics NAV 2009
Informacje dotyczące usuwania
Nie można usunąć tej poprawki.
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.
Uwaga Jest to artykuł " szybkiej publikacji" tworzony bezpośrednio przez organizację pomocy technicznej firmy Microsoft. Informacje zawarte w niniejszym dokumencie są dostarczane jako odpowiedź na pojawiające się problemy. W wyniku przyspieszonego udostępnienia, materiały te mogą zawierać błędy typograficzne i mogą być zmieniane w dowolnym czasie bez uprzedzenia. Zobacz Warunki użytkowania w celu uzyskania innych informacji.