Não é possível inserir o orçamento de custo na Contabilidade de Custos no RTC (cliente RoleTailored) na versão suíça do Microsoft Dynamics 2009

Aplica-se a
Microsoft Dynamics NAV 2009 R2 Dynamics NAV 2009 Service Pack 1

Este artigo se aplica ao Microsoft Dynamics NAV para os seguintes países e localidades de idioma.

  • Francês (Suíça) (fr-ch)
  • Alemão (Suíça) (de-ch)
  • Italiano (Suíça) (it-ch)

Sintomas

Quando você abre a matriz de orçamento na Contabilidade de Custos no RTC (cliente RoleTailored) na versão suíça do Microsoft Dynamics 2009, não é possível editar os valores na matriz de orçamento. Portanto, você não pode inserir o orçamento de custo na Contabilidade de Custos.

Esse problema ocorre nos seguintes produtos:

  • A versão suíça do Microsoft Dynamics NAV 2009 R2
  • A versão suíça do Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

      

Resolução

Informações sobre o hotfix

Um hotfix com suporte agora está disponível na Microsoft. No entanto, ele destina-se apenas a corrigir o problema descrito neste artigo. Aplique-o somente a sistemas que estão enfrentando esse problema específico. Esse hotfix pode receber testes adicionais. Portanto, se você não for severamente afetado por esse problema, é recomendável aguardar o próximo pacote de serviços do Microsoft Dynamics NAV 2009 ou a próxima versão do Microsoft Dynamics NAV que contém esse hotfix.

Observação Em casos especiais, os encargos que normalmente são incorridos para chamadas de suporte podem ser cancelados se um profissional de suporte técnico do Microsoft Dynamics e produtos relacionados determinar que uma atualização específica resolve seu problema. Os custos de suporte em geral aplicam-se a questões e problemas de suporte adicionais que não se enquadrem na atualização específica em questão.

Informações de instalação

A Microsoft fornece exemplos de programação apenas para ilustração, sem garantia expressa ou implícita. Isso inclui, mas não se limita a, as garantias implícitas de comercialização ou adequação a uma finalidade específica. Este artigo pressupõe 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 procedimento específico. No entanto, eles não modificarão esses exemplos para fornecer funcionalidade adicional ou procedimentos de construção para atender aos seus requisitos específicos.

Observação Antes de instalar esse hotfix, verifique se todos os usuários cliente do Microsoft Dynamics NAV estão conectados ao sistema. Isso inclui serviços do NAS (Microsoft Dynamics NAV Application Server). Você deve ser o único usuário cliente que está conectado ao implementar esse hotfix.

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

Recomendamos que a conta de usuário na janela Logons do Windows ou na janela Logons de Banco de Dados seja atribuída à ID da função "SUPER". Se a conta de usuário não puder ser atribuída à ID da 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 você estará alterando.
  • A permissão Executar para o objeto System Object ID 5210 e para o objeto System Object ID 9015.

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

Alterações de código

Observação Sempre teste correções de código em um ambiente controlado antes de aplicar as correções aos computadores de produção.

