Estoy escribiendo una integración con Dynamics AX, llamando a un servicio web entrante para crear una entrada de libreta de direcciones global.

La solicitud de creación contiene un cuerpo de entidad

<DirPartyTable xsi:type="ns0:Axd_DirPartyTable_DirOrganization">

El servicio web rechaza esto quejándose de este nombre de tipo de entidad, con el mensaje de error:

Error: nombre de tipo de instancia no válido 'ns0: AxdEntity_DirPartyTable_DirOrganization'.

Todos los tipos y nombres se generan a partir del servicio WSDL. Para otras integraciones, manipular la solicitud con sustitución de cadenas para eliminar este prefijo de espacio de nombres hace que la solicitud sea aceptada.

¿Por qué AX no permite este atributo perfectamente válido y qué configuración tengo que hacer para que así sea?

El trasfondo de esta pregunta es que estoy desarrollando la integración externa y no sé casi nada sobre AX, pero es poco probable que obtenga el tiempo de alguien que conozca el producto a menos que pueda demostrar que hay una solución simple al problema. que hackearlo al final.

1
Tom W 16 oct. 2018 a las 17:55

2 respuestas

La mejor respuesta

Resultó que la razón era que la lista de valores separados por punto y coma proporcionada como contenido del elemento Roles incluía un valor que no se reconoció. Aparentemente, esto coincide con una lista desplegable que tiene ciertos valores preconfigurados. Por supuesto, el mensaje de error no indica que sea aquí donde radica el problema.

0
Tom W 22 oct. 2018 a las 12:07

Si bien no me he encontrado con este escenario exacto, habiendo escrito varias integraciones para AX en el pasado, lo que me llama la atención de inmediato es que está tratando de insertar datos en una tabla que se basa en la herencia de la tabla.

Esto significa que la tabla no existe realmente en SQL, es solo una abstracción agregada por AX / X ++ para un desarrollo más fácil. DirPartyTable es la tabla "real" en SQL, DirOrganization es la abstracción heredada en AX que agrega más campos a la tabla principal DirPartyTable. DirPerson es otra tabla que hereda de DirPartyTable. La cuestión es que ni DirOrganization ni DirPerson existen en SQL, ambos son en realidad hijos diferentes de DirPartyTable agregando lógica X ++ y campos adicionales a sus respectivas "tablas". Esto podría terminar causando problemas con las entidades, ya que sé que la herencia de tablas me ha causado algunos problemas en el pasado.

Si tiene un recurso de desarrollador de AX, le pediría que investigue esta línea de pensamiento y vea si la herencia de la tabla le está causando problemas.

En cuanto a qué configuración se necesitaría para que sea válida, no tengo esa respuesta para ti.

0
rjv 16 oct. 2018 a las 15:28