Linhas de taxonomia são excluídas inesperadamente quando você clica em pesquisa no formulário de solicitação de relatório 505 na versão em alemão do Microsoft Dynamics NAV 2009

Modelo: CPR - modelo de correção de código Navision

BUG n º: 188284 (Manutenção do conteúdo)Este artigo se aplica ao Microsoft Dynamics NAV para a localidade do idioma alemão (de).

Sintomas

Após o lançamento do XBRL (Alemanha - lista de vendas da UE - novo método para envio a partir do 01.01.2013 - SP1 do Microsoft Dynamics NAV 2009), quando você clica em pesquisa no formulário de solicitação de relatório de 505, as linhas de taxonomia são excluídas inesperadamente. Esse problema ocorre nos seguintes produtos:

  • A versão em alemão do Microsoft Dynamics NAV 2009 R2

  • A versão em alemão do Microsoft Dynamics NAV 2009 Service Pack 1

Resolução

Informações sobre o hotfix

Um hotfix suportado está disponível agora na Microsoft. No entanto, apenas destina-se a corrigir o problema descrito neste artigo. Aplique-o somente aos sistemas que apresentarem esse problema específico. Esta correção poderá ser submetida a testes adicionais. Portanto, se esse problema não o prejudicar, recomendamos que você aguarde o próximo service pack do Microsoft Dynamics NAV 2009 ou a próxima versão do Microsoft Dynamics NAV que contém esse hotfix.

Observação: Em alguns casos, as taxas cobradas para suporte a chamadas podem ser canceladas se um profissional de suporte técnico do Microsoft Dynamics e produtos relacionados determina que uma atualização específica resolverá o problema. Os custos normais de suporte serão aplicados para questões de suporte adicionais e problemas que não se qualificam à atualização específica em questão.

Se esse hotfix não está disponível para download público (ou seja, que não é fornecido um URL público para esse hotfix neste artigo), a distribuição requer conhecimento técnico, membro da equipe de escalação ou aprovação gerencial e as seguintes informações se aplicam:

  • Para receber o hotfix, é necessário tendo o erro mencionado na seção "Sintomas".

  • Você deve controlar os clientes enviá-lo para e forneça o próximo service pack quando estiver disponível (se um service pack for lançado).

Esse hotfix está programado para ser incluído no Microsoft Dynamics NAV 2013.


Informações sobre a instalação

A Microsoft fornece exemplos de programação somente para ilustração, sem garantia expressa ou implícita. Isso inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação a um propósito específico. Este artigo presume que você esteja familiarizado com a linguagem de programação que está sendo demonstrada e com as ferramentas usadas para criar e depurar procedimentos. Os engenheiros de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento. No entanto, eles não modificarão esses exemplos para fornecer funcionalidades adicionais ou construir procedimentos para atender às suas necessidades específicas.

Observação: Antes de instalar esse hotfix, verifique se todos os usuários de cliente do Microsoft Navision estiver desconectados do sistema. Isso inclui usuários de cliente do Microsoft Navision Application Server (NAS). Você deve ser o único usuário do cliente conectado ao implementar esse hotfix.

Para implementar esse hotfix, você deve ter uma licença de desenvolvedor.

É recomendável que a conta de usuário na janela de Logins do Windows ou na janela banco de dados seja atribuída a ID de função "SUPER". Se a conta de usuário não pode ser atribuída a ID de função "SUPER", você deverá verificar se a conta de usuário tem as seguintes permissões:

  • A permissão Modificar para o objeto que será alterado.

  • A permissão de execução para o objeto de sistema 5210 de identificação de objeto e do objeto de sistema 9015 de identificação de objeto .



Observação: Você não precisa ter direitos para os armazenamentos de dados, a menos que você precise executar o reparo de dados.

Alterações de código

