Sign in with Microsoft
Sign in or create an account.
Hello,
Select a different account.
You have multiple accounts
Choose the account you want to sign in with.

Symptoms

After the release of XBRL (Germany - EU Sales List - New Method for Submission as of 01.01.2013 - Microsoft Dynamics NAV 2009 SP1), when you click Lookup in the request form of report 505, the taxonomy lines are deleted unexpectedly. This problem occurs in the following products:

  • The German version of Microsoft Dynamics NAV 2009 R2

  • The German version of Microsoft Dynamics NAV 2009 Service Pack 1

Resolution

Hotfix information

A supported hotfix is now available from Microsoft. However, it is only intended to correct the problem that is described in this article. Apply it only to systems that are experiencing this specific problem. This hotfix may receive additional testing. Therefore, if you are not severely affected by this problem, we recommend that you wait for the next Microsoft Dynamics NAV 2009 service pack or the next Microsoft Dynamics NAV version that contains this hotfix.

Note In special cases, charges that are ordinarily incurred for support calls may be canceled if a Technical Support Professional for Microsoft Dynamics and related products determines that a specific update will resolve your problem. The usual support costs will apply to additional support questions and issues that do not qualify for the specific update in question.


Installation information

Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure. However, they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements.

Note Before you install this hotfix, verify that all Microsoft Navision client users are logged off the system. This includes Microsoft Navision Application Services (NAS) client users. You should be the only client user who is logged on when you implement this hotfix.

To implement this hotfix, you must have a developer license.

We recommend that the user account in the Windows Logins window or in the Database Logins window be assigned the "SUPER" role ID. If the user account cannot be assigned the "SUPER" role ID, you must verify that the user account has the following permissions:

  • The Modify permission for the object that you will be changing.

  • The Execute permission for the System Object ID 5210 object and for the System Object ID 9015 object.



Note You do not have to have rights to the data stores unless you have to perform data repair.

Code changes