Para resolver este problema, execute as seguintes etapas:

  1. Altere o código nas Propriedades no formulário Orçamento de Custo por Matriz de Período (36883) da seguinte maneira:
    Código existente

    }
    PROPERTIES
    {
    Width=20790;
    Height=6380;
    
    // Delete the following line.
    Editable=No;
    // End of the deleted line.
    
    CaptionML=ENU=Cost Budget per Period Matrix;
    InsertAllowed=No;
    DeleteAllowed=No;
    LinksAllowed=No;
    SourceTable=Table3010551;
    

    Código de substituição

    }
    PROPERTIES
    {
    Width=20790;
    Height=6380;
    CaptionML=ENU=Cost Budget per Period Matrix;
    InsertAllowed=No;
    DeleteAllowed=No;
    LinksAllowed=No;
    SourceTable=Table3010551;
    
  2. Altere o código nos Controles no formulário Orçamento de Custo por Matriz de Período (36883) da seguinte maneira:
    Código 1 existente

    IF "Line Type" <> "Line Type"::"Cost Type" THEN
    CurrForm.Field1.UPDATEFONTBOLD := TRUE;
    // CA0002.end
    END;
    
    OnDrillDown=BEGIN
    MATRIX_OnDrillDown(1);
    END;
    }
    { 1051;Label ;0 ;0 ;0 ;0 ;ParentControl=1015;
    

    Código de substituição 1

    IF "Line Type" <> "Line Type"::"Cost Type" THEN
    CurrForm.Field1.UPDATEFONTBOLD := TRUE;
    // CA0002.end
    END;
    
    // Add the following lines.
    OnValidate=BEGIN
    UpdateAmount(1);
    END;
    // End of the added lines.
    
    OnDrillDown=BEGIN
    MATRIX_OnDrillDown(1);
    END;
    }
    { 1051;Label ;0 ;0 ;0 ;0 ;ParentControl=1015;
    

    Código 2 existente

    
    
    IF "Line Type" <> "Line Type"::"Cost Type" THEN
    CurrForm.Field2.UPDATEFONTBOLD := TRUE;
    // CA0002.end
    END;
    
    OnDrillDown=BEGIN
    MATRIX_OnDrillDown(2);
    END;
    }
    { 1052;Label ;0 ;0 ;0 ;0 ;ParentControl=1016;
    

    Código de substituição 2

    
    
    IF "Line Type" <> "Line Type"::"Cost Type" THEN
    CurrForm.Field2.UPDATEFONTBOLD := TRUE;
    // CA0002.end
    END;
    
    // Add the following lines.
    OnValidate=BEGIN
    UpdateAmount(2);
    END;
    // End of the added lines.
    
    OnDrillDown=BEGIN
    MATRIX_OnDrillDown(2);
    END;
    }
    { 1052;Label ;0 ;0 ;0 ;0 ;ParentControl=1016;
    

    Código 3 existente

    
    
    IF "Line Type" <> "Line Type"::"Cost Type" THEN
    CurrForm.Field3.UPDATEFONTBOLD := TRUE;
    // CA0002.end
    END;
    
    OnDrillDown=BEGIN
    MATRIX_OnDrillDown(3);
    END;
    }
    { 1053;Label ;0 ;0 ;0 ;0 ;ParentControl=1017;
    

    Código de substituição 3

    
    
    IF "Line Type" <> "Line Type"::"Cost Type" THEN
    CurrForm.Field3.UPDATEFONTBOLD := TRUE;
    // CA0002.end
    END;
    
    // Add the following lines.
    OnValidate=BEGIN
    UpdateAmount(3);
    END;
    // End of the added lines.
    
    OnDrillDown=BEGIN
    MATRIX_OnDrillDown(3);
    END;
    }
    { 1053;Label ;0 ;0 ;0 ;0 ;ParentControl=1017;
    

    Código 4 existente

    
    
    IF "Line Type" <> "Line Type"::"Cost Type" THEN
    CurrForm.Field4.UPDATEFONTBOLD := TRUE;
    // CA0002.end
    END;
    
    OnDrillDown=BEGIN
    MATRIX_OnDrillDown(4);
    END;
    }
    { 1054;Label ;0 ;0 ;0 ;0 ;ParentControl=1018;
    

    Código de substituição 4

    
    
    IF "Line Type" <> "Line Type"::"Cost Type" THEN
    CurrForm.Field4.UPDATEFONTBOLD := TRUE;
    // CA0002.end
    END;
    
    // Add the following lines.
    OnValidate=BEGIN
    UpdateAmount(4);
    END;
    // End of the added lines.
    
    OnDrillDown=BEGIN
    MATRIX_OnDrillDown(4);
    END;
    }
    { 1054;Label ;0 ;0 ;0 ;0 ;ParentControl=1018;
    

    Código 5 existente

    
    
    IF "Line Type" <> "Line Type"::"Cost Type" THEN
    CurrForm.Field5.UPDATEFONTBOLD := TRUE;
    // CA0002.end
    END;
    
    OnDrillDown=BEGIN
    MATRIX_OnDrillDown(5);
    END;
    }
    { 1055;Label ;0 ;0 ;0 ;0 ;ParentControl=1019;
    

    Código de substituição 5

    
    
    IF "Line Type" <> "Line Type"::"Cost Type" THEN
    CurrForm.Field5.UPDATEFONTBOLD := TRUE;
    // CA0002.end
    END;
    
    // Add the following lines.
    OnValidate=BEGIN
    UpdateAmount(5);
    END;
    // End of the added lines.
    
    OnDrillDown=BEGIN
    MATRIX_OnDrillDown(5);
    END;
    }
    { 1055;Label ;0 ;0 ;0 ;0 ;ParentControl=1019;
    

    Código 6 existente

    
    
    IF "Line Type" <> "Line Type"::"Cost Type" THEN
    CurrForm.Field6.UPDATEFONTBOLD := TRUE;
    // CA0002.end
    END;
    
    OnDrillDown=BEGIN
    MATRIX_OnDrillDown(6);
    END;
    }
    { 1056;Label ;0 ;0 ;0 ;0 ;ParentControl=1020;
    

    Código de substituição 6

    
    
    IF "Line Type" <> "Line Type"::"Cost Type" THEN
    CurrForm.Field6.UPDATEFONTBOLD := TRUE;
    // CA0002.end
    END;
    
    // Add the following lines.
    OnValidate=BEGIN
    UpdateAmount(6);
    END;
    // End of the added lines.
    
    OnDrillDown=BEGIN
    MATRIX_OnDrillDown(6);
    END;
    }
    { 1056;Label ;0 ;0 ;0 ;0 ;ParentControl=1020;
    

    Código 7 existente

    
    
    IF "Line Type" <> "Line Type"::"Cost Type" THEN
    CurrForm.Field7.UPDATEFONTBOLD := TRUE;
    // CA0002.end
    END;
    
    OnDrillDown=BEGIN
    MATRIX_OnDrillDown(7);
    END;
    }
    { 1057;Label ;0 ;0 ;0 ;0 ;ParentControl=1021;
    

    Código de substituição 7

    
    
    IF "Line Type" <> "Line Type"::"Cost Type" THEN
    CurrForm.Field7.UPDATEFONTBOLD := TRUE;
    // CA0002.end
    END;
    
    // Add the following lines.
    OnValidate=BEGIN
    UpdateAmount(7);
    END;
    // End of the added lines.
    
    OnDrillDown=BEGIN
    MATRIX_OnDrillDown(7);
    END;
    }
    { 1057;Label ;0 ;0 ;0 ;0 ;ParentControl=1021;
    

    Código 8 existente

    IF "Line Type" <> "Line Type"::"Cost Type" THEN
    CurrForm.Field8.UPDATEFONTBOLD := TRUE;
    // CA0002.end
    END;
    
    OnDrillDown=BEGIN
    MATRIX_OnDrillDown(8);
    END;
    }
    { 1058;Label ;0 ;0 ;0 ;0 ;ParentControl=1022;
    

    Código de substituição 8

    IF "Line Type" <> "Line Type"::"Cost Type" THEN
    CurrForm.Field8.UPDATEFONTBOLD := TRUE;
    // CA0002.end
    END;
    
    // Add the following lines.
    OnValidate=BEGIN
    UpdateAmount(8);
    END;
    // End of the added lines.
    
    OnDrillDown=BEGIN
    MATRIX_OnDrillDown(8);
    END;
    }
    { 1058;Label ;0 ;0 ;0 ;0 ;ParentControl=1022;
    

    Código 9 existente

    IF "Line Type" <> "Line Type"::"Cost Type" THEN
    CurrForm.Field9.UPDATEFONTBOLD := TRUE;
    // CA0002.end
    END;
    
    OnDrillDown=BEGIN
    MATRIX_OnDrillDown(9);
    END;
    }
    { 1059;Label ;0 ;0 ;0 ;0 ;ParentControl=1023;
    

    Código de substituição 9

    IF "Line Type" <> "Line Type"::"Cost Type" THEN
    CurrForm.Field9.UPDATEFONTBOLD := TRUE;
    // CA0002.end
    END;
    
    // Add the following lines.
    OnValidate=BEGIN
    UpdateAmount(9);
    END;
    // End of the added lines.
    
    OnDrillDown=BEGIN
    MATRIX_OnDrillDown(9);
    END;
    }
    { 1059;Label ;0 ;0 ;0 ;0 ;ParentControl=1023;
    

    Código 10 existente

    IF "Line Type" <> "Line Type"::"Cost Type" THEN
    CurrForm.Field10.UPDATEFONTBOLD := TRUE;
    // CA0002.end
    END;
    
    OnDrillDown=BEGIN
    MATRIX_OnDrillDown(10);
    END;
    }
    { 1060;Label ;0 ;0 ;0 ;0 ;ParentControl=1024;
    

    Código de substituição 10

    IF "Line Type" <> "Line Type"::"Cost Type" THEN
    CurrForm.Field10.UPDATEFONTBOLD := TRUE;
    // CA0002.end
    END;
    
    // Add the following lines.
    OnValidate=BEGIN
    UpdateAmount(10);
    END;
    // End of the added lines.
    
    OnDrillDown=BEGIN
    MATRIX_OnDrillDown(10);
    END;
    }
    { 1060;Label ;0 ;0 ;0 ;0 ;ParentControl=1024;
    

    Código 11 existente

    IF "Line Type" <> "Line Type"::"Cost Type" THEN
    CurrForm.Field11.UPDATEFONTBOLD := TRUE;
    // CA0002.end
    END;
    
    OnDrillDown=BEGIN
    MATRIX_OnDrillDown(11);
    END;
    }
    { 1061;Label ;0 ;0 ;0 ;0 ;ParentControl=1025;
    

    Código de substituição 11

    IF "Line Type" <> "Line Type"::"Cost Type" THEN
    CurrForm.Field11.UPDATEFONTBOLD := TRUE;
    // CA0002.end
    END;
    
    // Add the following lines.
    OnValidate=BEGIN
    UpdateAmount(11);
    END;
    // End of the added lines.
    
    OnDrillDown=BEGIN
    MATRIX_OnDrillDown(11);
    END;
    }
    { 1061;Label ;0 ;0 ;0 ;0 ;ParentControl=1025;
    

    Código 12 existente

    IF "Line Type" <> "Line Type"::"Cost Type" THEN
    CurrForm.Field12.UPDATEFONTBOLD := TRUE;
    // CA0002.end
    END;
    
    OnDrillDown=BEGIN
    MATRIX_OnDrillDown(12);
    END;
    }
    { 1062;Label ;0 ;0 ;0 ;0 ;ParentControl=1026;
    

    Código de substituição 12

    IF "Line Type" <> "Line Type"::"Cost Type" THEN
    CurrForm.Field12.UPDATEFONTBOLD := TRUE;
    // CA0002.end
    END;
    
    // Add the following lines.
    OnValidate=BEGIN
    UpdateAmount(12);
    END;
    // End of the added lines.
    
    OnDrillDown=BEGIN
    MATRIX_OnDrillDown(12);
    END;
    }
    { 1062;Label ;0 ;0 ;0 ;0 ;ParentControl=1026;
    
  3. Altere o código nas Variáveis Globais no formulário Orçamento de Custo por Matriz de Período (36883) da seguinte maneira:
    Código existente

    BudgetFilter@1150004 : Code[10];
    MATRIX_ColumnCaption@1150005 : ARRAY [12] OF Text[80];
    AmtType@1150006 : 'Balance at Date,Net Change';
    RoundingFactor@1150007 : 'None,1,1000,1000000';
    MATRIX_CellData@1150008 : ARRAY [32] OF Decimal;
    
    LOCAL PROCEDURE SetDateFilter@1150000(MATRIX_ColumnOrdinal@1150000 : Integer);
    BEGIN
    IF AmtType = AmtType::"Net Change" THEN
    IF MatrixRecords[MATRIX_ColumnOrdinal]."Period Start" = MatrixRecords[MATRIX_ColumnOrdinal]."Period End" THEN
    

    Código de substituição

    BudgetFilter@1150004 : Code[10];
    MATRIX_ColumnCaption@1150005 : ARRAY [12] OF Text[80];
    AmtType@1150006 : 'Balance at Date,Net Change';
    RoundingFactor@1150007 : 'None,1,1000,1000000';
    MATRIX_CellData@1150008 : ARRAY [32] OF Decimal;
    
    // Add the following lines.
    Text000@1150011 : TextConst 'ENU=Set View As to Net Change before you edit entries.';
    Text001@1150012 : TextConst 'ENU=%1 or %2 must not be blank.';
    CurrRegNo@11500010 : Integer;
    // End of the added lines.
    
    LOCAL PROCEDURE SetDateFilter@1150000(MATRIX_ColumnOrdinal@1150000 : Integer);
    BEGIN
    IF AmtType = AmtType::"Net Change" THEN
    IF MatrixRecords[MATRIX_ColumnOrdinal]."Period Start" = MatrixRecords[MATRIX_ColumnOrdinal]."Period End" THEN
    
  4. Altere o código na função UpdateAmount no formulário Orçamento de Custo por Matriz de Período (36883) da seguinte maneira:
    Código existente

    RoundingFactor::"1000000":
    MATRIX_CellData[ColumnID] := ROUND(MATRIX_CellData[ColumnID] / 1000000,0.1);
    END;
    END;
    
    BEGIN
    {
    <changelog>
    <add id="CA0001" dev="kcools" date="2007-02-21" area="COSTACCTNG" feature="PSCORS1209"
    releaseversion="CACEM6.00">
    

    Código de substituição

    RoundingFactor::"1000000":
    MATRIX_CellData[ColumnID] := ROUND(MATRIX_CellData[ColumnID] / 1000000,0.1);
    END;
    END;
    
    // Add the following lines.
    LOCAL PROCEDURE UpdateAmount@1150005(ColumnID@1150000 : Integer);
    BEGIN
    IF AmtType <> AmtType::"Net Change" THEN
    ERROR(Text000);
    
    IF (CostCenterFilter = '') AND (CostObjectFilter = '') THEN
    ERROR(Text001,FIELDCAPTION("Cost Center Filter"),FIELDCAPTION("Cost Object Filter"));
    
    SetFilters(ColumnID);
    CALCFIELDS("Budget Amount");
    InsertMatrixCostBudgetEntry(CurrRegNo,ColumnID);
    END;
    
    LOCAL PROCEDURE SetFilters@1150006(ColumnID@1150000 : Integer);
    BEGIN
    SetDateFilter(ColumnID);
    SETFILTER("Cost Center Filter",CostCenterFilter);
    SETFILTER("Cost Object Filter",CostObjectFilter);
    SETFILTER("Budget Filter",BudgetFilter);
    END;
    
    LOCAL PROCEDURE InsertMatrixCostBudgetEntry@1150007(VAR RegNo@1150000 : Integer;ColumnID@1150001 : Integer);
    VAR
    MatrixCostBudgetEntry@1150003 : Record 3010571;
    BEGIN
    MatrixCostBudgetEntry.INIT;
    MatrixCostBudgetEntry."Budget Name" := BudgetFilter;
    MatrixCostBudgetEntry."Cost Type No." := "No.";
    MatrixCostBudgetEntry.Date := MatrixRecords[ColumnID]."Period Start";
    MatrixCostBudgetEntry."Cost Center Code" := CostCenterFilter;
    MatrixCostBudgetEntry."Cost Object Code" := CostObjectFilter;
    MatrixCostBudgetEntry.Amount := MATRIX_CellData[ColumnID] - "Budget Amount";
    MatrixCostBudgetEntry.INSERT(TRUE);
    END;
    // End of the added lines.
    
    BEGIN
    {
    <changelog>
    <add id="CA0001" dev="kcools" date="2007-02-21" area="COSTACCTNG" feature="PSCORS1209"
    releaseversion="CACEM6.00">
    

          

Pré-requisitos

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

  • A versão suíça do Microsoft Dynamics NAV 2009 R2
  • A versão suíça do Microsoft Dynamics NAV 2009 Service Pack 1

Informações sobre remoção

Você não pode remover esse hotfix.

Status

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".

Observação Este é um artigo "FAST PUBLISH" criado diretamente na organização de suporte da Microsoft. As informações contidas aqui são fornecidas como resposta aos problemas possíveis. Como resultado da prontidão de disponibilizá-lo, os materiais pode conter erros tipográficos e podem ser revisados a qualquer momento são aviso prévio. Consulte Termos de Uso para obter outras considerações.