Observação: Sempre teste código correções em um ambiente controlado antes de aplicar as correções para os computadores de produção.
Para resolver esse problema, altere o código na tabela de configuração de lançamento de IVA (325). Para fazer isso, execute as seguintes etapas:

  1. Altere o código das propriedades da seguinte maneira:
    1 de código existente

    ... Width=16500;

    // Delete the following line.
    Height=7370;

    SaveValues=Yes;
    ...

    1 código de substituição

    ...Width=16500;

    // Add the following line.
    Height=8140;

    SaveValues=Yes;
    ...

    2 de código existente

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

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

    XBRLTaxonomy.INIT;
    ...

    Código de substituição 2

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

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

    XBRLTaxonomy.INIT;
    ...

    3 de código existente

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

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

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

    Código de substituição 3

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

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

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

    4 de código existente

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

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

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

    Código de substituição 4

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

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

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

    5 de código existente

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

    Código de substituição 5

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

    6 de código existente

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

    END;
    ...

    Código de substituição 6

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

    END;
    ...

    7 de código existente

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

    Código de substituição 7

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

    8 de código existente

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

    Código de substituição 8

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

    9 de código existente

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

    Código de substituição 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.
    ...

    10 de código existente

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

    Código de substituição 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.
    ...

    Código existente 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.
    ...

    Código de substituição 11

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

    12 de código existente

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

    Código de substituição 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. Altere o código dos controles da seguinte maneira:
    1 de código existente

    ...InColumn=Yes;

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

    InColumnHeading=Yes }
    ...

    1 código de substituição

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

    2 de código existente

    ...InColumnHeading=Yes }

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

    InColumn=Yes;
    ...

    Código de substituição 2

    ...InColumnHeading=Yes }

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

    InColumn=Yes;
    ...

    3 de código existente

    ...InColumn=Yes;

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

    InColumnHeading=Yes }
    ...

    Código de substituição 3

    ...InColumn=Yes;

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

    InColumnHeading=Yes }
    ...

    4 de código existente

    ...InColumnHeading=Yes }

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

    InColumn=Yes;
    ...

    Código de substituição 4

    ...InColumnHeading=Yes }

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

    InColumn=Yes;
    ...

    5 de código existente

    ...InColumn=Yes;

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

    InColumnHeading=Yes }
    ...

    Código de substituição 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 }
    ...

    6 de código existente

    ...InColumnHeading=Yes }

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

    InColumn=Yes;

    ...

    Código de substituição 6

    ...InColumnHeading=Yes }

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

    InColumn=Yes;
    ...

    7 de código existente

    ...InColumn=Yes;

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

    InColumnHeading=Yes }
    ...

    Código de substituição 7

    ...InColumn=Yes;

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

    InColumnHeading=Yes }
    ...

    8 de código existente

    ...InColumnHeading=Yes }

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

    InColumn=Yes;
    ...

    Código de substituição 8

    ...InColumnHeading=Yes }

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

    InColumn=Yes;
    ...

    9 de código existente

    ...InColumn=Yes;

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

    InColumnHeading=Yes }
    ...

    Código de substituição 9

    ...InColumn=Yes;

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

    InColumnHeading=Yes }
    ...

    10 de código existente

    ...InColumnHeading=Yes }

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

    InColumn=Yes;
    ...

    Código de substituição 10

    ...InColumnHeading=Yes }

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

    InColumn=Yes;
    ...

    Código existente 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 }
    ...

    Código de substituição 11

    ...ShowCaption=No;

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

    InColumnHeading=Yes }
    ...

    12 de código existente

    ...InColumnHeading=Yes }

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

    InColumn=Yes;
    ...

    Código de substituição 12

    ...InColumnHeading=Yes }

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

    InColumn=Yes;

    ...

    13 de código existente

    ...ShowCaption=No;

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

    InColumnHeading=Yes }
    ...

    Código de substituição 13

    ...ShowCaption=No;

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

    InColumnHeading=Yes }
    ...

    14 de código existente

    ...InColumnHeading=Yes }

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

    InColumn=Yes;
    ...

    Código de substituição 14

    ...InColumnHeading=Yes }

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

    InColumn=Yes;
    ...

    15 de código existente

    ...InColumn=Yes;

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

    InColumnHeading=Yes }
    ...

    Código de substituição 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 }
    ...

    16 de código existente

    ...InColumnHeading=Yes }

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

    InColumn=Yes;
    ...

    Código de substituição 16

    ...InColumnHeading=Yes }

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

    InColumn=Yes;
    ...

    17 de código existente

    ...InColumn=Yes;

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

    InColumnHeading=Yes }
    ...

    Código de substituição 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 }
    ...

    18 de código existente

    ...InColumnHeading=Yes }

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

    VertGlue=Bottom;
    ...

    18 do código de substituição

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

    19 de código existente

    ...InvalidActionAppearance=Hide }

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

    VertGlue=Bottom;
    ...

    Código de substituição 19

    ...InvalidActionAppearance=Hide }

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

    VertGlue=Bottom;
    ...

    20 de código existente

    ...InvalidActionAppearance=Hide }

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

    VertGlue=Bottom;
    ...

    20 do código de substituição

    ...InvalidActionAppearance=Hide }

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

    VertGlue=Bottom;
    ...

    21 de código existente

    ...PushAction=FormHelp }

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

    VertGlue=Bottom;
    ...

    Código de substituição 21

    ...PushAction=FormHelp }

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

    VertGlue=Bottom;
    ...

    22 de código existente

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

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

    Código de substituição 22

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

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

    23 de código existente

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

    Código de substituição 23

    ...OnAfterValidate=BEGIN

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

    END;
    ...

    24 de código existente

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

    Código de substituição 24

    ...IF CurrentLang <> '' THEN

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

    END;
    ...

    25 de código existente

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

    Código de substituição 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(
    ...

    26 de código existente

    ...EXIT(TRUE);

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

    END;
    ...

    Código de substituição 26

    ...EXIT(TRUE);

    // Add the following lines.
    END;

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

    END;
    ...

    27 de código existente

    ...END;

    // Delete the following line.
    }

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

    Código de substituição 27

    ...END;

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

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

    28 de código existente

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

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

    VertGlue=Bottom;
    ...

    Código de substituição 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;
    ...

    29 de código existente

    ...OnPush=BEGIN

    // Delete the following line.
    ExpandAll;

    END;
    ...

    Código de substituição 29

    ...OnPush=BEGIN

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

    END;
    ...

    30 de código existente

    ...OnPush=BEGIN

    // Delete the following line.
    InitTempTable;

    END;
    ...

    Código de substituição 30

    ...OnPush=BEGIN

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

    END;
    ...

  3. Adicione a seguinte variável global:

    ...VAR

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

    CurrentTaxonomy@1004 : Code[20];
    ...
  4. Exclua as seguintes variáveis globais:

    ...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. Adicione as seguintes variáveis globais:

    ...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. Altere o código na função InitTempTable da seguinte forma:
    1 de código existente

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

    VAR

    ...

    1 código de substituição

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

    VAR
    ...

    2 de código existente

    ...VAR

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

    BEGIN
    ...

    Código de substituição 2

    ...VAR

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

    BEGIN
    ...

    3 de código existente

    ...ResetFilter;

    // Delete the following line.
    DELETEALL;

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

    Código de substituição 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);
    ...

    4 de código existente

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

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

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

    Código de substituição 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
    ...

    5 de código existente

    ...REPEAT

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

    UNTIL XBRLLine.NEXT = 0;
    ...

    Código de substituição 5

    ...REPEAT

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

    UNTIL XBRLLine.NEXT = 0;
    ...

  7. Altere o código na função ExpandAll da seguinte maneira:
    1 de código existente

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

    VAR

    ...

    1 código de substituição

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

    VAR
    ...

    2 de código existente

    ...VAR

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

    BEGIN
    ...

    Código de substituição 2

    ...VAR

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

    BEGIN
    ...

    3 de código existente

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

    Código de substituição 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. Altere o código na função HasChildren da seguinte forma:
    1 de código existente

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

    VAR

    ...

    1 código de substituição

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

    VAR
    ...

    2 de código existente

    ...VAR

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

    BEGIN
    ...

    Código de substituição 2

    ...VAR

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

    BEGIN
    ...

    3 de código existente

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

    Código de substituição 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. Altere o código na função IsExpanded da seguinte maneira:
    1 de código existente

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

    VAR

    ...

    1 código de substituição

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

    VAR
    ...

    2 de código existente

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

    Código de substituição 2

    ...VAR

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

    xXBRLLine@1001 : Record 395;

    ...

    3 de código existente

    ...xXBRLLine@1001 : Record 395;

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

    BEGIN
    ...

    Código de substituição 3

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

    4 de código existente

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

    Código de substituição 4

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

  10. Altere o código na função ToggleExpandCollapse da seguinte forma:
    1 de código existente

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

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

    END;
    ...

    1 código de substituição

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

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

    END;
    ...

    2 de código existente

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

    Código de substituição 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. Altere o código na função ResetFilter da seguinte forma:
    1 de código existente

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

    BEGIN
    ...

    1 código de substituição

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

    BEGIN
    ...

    2 de código existente

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

    Código de substituição 2

    ...BEGIN

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

    END;
    ...

    3 de código existente

    ...BEGIN
    ...

    Código de substituição 3

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

    BEGIN
    ...

    4 de código existente

    ...BEGIN

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

    Código de substituição 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. Adicione o seguinte código na função ResetFilter :

    ... LOCAL PROCEDURE ResetFilter@3();
    BEGIN
    RESET;
    SETCURRENTKEY("XBRL Taxonomy Name","Presentation Order");
    FILTERGROUP(2);
    SETRANGE("XBRL Taxonomy Name",CurrentTaxonomy);
    FILTERGROUP(0);
    END;
    ...
  13. Adicione o seguinte código na função ResetFilter :

    ...  BEGIN
    END.
    }
    }
    ...

