Error "Referencia de objeto no establecida en una instancia de un objeto" en Microsoft Management Reporter 2012 for Microsoft Dynamics AX 2012

En este artículo se proporciona una resolución para la referencia de objeto no establecida en una instancia de un error de objeto que se produce en Microsoft Management Reporter 2012 para Microsoft Dynamics AX 2012.

Se aplica a: Microsoft Management Reporter 2012, Microsoft Dynamics AX 2012 R3
Número de KB original: 2967363

Síntomas

Recibirá el siguiente error en los registros de integración en la consola de configuración de Management Reporter en Microsoft Management Reporter 2012 para Microsoft Dynamics AX 2012:

[Ax 2012 Accounts to Account] ha encontrado un error. El procesamiento se anulará. Texto de error: referencia de objeto no establecida en una instancia de un objeto.

Además, el siguiente error también puede aparecer en la Visor de eventos:

Excepción detectada: [System.NullReferenceException] Referencia de objeto no establecida en una instancia de un objeto. Seguimiento de pila:at
Microsoft.Dynamics.Integration.Adapters.AX2012GL.DataAccessHelper.GetEnumLabelId(EnumMetadata enumList, Nullable'1 value) en
Microsoft.Dynamics.Integration.Adapters.AX2012GL.DataAccessHelper.GetEnumLabelId(EnumMetadata enumList, Nullable'1 value) en
Microsoft.Dynamics.Integration.Adapters.AX2012GL.AX2012GLAdapter.GetEnumValueLabelString(String enumName, Nullable'1 value) en
Microsoft.Dynamics.Integration.Adapters.AX2012GL.AccountObjectProvider.PopulateAccountAttributes(SqlDataReader accountReader) en
Microsoft.Dynamics.Integration.Adapters.AX2012GL.AccountObjectProvider.CreateAccount(SqlDataReader reader, Dimension mainAccountDimension, Int64 mainAccountRecId) en Microsoft.Dynamics.Integration.Adapters.AX2012GL.AccountObjectProvider.QueryAccountValues() en
Microsoft.Dynamics.Integration.Adapters.AX2012GL.AccountObjectProvider.ReadObjectKeys(DateTime modifiedDate) en
Microsoft.Dynamics.Integration.Service.Tasks.MapWork.ReadObjectKeyList(DbMap map, DateTime queryDate, Int32& count)at
Microsoft.Dynamics.Integration.Service.Tasks.MapWork.ProcessRecordsImplementation(OperationType operationType)

Causa

Este problema se produce porque un tipo de publicación que existe en la tabla MainAccount de la base de datos AX pero que no existe en el árbol de objetos de aplicación (AOT).

Solución

Para resolver este problema, siga estos pasos:

  1. Ejecute la siguiente instrucción SQL en la base de datos AX para comprobar el tipo de contabilización de las cuentas:

    select distinct (postingtype) from MainAccount
    
  2. Inicie sesión en AX y compruebe el AOT. Para ir a AOT, seleccione Diccionario de datos, enumeraciones base y, a continuación, seleccione LedgerPostingType. Compruebe las propiedades de cada elemento y anote la tabla EnumValues.

  3. Si se encuentran diferencias entre la tabla MainAccount y la tabla EnumValues de AOT, las cuentas que contienen tipos de contabilización no válidos tienen que tener un tipo de contabilización válido establecido.

    Por ejemplo, use la siguiente instrucción para actualizar la tabla MainAccount en la que no existe un tipo de contabilización no válido de 255 en AOT. Esta instrucción establece el tipo de contabilización en un tipo válido de 0.

    update MainAccount set postingtype = 0 where postingtype = 255
    
  4. Al actualizar la tabla MainAccount, tiene que volver a generar Management Reporter Data Mart. Para ello, siga estos pasos:

    1. Seleccione Iniciar y abra la consola de configuración en el servidor.
    2. En el panel de navegación izquierdo, seleccione Integraciones ERP.
    3. Seleccione la integración que se usa y, a continuación, deshabilite la integración; para ello, seleccione Deshabilitar integración.
    4. Seleccione Quitar para quitar la integración de ERP.
    5. Seleccione Management Reporter Services en el panel de navegación izquierdo y detenga ambos servicios de Management Reporter.
    6. Realice una copia de seguridad y elimine la base de datos DDB en Microsoft SQL Management Studio.
    7. Inicie los servicios de Management Reporter.
    8. Seleccione Archivo y, a continuación, seleccione Configurar para volver a configurar la integración de ERP.
    9. Cuando se configure la integración, seleccione la integración en el lado izquierdo de la consola de configuración y, a continuación, seleccione Habilitar integración.