Note Always test code fixes in a controlled environment before you apply the fixes to your production computers.
To resolve this problem, change the code in the VAT Posting Setup table (325). To do this, follow these steps:

  1. Change the code of Properties as follows:
    Existing code 1

    ...
    Width=16500;

    // Delete the following line.
    Height=7370;

    SaveValues=Yes;
    ...

    Replacement code 1

    ...
    Width=16500;

    // Add the following line.
    Height=8140;

    SaveValues=Yes;
    ...

    Existing code 2

    ...
    IF NOT XBRLTaxonomy.GET(CurrentTaxonomy) THEN

    // Delete the following line.
    IF NOT XBRLTaxonomy.FIND('-') THEN

    XBRLTaxonomy.INIT;
    ...

    Replacement code 2

    ...
    IF NOT XBRLTaxonomy.GET(CurrentTaxonomy) THEN

    // Add the following line.
    IF NOT XBRLTaxonomy.FINDFIRST THEN

    XBRLTaxonomy.INIT;
    ...

    Existing code 3

    ...
    XBRLTaxonomyLabel.SETRANGE("XML Language Identifier",CurrentLang);

    // Delete the following line.
    IF XBRLTaxonomyLabel.FIND('-') THEN

    CurrentLang := XBRLTaxonomyLabel."XML Language Identifier"
    ...

    Replacement code 3

    ...
    XBRLTaxonomyLabel.SETRANGE("XML Language Identifier",CurrentLang);

    // Add the following line.
    IF XBRLTaxonomyLabel.FINDFIRST THEN

    CurrentLang := XBRLTaxonomyLabel."XML Language Identifier"
    ...

    Existing code 4

    ...
    XBRLTaxonomyLabel.SETRANGE("XML Language Identifier");

    // Delete the following line.
    IF XBRLTaxonomyLabel.FIND('-') THEN

    CurrentLang := XBRLTaxonomyLabel."XML Language Identifier"
    ...

    Replacement code 4

    ...
    XBRLTaxonomyLabel.SETRANGE("XML Language Identifier");

    // Add the following line.
    IF XBRLTaxonomyLabel.FINDFIRST THEN

    CurrentLang := XBRLTaxonomyLabel."XML Language Identifier"
    ...

    Existing code 5

    ...
    // Delete the following line.
    SETRANGE("Label Language Filter",CurrentLang);
    ...

    Replacement code 5

    ...
    // Add the following line.
    InitTempTable(ISSERVICETIER);
    ...

    Existing code 6

    ...
    // Delete the following lines.
    IF ISSERVICETIER THEN
    ExpandAll
    ELSE
    InitTempTable;
    // End of the lines.

    END;
    ...

    Replacement code 6

    ...
    // Add the following line.
    SetFiltersAndUpdate;

    END;
    ...

    Existing code 7

    ...
    // Delete the following lines.
    OnAfterGetRecord=VAR
    XBRLLine@1102601000 : Record 395;
    BEGIN
    IF IsExpanded(Rec) THEN
    ActualExpansionStatus := 1
    ELSE
    IF HasChildren(Rec) THEN
    ActualExpansionStatus := 0
    ELSE
    ActualExpansionStatus := 2;
    // End of the lines.
    ...

    Replacement code 7

    ...
    // Add the following lines.
    OnFindRecord=VAR
    Found@1001 : Boolean;
    BEGIN
    IF NOT FiltersApplied THEN
    SetFilters;
    FiltersApplied := TRUE;
    // End of the lines.
    ...

    Existing code 8

    ...
    // Delete the following lines.
    XBRLLine.GET("XBRL Taxonomy Name","Line No.");
    IF ("Source Type" <> XBRLLine."Source Type") OR
    ("Constant Amount" <> XBRLLine."Constant Amount") OR
    (Description <> XBRLLine.Description)
    THEN BEGIN
    XBRLLine.CALCFIELDS(Label,Information,Rollup,"G/L Map Lines",Notes,Reference);
    Rec := XBRLLine;
    MODIFY;
    END;
    // End of the lines.
    ...

    Replacement code 8

    ...
    // Add the following lines.
    TempXBRLLine.COPY(Rec);
    Found := TempXBRLLine.FIND(Which);
    Rec := TempXBRLLine;
    EXIT(Found);
    END;
    // End of the lines.
    ...

    Existing code 9

    ...
    // Delete the following lines.
    IF Label = '' THEN
    Label := Name;
    END;
    // End of the lines.
    ...

    Replacement code 9

    ...
    // Add the following lines.
    OnNextRecord=VAR
    ResultSteps@1001 : Integer;
    BEGIN
    TempXBRLLine.COPY(Rec);
    ResultSteps := TempXBRLLine.NEXT(Steps);
    Rec := TempXBRLLine;
    EXIT(ResultSteps);
    END;
    // End of the lines.
    ...

    Existing code 10

    ...
    // Delete the following lines.
    OnModifyRecord=VAR
    XBRLLine@1102601000 : Record 395;
    RecRef@1000 : RecordRef;
    xRecRef@1001 : RecordRef;
    ChangeLogMgt@1002 : Codeunit 423;
    BEGIN
    RecRef.GETTABLE(Rec);
    xRecRef.GETTABLE(xRec);
    XBRLLine.GET("XBRL Taxonomy Name","Line No.");
    XBRLLine := Rec;
    XBRLLine.MODIFY;
    Rec := XBRLLine;
    MODIFY;
    ChangeLogMgt.LogModification(RecRef,xRecRef);
    EXIT(FALSE);
    END;
    // End of the lines.
    ...

    Replacement code 10

    ...
    // Add the following lines.
    OnAfterGetRecord=BEGIN
    IF IsExpanded(Rec) THEN
    ActualExpansionStatus := 1
    ELSE
    IF HasChildren(Rec) THEN
    ActualExpansionStatus := 0
    ELSE
    ActualExpansionStatus := 2;
    // End of the lines.
    ...

    Existing code 11

    ...
    // Delete the following lines.
    }
    CONTROLS
    {
    { 1 ;TableBox ;220 ;1760 ;16060;4620 ;HorzGlue=Both;
    VertGlue=Both }
    { 35 ;PictureBox ;0 ;2530 ;550 ;3740 ;ParentControl=1;
    InColumn=Yes;
    BitmapList=47,46;
    CaptionML=ENU=Expand;
    SourceExpr=ActualExpansionStatus;
    OnPush=BEGIN
    ToggleExpandCollapse;
    END;
    }
    { 36 ;Label ;0 ;0 ;0 ;0 ;ParentControl=35;
    InColumnHeading=Yes }
    { 28 ;TextBox ;0 ;3410 ;1700 ;440 ;Visible=No;
    ParentControl=1;
    InColumn=Yes;
    SourceExpr="Line No." }
    { 29 ;Label ;0 ;0 ;0 ;0 ;ParentControl=28;
    InColumnHeading=Yes }
    { 2 ;TextBox ;0 ;0 ;4400 ;0 ;HorzGlue=Both;
    ParentControl=1;
    InColumn=Yes;
    DrillDown=No;
    SourceExpr=Label;
    OnFormat=BEGIN
    IF Level > 0 THEN
    CurrForm.Label.UPDATEINDENT := Level * 220;
    // End of the lines.
    ...

    Replacement code 11

    ...
    // Add the following lines.
    IF Label = '' THEN
    Label := Name;
    END;
    // End of the lines.
    ...

    Existing code 12

    ...
    // Delete the following lines.
    IF (Level = 0) OR (ActualExpansionStatus < 2) THEN
    CurrForm.Label.UPDATEFONTBOLD := TRUE;
    END;
    }
    { 3 ;Label ;0 ;0 ;0 ;0 ;ParentControl=2;
    InColumnHeading=Yes }
    { 4 ;TextBox ;0 ;0 ;550 ;0 ;ParentControl=1;
    // End of the lines.

    InColumn=Yes;
    ...

    Replacement code 12

    ...
    // Add the following lines.
    OnAfterGetCurrRecord=VAR
    XBRLLine@1000 : Record 395;
    BEGIN
    XBRLLine.GET("XBRL Taxonomy Name","Line No.");
    IF ("Source Type" <> XBRLLine."Source Type") OR
    ("Constant Amount" <> XBRLLine."Constant Amount") OR
    (Description <> XBRLLine.Description)
    THEN BEGIN
    XBRLLine.CALCFIELDS(Label,Information,Rollup,"G/L Map Lines",Notes,Reference);
    TempXBRLLine := XBRLLine;
    TempXBRLLine.MODIFY;
    END;
    END;

    OnModifyRecord=VAR
    XBRLLine@1102601000 : Record 395;
    RecRef@1000 : RecordRef;
    xRecRef@1001 : RecordRef;
    BEGIN
    RecRef.GETTABLE(Rec);
    xRecRef.GETTABLE(TempXBRLLine);
    XBRLLine := Rec;
    XBRLLine.MODIFY;
    TempXBRLLine := XBRLLine;
    TempXBRLLine.MODIFY;
    EXIT(FALSE);
    END;

    }
    CONTROLS
    {
    { 1 ;TableBox ;220 ;2530 ;16060;4620 ;HorzGlue=Both;
    VertGlue=Both }
    { 35 ;PictureBox ;0 ;2530 ;550 ;3740 ;ParentControl=1;
    // End of the lines.

    InColumn=Yes;

    ...
  2. Change the code of Controls as follows:
    Existing code 1

    ...
    InColumn=Yes;

    // Delete the following lines.
    SourceExpr="Source Type" }
    { 5 ;Label ;0 ;0 ;0 ;0 ;ParentControl=4;
    // End of the lines.

    InColumnHeading=Yes }
    ...

    Replacement code 1

    ...
    InColumn=Yes;

    // Add the following lines.
    BitmapList=47,46;
    CaptionML=ENU=Expand;
    SourceExpr=ActualExpansionStatus;
    OnPush=BEGIN
    ToggleExpandCollapse;
    END;
    }
    { 36 ;Label ;0 ;0 ;0 ;0 ;ParentControl=35;
    // End of the lines.

    InColumnHeading=Yes }
    ...

    Existing code 2

    ...
    InColumnHeading=Yes }

    // Delete the following line.
    { 6 ;TextBox ;0 ;0 ;2196 ;0 ;ParentControl=1;

    InColumn=Yes;
    ...

    Replacement code 2

    ...
    InColumnHeading=Yes }

    // Add the following lines.
    { 28 ;TextBox ;0 ;3410 ;1700 ;440 ;Visible=No;
    ParentControl=1;
    // End of the lines.

    InColumn=Yes;
    ...

    Existing code 3

    ...
    InColumn=Yes;

    // Delete the following lines.
    SourceExpr="Constant Amount" }
    { 7 ;Label ;0 ;0 ;0 ;0 ;ParentControl=6;
    // End of the lines.

    InColumnHeading=Yes }
    ...

    Replacement code 3

    ...
    InColumn=Yes;

    // Add the following lines.
    SourceExpr="Line No." }
    { 29 ;Label ;0 ;0 ;0 ;0 ;ParentControl=28;
    // End of the lines.

    InColumnHeading=Yes }
    ...

    Existing code 4

    ...
    InColumnHeading=Yes }

    // Delete the following line.
    { 10 ;CheckBox ;0 ;0 ;1650 ;0 ;ParentControl=1;

    InColumn=Yes;
    ...

    Replacement code 4

    ...
    InColumnHeading=Yes }

    // Add the following lines.
    { 2 ;TextBox ;0 ;0 ;4400 ;0 ;HorzGlue=Both;
    ParentControl=1;
    // End of the lines.

    InColumn=Yes;
    ...

    Existing code 5

    ...
    InColumn=Yes;

    // Delete the following lines.
    ShowCaption=No;
    SourceExpr=Information }
    { 11 ;Label ;0 ;0 ;0 ;0 ;ParentControl=10;
    // End of the lines.

    InColumnHeading=Yes }
    ...

    Replacement code 5

    ...
    InColumn=Yes;

    // Add the following lines.
    DrillDown=No;
    SourceExpr=Label;
    OnFormat=BEGIN
    IF Level > 0 THEN
    CurrForm.Label.UPDATEINDENT := Level * 220;

    IF (Level = 0) OR (ActualExpansionStatus < 2) THEN
    CurrForm.Label.UPDATEFONTBOLD := TRUE;
    END;
    }
    { 3 ;Label ;0 ;0 ;0 ;0 ;ParentControl=2;
    // End of the lines.

    InColumnHeading=Yes }
    ...

    Existing code 6

    ...
    InColumnHeading=Yes }

    // Delete the following line.
    { 32 ;CheckBox ;10345;2750 ;1700 ;440 ;ParentControl=1;

    InColumn=Yes;

    ...

    Replacement code 6

    ...
    InColumnHeading=Yes }

    // Add the following line.
    { 4 ;TextBox ;0 ;0 ;550 ;0 ;ParentControl=1;

    InColumn=Yes;
    ...

    Existing code 7

    ...
    InColumn=Yes;

    // Delete the following lines.
    ShowCaption=No;
    SourceExpr=Reference }
    { 33 ;Label ;0 ;0 ;0 ;0 ;ParentControl=32;
    // End of the lines.

    InColumnHeading=Yes }
    ...

    Replacement code 7

    ...
    InColumn=Yes;

    // Add the following lines.
    SourceExpr="Source Type" }
    { 5 ;Label ;0 ;0 ;0 ;0 ;ParentControl=4;
    // End of the lines.

    InColumnHeading=Yes }
    ...

    Existing code 8

    ...
    InColumnHeading=Yes }

    // Delete the following line.
    { 12 ;CheckBox ;0 ;0 ;1650 ;0 ;ParentControl=1;

    InColumn=Yes;
    ...

    Replacement code 8

    ...
    InColumnHeading=Yes }

    // Add the following line.
    { 6 ;TextBox ;0 ;0 ;2196 ;0 ;ParentControl=1;

    InColumn=Yes;
    ...

    Existing code 9

    ...
    InColumn=Yes;

    // Delete the following lines.
    ShowCaption=No;
    SourceExpr=Notes }
    { 13 ;Label ;0 ;0 ;0 ;0 ;ParentControl=12;
    // End of the lines.

    InColumnHeading=Yes }
    ...

    Replacement code 9

    ...
    InColumn=Yes;

    // Add the following lines.
    SourceExpr="Constant Amount" }
    { 7 ;Label ;0 ;0 ;0 ;0 ;ParentControl=6;
    // End of the lines.

    InColumnHeading=Yes }
    ...

    Existing code 10

    ...
    InColumnHeading=Yes }

    // Delete the following line.
    { 8 ;CheckBox ;7700 ;0 ;1650 ;0 ;ParentControl=1;

    InColumn=Yes;
    ...

    Replacement code 10

    ...
    InColumnHeading=Yes }

    // Add the following line.
    { 10 ;CheckBox ;0 ;0 ;1650 ;0 ;ParentControl=1;

    InColumn=Yes;
    ...

    Existing code 11

    ...
    ShowCaption=No;

    // Delete the following lines.
    SourceExpr="G/L Map Lines" }
    { 9 ;Label ;0 ;0 ;0 ;0 ;ParentControl=8;
    // End of the lines.

    InColumnHeading=Yes }
    ...

    Replacement code 11

    ...
    ShowCaption=No;

    // Add the following lines.
    SourceExpr=Information }
    { 11 ;Label ;0 ;0 ;0 ;0 ;ParentControl=10;
    // End of the lines.

    InColumnHeading=Yes }
    ...

    Existing code 12

    ...
    InColumnHeading=Yes }

    // Delete the following lines.
    { 31 ;CheckBox ;8731 ;2970 ;1650 ;440 ;Visible=No;
    ParentControl=1;
    // End of the lines.

    InColumn=Yes;
    ...

    Replacement code 12

    ...
    InColumnHeading=Yes }

    // Add the following line.
    { 32 ;CheckBox ;10345;2750 ;1700 ;440 ;ParentControl=1;

    InColumn=Yes;

    ...

    Existing code 13

    ...
    ShowCaption=No;

    // Delete the following lines.
    SourceExpr=Rollup }
    { 37 ;Label ;0 ;0 ;0 ;0 ;ParentControl=31;
    // End of the lines.

    InColumnHeading=Yes }
    ...

    Replacement code 13

    ...
    ShowCaption=No;

    // Add the following lines.
    SourceExpr=Reference }
    { 33 ;Label ;0 ;0 ;0 ;0 ;ParentControl=32;
    // End of the lines.

    InColumnHeading=Yes }
    ...

    Existing code 14

    ...
    InColumnHeading=Yes }

    // Delete the following line.
    { 14 ;TextBox ;0 ;0 ;4400 ;0 ;ParentControl=1;

    InColumn=Yes;
    ...

    Replacement code 14

    ...
    InColumnHeading=Yes }

    // Add the following line.
    { 12 ;CheckBox ;0 ;0 ;1650 ;0 ;ParentControl=1;

    InColumn=Yes;
    ...

    Existing code 15

    ...
    InColumn=Yes;

    // Delete the following lines.
    SourceExpr=Description }
    { 15 ;Label ;0 ;0 ;0 ;0 ;ParentControl=14;
    // End of the lines.

    InColumnHeading=Yes }
    ...

    Replacement code 15

    ...
    InColumn=Yes;

    // Add the following lines.
    ShowCaption=No;
    SourceExpr=Notes }
    { 13 ;Label ;0 ;0 ;0 ;0 ;ParentControl=12;
    // End of the lines.

    InColumnHeading=Yes }
    ...

    Existing code 16

    ...
    InColumnHeading=Yes }

    // Delete the following lines.
    { 16 ;TextBox ;0 ;0 ;4400 ;0 ;Visible=No;
    ParentControl=1;
    // End of the lines.

    InColumn=Yes;
    ...

    Replacement code 16

    ...
    InColumnHeading=Yes }

    // Add the following line.
    { 8 ;CheckBox ;7700 ;0 ;1650 ;0 ;ParentControl=1;

    InColumn=Yes;
    ...

    Existing code 17

    ...
    InColumn=Yes;

    // Delete the following lines.
    SourceExpr=Name }
    { 17 ;Label ;0 ;0 ;0 ;0 ;ParentControl=16;
    // End of the lines.

    InColumnHeading=Yes }
    ...

    Replacement code 17

    ...
    InColumn=Yes;

    // Add the following lines.
    ShowCaption=No;
    SourceExpr="G/L Map Lines" }
    { 9 ;Label ;0 ;0 ;0 ;0 ;ParentControl=8;
    // End of the lines.

    InColumnHeading=Yes }
    ...

    Existing code 18

    ...
    InColumnHeading=Yes }

    // Delete the following line.
    { 18 ;CommandButton;4400 ;6600 ;2200 ;550 ;HorzGlue=Right;

    VertGlue=Bottom;
    ...

    Replacement code 18

    ...
    InColumnHeading=Yes }

    // Add the following lines.
    { 31 ;CheckBox ;8731 ;2970 ;1650 ;440 ;Visible=No;
    ParentControl=1;
    InColumn=Yes;
    ShowCaption=No;
    SourceExpr=Rollup }
    { 37 ;Label ;0 ;0 ;0 ;0 ;ParentControl=31;
    InColumnHeading=Yes }
    { 14 ;TextBox ;0 ;0 ;4400 ;0 ;ParentControl=1;
    InColumn=Yes;
    SourceExpr=Description }
    { 15 ;Label ;0 ;0 ;0 ;0 ;ParentControl=14;
    InColumnHeading=Yes }
    { 16 ;TextBox ;0 ;0 ;4400 ;0 ;Visible=No;
    ParentControl=1;
    InColumn=Yes;
    SourceExpr=Name }
    { 17 ;Label ;0 ;0 ;0 ;0 ;ParentControl=16;
    InColumnHeading=Yes }
    { 18 ;CommandButton;4400 ;7370 ;2200 ;550 ;HorzGlue=Right;
    // End of the lines.

    VertGlue=Bottom;
    ...

    Existing code 19

    ...
    InvalidActionAppearance=Hide }

    // Delete the following line.
    { 19 ;CommandButton;6820 ;6600 ;2200 ;550 ;HorzGlue=Right;

    VertGlue=Bottom;
    ...

    Replacement code 19

    ...
    InvalidActionAppearance=Hide }

    // Add the following line.
    { 19 ;CommandButton;6820 ;7370 ;2200 ;550 ;HorzGlue=Right;

    VertGlue=Bottom;
    ...

    Existing code 20

    ...
    InvalidActionAppearance=Hide }

    // Delete the following line.
    { 20 ;CommandButton;14080;6600 ;2200 ;550 ;HorzGlue=Right;

    VertGlue=Bottom;
    ...

    Replacement code 20

    ...
    InvalidActionAppearance=Hide }

    // Add the following line.
    { 20 ;CommandButton;14080;7370 ;2200 ;550 ;HorzGlue=Right;

    VertGlue=Bottom;
    ...

    Existing code 21

    ...
    PushAction=FormHelp }

    // Delete the following line.
    { 21 ;MenuButton ;9240 ;6600 ;2200 ;550 ;HorzGlue=Right;

    VertGlue=Bottom;
    ...

    Replacement code 21

    ...
    PushAction=FormHelp }

    // Add the following line.
    { 21 ;MenuButton ;9240 ;7370 ;2200 ;550 ;HorzGlue=Right;

    VertGlue=Bottom;
    ...

    Existing code 22

    ...
    // Delete the following line.
    { 38 ;TabControl ;220 ;220 ;16060;1430 ;HorzGlue=Both }

    { 39 ;TextBox ;3850 ;990 ;2750 ;440 ;ParentControl=38;
    ...

    Replacement code 22

    ...
    // Add the following line.
    { 38 ;TabControl ;220 ;220 ;16060;2090 ;HorzGlue=Both }

    { 39 ;TextBox ;3850 ;990 ;2750 ;440 ;ParentControl=38;
    ...

    Existing code 23

    ...
    OnAfterValidate=BEGIN

    // Delete the following lines.
    FILTERGROUP(2);
    SETRANGE("XBRL Taxonomy Name",CurrentTaxonomy);
    FILTERGROUP(0);
    SETRANGE("XBRL Taxonomy Name");
    InitTempTable;
    CurrForm.UPDATE(FALSE);
    // End of the lines.

    END;
    ...

    Replacement code 23

    ...
    OnAfterValidate=BEGIN

    // Add the following lines.
    InitTempTable(FALSE);
    SetFiltersAndUpdate;
    // End of the lines.

    END;
    ...

    Existing code 24

    ...
    IF CurrentLang <> '' THEN

    // Delete the following lines.
    IF NOT XBRLTaxonomyLabel.FIND('-') THEN
    ERROR(Text001,CurrentLang);
    SETRANGE("Label Language Filter",CurrentLang);
    // End of the lines.

    END;
    ...

    Replacement code 24

    ...
    IF CurrentLang <> '' THEN

    // Add the following lines.
    IF XBRLTaxonomyLabel.ISEMPTY THEN
    ERROR(LangLabelsNotDefinedErr,CurrentLang);
    // End of the lines.

    END;
    ...

    Existing code 25

    ...
    XBRLTaxonomyLabel.SETRANGE("XBRL Taxonomy Name",CurrentTaxonomy);

    // Delete the following lines.
    IF NOT XBRLTaxonomyLabel.FIND('-') THEN
    ERROR(Text002,"XBRL Taxonomy Name");
    // End of the lines.

    XBRLTaxonomyLabel.SETRANGE(
    ...

    Replacement code 25

    ...
    XBRLTaxonomyLabel.SETRANGE("XBRL Taxonomy Name",CurrentTaxonomy);

    // Add the following lines.
    IF NOT XBRLTaxonomyLabel.FINDFIRST THEN
    ERROR(TaxonomyLabelsNotDefinedErr,"XBRL Taxonomy Name");
    // End of the lines.

    XBRLTaxonomyLabel.SETRANGE(
    ...

    Existing code 26

    ...
    EXIT(TRUE);

    // Delete the following lines.
    END ELSE
    EXIT(FALSE);
    // End of the lines.

    END;
    ...

    Replacement code 26

    ...
    EXIT(TRUE);

    // Add the following lines.
    END;

    EXIT(FALSE);
    // End of the lines.

    END;
    ...

    Existing code 27

    ...
    END;

    // Delete the following line.
    }

    { 42 ;Label ;10890;990 ;3300 ;440 ;ParentControl=41 }
    ...

    Replacement code 27

    ...
    END;

    // Add the following lines.
    OnAfterValidate=BEGIN
    SetFiltersAndUpdate;
    END;
    }
    // End of the lines.

    { 42 ;Label ;10890;990 ;3300 ;440 ;ParentControl=41 }
    ...

    Existing code 28

    ...
    { 42 ;Label ;10890;990 ;3300 ;440 ;ParentControl=41 }

    // Delete the following line.
    { 43 ;MenuButton ;11660;6600 ;2200 ;550 ;HorzGlue=Right;

    VertGlue=Bottom;
    ...

    Replacement code 28

    ...
    { 42 ;Label ;10890;990 ;3300 ;440 ;ParentControl=41 }

    // Add the following lines.
    { 49 ;CheckBox ;3850 ;1650 ;440 ;440 ;ParentControl=38;
    InPage=0;
    ShowCaption=No;
    CaptionML=ENU=Show Only Presentation;
    SourceExpr=OnlyShowPresentation;
    OnAfterValidate=BEGIN
    SetFiltersAndUpdate;
    END;
    }
    { 50 ;Label ;440 ;1650 ;3300 ;440 ;ParentControl=49 }
    { 43 ;MenuButton ;11660;7370 ;2200 ;550 ;HorzGlue=Right;
    // End of the lines.

    VertGlue=Bottom;
    ...

    Existing code 29

    ...
    OnPush=BEGIN

    // Delete the following line.
    ExpandAll;

    END;
    ...

    Replacement code 29

    ...
    OnPush=BEGIN

    // Add the following lines.
    InitTempTable(TRUE);
    SetFiltersAndUpdate;
    // End of the lines.

    END;
    ...

    Existing code 30

    ...
    OnPush=BEGIN

    // Delete the following line.
    InitTempTable;

    END;
    ...

    Replacement code 30

    ...
    OnPush=BEGIN

    // Add the following lines.
    InitTempTable(FALSE);
    SetFiltersAndUpdate;
    // End of the lines.

    END;
    ...
  3. Add the following global veriable:

    ...
    VAR

    // Add the following line.
    TempXBRLLine@1005 : TEMPORARY Record 395;

    CurrentTaxonomy@1004 : Code[20];
    ...
  4. Delete the following global variables:

    ...
    ActualExpansionStatus@1000 : Integer;

    // Delete the following lines.
    Text001@1002 : TextConst 'ENU=Labels are not defined for language %1.';
    Text002@1006 : TextConst 'ENU=There are no labels defined for %1.';
    // End of the lines.

    ...
  5. Add the following global variables:

    ...
    ActualExpansionStatus@1000 : Integer;

    // Add the following lines.
    LangLabelsNotDefinedErr@1002 : TextConst 'ENU=Labels are not defined for language %1.';
    TaxonomyLabelsNotDefinedErr@1006 : TextConst 'ENU=There are no labels defined for %1.';
    OnlyShowPresentation@1003 : Boolean;
    FiltersApplied@1007 : Boolean;
    // End of the lines.

    ...
  6. Change the code in the InitTempTable function as follows:
    Existing code 1

    ...
    // Delete the following line.
    LOCAL PROCEDURE InitTempTable@4();

    VAR

    ...

    Replacement code 1

    ...
    // Add the following line.
    LOCAL PROCEDURE InitTempTable@4(ExpandAll@1000 : Boolean);

    VAR
    ...

    Existing code 2

    ...
    VAR

    // Delete the following line.
    XBRLLine@1000 : Record 395;

    BEGIN
    ...

    Replacement code 2

    ...
    VAR

    // Add the following line.
    XBRLLine@1001 : Record 395;

    BEGIN
    ...

    Existing code 3

    ...
    ResetFilter;

    // Delete the following line.
    DELETEALL;

    XBRLLine.SETRANGE("XBRL Taxonomy Name",CurrentTaxonomy);
    ...

    Replacement code 3

    ...
    ResetFilter;

    // Add the following lines.
    TempXBRLLine.RESET;
    TempXBRLLine.DELETEALL;
    TempXBRLLine.SETCURRENTKEY("XBRL Taxonomy Name","Presentation Order");

    // End of the lines.

    XBRLLine.SETRANGE("XBRL Taxonomy Name",CurrentTaxonomy);
    ...

    Existing code 4

    ...
    XBRLLine.SETRANGE("XBRL Taxonomy Name",CurrentTaxonomy);

    // Delete the following line.
    XBRLLine.SETRANGE(Level,0);

    IF XBRLLine.FIND('-') THEN
    ...

    Replacement code 4

    ...
    XBRLLine.SETRANGE("XBRL Taxonomy Name",CurrentTaxonomy);

    // Add the following lines.
    IF NOT ExpandAll THEN
    XBRLLine.SETRANGE(Level,0);
    // End of the lines.

    IF XBRLLine.FIND('-') THEN
    ...

    Existing code 5

    ...
    REPEAT

    // Delete the following lines.
    - Rec := XBRLLine;
    - INSERT;
    // End of the lines.

    UNTIL XBRLLine.NEXT = 0;
    ...

    Replacement code 5

    ...
    REPEAT

    // Add the following lines.
    TempXBRLLine := XBRLLine;
    TempXBRLLine.INSERT;
    // End of the lines.

    UNTIL XBRLLine.NEXT = 0;
    ...
  7. Change the code in the ExpandAll function as follows:
    Existing code 1

    ...
    // Delete the following line.
    LOCAL PROCEDURE ExpandAll@12();

    VAR

    ...

    Replacement code 1

    ...
    // Add the following line.
    LOCAL PROCEDURE HasChildren@19(ActualXBRLLine@1000 : Record 395) : Boolean;

    VAR
    ...

    Existing code 2

    ...
    VAR

    // Delete the following line.
    XBRLLine@1000 : Record 395;

    BEGIN
    ...

    Replacement code 2

    ...
    VAR

    // Add the following line.
    XBRLLine2@1001 : Record 395;

    BEGIN
    ...

    Existing code 3

    ...
    BEGIN

    // Delete the following lines.
    ResetFilter;
    DELETEALL;
    XBRLLine.SETRANGE("XBRL Taxonomy Name",CurrentTaxonomy);
    IF XBRLLine.FIND('-') THEN
    REPEAT
    Rec := XBRLLine;
    INSERT;
    UNTIL XBRLLine.NEXT = 0;
    // End of the lines.

    END;
    ...

    Replacement code 3

    ...
    BEGIN

    // Add the following lines.
    XBRLLine2 := ActualXBRLLine;
    XBRLLine2.SETCURRENTKEY("XBRL Taxonomy Name","Presentation Order");
    XBRLLine2.SETRANGE("XBRL Taxonomy Name",ActualXBRLLine."XBRL Taxonomy Name");
    IF XBRLLine2.NEXT = 0 THEN
    EXIT(FALSE);

    EXIT(XBRLLine2.Level > ActualXBRLLine.Level);
    // End of the lines.

    END;
    ...
  8. Change the code in the HasChildren function as follows:
    Existing code 1

    ...
    // Delete the following line.
    LOCAL PROCEDURE HasChildren@19(ActualXBRLLine@1000 : Record 395) : Boolean;

    VAR

    ...

    Replacement code 1

    ...
    // Add the following line.
    LOCAL PROCEDURE IsExpanded@20(ActualXBRLLine@1000 : Record 395) : Boolean;

    VAR
    ...

    Existing code 2

    ...
    VAR

    // Delete the following line.
    XBRLLine2@1001 : Record 395;

    BEGIN
    ...

    Replacement code 2

    ...
    VAR

    // Add the following lines.
    xXBRLLine@1001 : Record 395;
    Found@1002 : Boolean;
    // End of the lines.

    BEGIN
    ...

    Existing code 3

    ...
    BEGIN

    // Delete the following lines.
    XBRLLine2 := ActualXBRLLine;
    XBRLLine2.SETCURRENTKEY("XBRL Taxonomy Name","Presentation Order");
    XBRLLine2.SETRANGE("XBRL Taxonomy Name",ActualXBRLLine."XBRL Taxonomy Name");
    IF XBRLLine2.NEXT = 0 THEN
    EXIT(FALSE)
    ELSE
    EXIT(XBRLLine2.Level > ActualXBRLLine.Level);
    // End of the lines.

    END;
    ...

    Replacement code 3

    ...
    BEGIN

    // Add the following lines.
    xXBRLLine.COPY(Rec);
    ResetFilter;
    TempXBRLLine := ActualXBRLLine;
    Found := (TempXBRLLine.NEXT <> 0);
    IF Found THEN
    Found := (TempXBRLLine.Level > ActualXBRLLine.Level);
    COPY(xXBRLLine);
    EXIT(Found);
    // End of the lines.

    END;
    ...
  9. Change the code in the IsExpanded function as follows:
    Existing code 1

    ...
    // Delete the following line.
    LOCAL PROCEDURE IsExpanded@20(ActualXBRLLine@1000 : Record 395) : Boolean;

    VAR

    ...

    Replacement code 1

    ...
    // Add the following line.
    LOCAL PROCEDURE ToggleExpandCollapse@1();

    VAR
    ...

    Existing code 2

    ...
    VAR
    xXBRLLine@1001 : Record 395;
    ...

    Replacement code 2

    ...
    VAR

    // Add the following line.
    XBRLLine@1000 : Record 395;

    xXBRLLine@1001 : Record 395;

    ...

    Existing code 3

    ...
    xXBRLLine@1001 : Record 395;

    // Delete the following line.
    Found@1002 : Boolean;

    BEGIN
    ...

    Replacement code 3

    ...
    xXBRLLine@1001 : Record 395;
    BEGIN
    ...

    Existing code 4

    ...
    ResetFilter;

    // Delete the following lines.
    Rec := ActualXBRLLine;
    Found := (NEXT <> 0);
    IF Found THEN
    Found := (Level > ActualXBRLLine.Level);
    COPY(xXBRLLine);
    EXIT(Found);
    END;

    LOCAL PROCEDURE ToggleExpandCollapse@1();
    VAR
    XBRLLine@1000 : Record 395;
    xXBRLLine@1001 : Record 395;
    BEGIN
    xXBRLLine.COPY(Rec);
    ResetFilter;
    // End of the lines.

    IF ActualExpansionStatus = 0 THEN BEGIN // Has children, but not expanded
    ...

    Replacement code 4

    ...
    ResetFilter;
    IF ActualExpansionStatus = 0 THEN BEGIN // Has children, but not expanded
    ...
  10. Change the code in the ToggleExpandCollapse function as follows:
    Existing code 1

    ...
    IF XBRLLine.Level > xXBRLLine.Level THEN BEGIN

    // Delete the following lines.
    Rec := XBRLLine;
    IF INSERT THEN;
    // End of the lines.

    END;
    ...

    Replacement code 1

    ...
    IF XBRLLine.Level > xXBRLLine.Level THEN BEGIN

    // Add the following lines.
    TempXBRLLine := XBRLLine;
    IF TempXBRLLine.INSERT THEN;
    // End of the lines.

    END;
    ...

    Existing code 2

    ...
    IF ActualExpansionStatus = 1 THEN BEGIN // Has children and is already expanded

    // Delete the following lines.
    WHILE (NEXT <> 0) AND (Level > xXBRLLine.Level) DO
    DELETE;
    // End of the lines.

    END;
    ...

    Replacement code 2

    ...
    IF ActualExpansionStatus = 1 THEN BEGIN // Has children and is already expanded

    // Add the following lines.
    TempXBRLLine := Rec;
    WHILE (TempXBRLLine.NEXT <> 0) AND (TempXBRLLine.Level > xXBRLLine.Level) DO
    TempXBRLLine.DELETE;
    // End of the lines.

    END;
    ...
  11. Change the code in the ResetFilter function as follows:
    Existing code 1

    ...
    // Delete the following line.
    LOCAL PROCEDURE ResetFilter@3();

    BEGIN
    ...

    Replacement code 1

    ...
    // Add the following line.
    LOCAL PROCEDURE SetFiltersAndUpdate@5();

    BEGIN
    ...

    Existing code 2

    ...
    BEGIN

    // Delete the following lines.
    RESET;
    SETCURRENTKEY("XBRL Taxonomy Name","Presentation Order");
    FILTERGROUP(2);
    SETRANGE("XBRL Taxonomy Name",CurrentTaxonomy);
    FILTERGROUP(0);
    // End of the lines.

    END;
    ...

    Replacement code 2

    ...
    BEGIN

    // Add the following lines.
    SetFilters;
    CurrForm.UPDATE(FALSE);
    // End of the lines.

    END;
    ...

    Existing code 3

    ...
    BEGIN
    ...

    Replacement code 3

    ...

    // Add the following line.
    LOCAL PROCEDURE SetFilters@11();

    BEGIN
    ...

    Existing code 4

    ...
    BEGIN

    // Delete the following lines.
    END.
    }
    }
    // End of the lines.
    ...

    Replacement code 4

    ...
    BEGIN

    // Add the following lines.
    SETRANGE("Label Language Filter",CurrentLang);
    IF OnlyShowPresentation THEN
    SETFILTER("Presentation Linkbase Line No.",'>0')
    ELSE
    SETRANGE("Presentation Linkbase Line No.");
    END;
    // End of the lines.
    ...
  12. Add the following code in the ResetFilter function:

    ...
    LOCAL PROCEDURE ResetFilter@3();
    BEGIN
    RESET;
    SETCURRENTKEY("XBRL Taxonomy Name","Presentation Order");
    FILTERGROUP(2);
    SETRANGE("XBRL Taxonomy Name",CurrentTaxonomy);
    FILTERGROUP(0);
    END;
    ...
  13. Add the following code in the ResetFilter function:

    ...
    BEGIN
    END.
    }
    }
    ...

Prerequisites

You must have one of the following products installed to apply this hotfix:

  • The German version of Microsoft Dynamics NAV 2009 R2

  • The German version of Microsoft Dynamics NAV 2009 Service Pack 1

Removal information

You cannot remove this hotfix.

Status

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.

Note This is a "FAST PUBLISH" article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use for other considerations.

Need more help?

Want more options?

Explore subscription benefits, browse training courses, learn how to secure your device, and more.

Communities help you ask and answer questions, give feedback, and hear from experts with rich knowledge.

Was this information helpful?

What affected your experience?
By pressing submit, your feedback will be used to improve Microsoft products and services. Your IT admin will be able to collect this data. Privacy Statement.

Thank you for your feedback!

×