Pré-requisitos:

Você deve ter um dos seguintes produtos instalados para aplicar esse hotfix:

  • A versão em alemão do Microsoft Dynamics NAV 2009 R2

  • A versão em alemão do Microsoft Dynamics NAV 2009 Service Pack 1

Informações sobre remoção

Você não pode remover esse hotfix.

Status

A Microsoft confirma que este é um problema em seus produtos listados na seção "Aplica-se a".

Referências

VSFT DynamicsNAVSE: 343143

Observação: Este é um artigo de "PUBLICAÇÃO RÁPIDA" criado diretamente de dentro da organização de suporte da Microsoft. As informações contidas neste documento são fornecidas desta maneira, em resposta a problemas emergentes. Como um dos resultados da velocidade da publicação, os materiais podem incluir erros tipográficos e podem ser revisados a qualquer momento sem aviso prévio. Consulte os Termos de uso para outras considerações.

Autor: vagarcia
Gravador: v-brialu
Revisor técnico: vagarcia
Editor:

Precisa de mais ajuda?

Expanda suas habilidades
Explore o treinamento
Obtenha novos recursos primeiro
Ingressar no Microsoft Insider

Estas informações foram úteis?

Obrigado por seus comentários!

Agradecemos pelos seus comentários! Parece que pode ser útil conectar você a um de nossos agentes de suporte do Office.

×