ANVEDI Integration
La unidad de codeunit de ANVEDI Integration contiene todas las llamadas públicas de la API al módulo EDI, puede que quieras llamar desde tu código personalizado. Se supone que todas las funciones de esta unidad de codeunit deben ser usadas, si quieres iniciar directamente una acción EDI por código.
Conceptos generales
En esta sección discutiremos primero los conceptos básicos, que deben entender para poder leer los ejemplos de código.
Transacciones del usuario
Anveo EDI Connect tiene un concepto denominado «transacciones de usuario», que puede abarcar múltiples transacciones de la base de datos y recoger múltiples errores. La mayoría de las acciones en Anveo EDI Connect requerirán una transacción de usuario abierta para ejecutarlas. Puede iniciar una transacción de usuario llamando:
La llamada a END_USER_TRANSACTION permite mostrar errores, romper la transacción actual de la base de datos u obtener un valor de retorno, si hubo un error. Lo discutiremos en detalle más tarde.
BEGIN_USER_TRANSACTION
Inicia una nueva transacción de usuario. Tenga en cuenta que sólo se integran las llamadas en el módulo EDI en los puntos en los que puede tener lugar un COMITÉ. En muchos casos, el módulo confirmará todos los cambios de la base de datos antes de ejecutar la lógica del EDI. También considere simplemente marcar los datos y usar un trabajo de fondo para ejecutar la lógica del EDI.
Si se abre un diálogo de espera, se muestra al usuario el texto dado, porque el proceso lleva tiempo.
Siempre debes terminar una llamada a BEGIN_USER_TRANSACTION con una llamada a END_USER_TRANSACTION.
SHOWDIALOGS
Esta función puede utilizarse para ocultar cualquier diálogo EDI.
El parámetro especifica si los diálogos se muestran o no. Una llamada a esta función tiene que ser dentro de una transacción de usuario. Normalmente llamará a esta función directamente después de BEGIN_USER_TRANSACTION.
ISPROCESSING
Esta función devuelve si está dentro de una ejecución mapping. Puede verificar este valor al validar los disparadores, por ejemplo, para lograr un comportamiento diferente al procesar procesos EDI. También puede utilizar este valor para visualizar los diálogos de entrada sólo cuando no esté procesando EDI.
END_USER_TRANSACTION
Esta función pondrá fin a una transacción de usuario.
Si se produjeron errores durante la transacción, mostrarlos en un diálogo al usuario final. Este parámetro no tiene ningún efecto, si GUIALLOWED es False.
Si el módulo debe lanzar un error, rompiendo el flujo de proceso actual. Todo el código después de esta línea no se ejecuta, si hubo un error durante la transacción. Si se ajusta este parámetro a True, se mostrará un mensaje de error que indica que se han producido uno o más errores, si es que los ha habido. En este caso el usuario no puede ver la lista completa de errores.
Un valor de retorno, haya habido o no un error. Retorna True en el éxito, es decir no hubo errores; False de otra manera.
El valor de retorno se denominaba de forma diferente en las versiones antiguas del módulo, pero tenía la misma función. El antiguo nombre del valor de retorno era incorrecto, la función siempre retornaba True en el éxito.
Trabajar con transacciones comerciales
RUN_BUSINESSTRANSACTION_JOB
Ejecuta el trabajo de recolección de datos de un tipo de transacción comercial específico. Esto tiene que ser llamado desde el interior de una transacción de usuario.
Código del tipo de transacción comercial.
START_BT_WITH_REC
Comienza una nueva transacción comercial para el código y la identificación de registro dados.
RUN_BT_BATCH_JOB
Ejecuta el trabajo de recolección de lotes con el nombre especificado. Esto tiene que ser llamado desde el interior de una transacción de usuario.
Acciones
A veces se quiere crear un botón en una página para iniciar un proceso de EDI, o se quiere integrar, por ejemplo, en el proceso de liberación. En este caso se pueden ejecutar casi todas las acciones del módulo desde el código. Por favor, tenga en cuenta que los procesos de EDI normalmente deben ser automatizados y ejecutados en segundo plano. Así que antes de añadir acciones en código, considere la posibilidad de un trabajo de fondo como una alternativa.
Ejecutar un Mapping EDI
Para ejecutar un Mapping EDI necesitaremos iniciar una transacción de usuario. Después podríamos querer pasar los datos al mapping. Podemos entonces ejecutar el mapping y comprobar el resultado cuando terminemos la transacción del usuario. Encontrará la descripción detallada de los comandos después del ejemplo de código.
RESET_TABLEVIEWS
Restablece todas las vistas de tablas almacenadas existentes. Tiene que ser llamado desde el interior de una transacción de usuario.
SET_TABLEVIEW
Almacena una vista de tabla con un nombre específico. Tiene que ser llamado desde el interior de una transacción de usuario.
Un código que representa el nombre del filtro. Tendrá que especificar exactamente el mismo nombre en el EDI Mapping para recuperar el filtro.
El texto del filtro en forma de una vista de tabla de Anveo EDI Connect. Deberías usar la función incorporada de Microsoft Dynamics NAV 2018 GETVIEW, si es posible, para obtener la cadena correctamente formateada.
GET_TABLEVIEW
Recupera un filtro almacenado. Tiene que ser llamado desde el interior de una transacción de usuario.
RUN
Ejecute uno o más mapeos EDI. Tiene que ser llamado desde el interior de una transacción de usuario.
El código del proyecto o una cadena de filtro que coincida con el código del proyecto.
El código del formato mapping o una cadena de filtro que coincida con el código del formato.
El código del mapping o un filtro que coincida con los códigos de mapping deseados.
Si deben ejecutarse múltiples mapeos en caso de que se especifique un filtro. Esta es una característica de seguridad, que impide que se ejecute más de un mapping.
Si el post-procesamiento debe ser ejecutado. Normalmente quieres poner esto en True.
Un filtro en los post-procesos. Normalmente puedes querer pasar en una cuerda vacía.
Otras acciones
RECEIVE_ALL
Función desaprobada. Debes evitar llamar a la función general y llamar a una de las más específicas a continuación.
Recibe todos los canales de comunicación. Esta función tiene que ser llamada desde el interior de una transacción de usuario.
RECEIVE_FOLDER
Recibe los datos de la carpeta de transmisión especificada o de las carpetas. Esta función debe ser llamada desde el interior de una transacción de usuario.
El código del filtro de transmisión o una cadena de filtro en el campo de código.
Si el post-procesamiento debe ser ejecutado. Normalmente quieres poner esto en True.
Un filtro en los post-procesos. Normalmente puedes querer pasar en una cuerda vacía.
RECEIVE_COMMUNICATIONCHANNEL
Recibe datos del canal de comunicación especificado. Esta función tiene que ser llamada desde el interior de una transacción de usuario.
El código del canal de comunicación o una cadena de filtro en el campo de código.
Si el post-procesamiento debe ser ejecutado. Normalmente quieres poner esto en True.
Un filtro en los post-procesos. Normalmente puedes querer pasar en una cuerda vacía.
SEND_ALL
Función desaprobada. Debes evitar llamar a la función general y llamar a una de las más específicas a continuación.
Envía todos los canales de comunicación. Esta función tiene que ser llamada desde el interior de una transacción de usuario.
Si el post-procesamiento debe ser ejecutado. Normalmente quieres poner esto en True.
Un filtro en los post-procesos. Normalmente puedes querer pasar en una cuerda vacía.
SEND_FOLDER
Envía transmisiones abiertas de la carpeta de transmisión especificada. Esta función tiene que ser llamada desde el interior de una transacción de usuario.
El código de la carpeta de transmisión o una cadena de filtro en el campo de código.
Si el post-procesamiento debe ser ejecutado. Normalmente quieres poner esto en True.
Un filtro en los post-procesos. Normalmente puedes querer pasar en una cuerda vacía.
SEND_COMMUNICATIONCHANNEL
Envía transmisiones abiertas del canal de comunicación especificado. Esta función tiene que ser llamada desde el interior de una transacción de usuario.
El código del canal de comunicación o una cadena de filtro en el campo de código.
Si el post-procesamiento debe ser ejecutado. Normalmente quieres poner esto en True.
Un filtro en los post-procesos. Normalmente puedes querer pasar en una cuerda vacía.
PROCESS
Si el post-procesamiento debe ser ejecutado. Normalmente quieres poner esto en True.
Un filtro en los post-procesos. Normalmente puedes querer pasar en una cuerda vacía.
Si sólo se deben procesar los post-tratamientos de la transacción del usuario actual.
Establecer el receptor / remitente
SET_COMMUNICATION_CHANNEL
Establece el canal de comunicación para la siguiente llamada de mapping dentro de la transacción del usuario.
El código del canal de comunicación.
SET_RECEIVER_PARTNER
Establece el compañero receptor para la siguiente llamada de mapping dentro de la transacción de usuario.
El código del compañero receptor.
SET_RECEIVER_IDENTIFICATION
Establece la identificación del receptor para la siguiente llamada de mapping dentro de la transacción del usuario.
La identificación del receptor. Se trata de un texto libre, que puede tener un significado especial en canales de comunicación específicos.
SET_SENDER_PARTNER
Establece el socio remitente para la siguiente llamada de mapping dentro de la transacción del usuario.
El código de socio remitente.
SET_SENDER_IDENTIFICATION
Establece la identificación del remitente para la siguiente llamada de mapping dentro de la transacción del usuario.
La identificación del receptor. Se trata de un texto libre, que puede tener un significado especial en canales de comunicación específicos.
Registro y manejo de errores
Las siguientes funciones sólo pueden ser llamadas mientras se ejecuta un mapping. Estas funciones están pensadas para ser utilizadas por los gestores de errores personalizados a partir del código.
LogError
Registra un mensaje de error.
El mensaje de error. La ejecución continuará después de esta llamada. Para interrumpir el flujo de control, use la función nativa de ERROR.
LogWarning
Registra una advertencia.
El texto de la advertencia.
LogInformation
Registra la información.
La información a registrar.
LogDocumentError
Registra un error perteneciente a un documento EDI. Hay una función más universal llamada LogRecIDErrorWithCode.
El mensaje de error.
El documento EDI al que pertenece el error.
LogDocumentWarning
Registra una advertencia perteneciente a un documento EDI. Hay una función más universal llamada LogRecIDWarningWithCode.
La advertencia debe ser registrada.
El documento EDI al que pertenece el error.
LogDocumentInformation
Registra una información que pertenece a un documento EDI. Hay una función más universal llamada LogRecIDInformationWithCode.
La información a registrar.
El documento EDI al que pertenece el error.
LogDocumentLineError
Registra un error perteneciente a una línea de documentos EDI. Hay una función más general llamada LogRecIDErrorWithCode.
El mensaje de error a registrar.
La línea de documento EDI a la que pertenece el error.
LogDocumentLineWarning
Registra una advertencia perteneciente a una línea de documentos EDI. Hay una función más general llamada LogRecIDWarningWithCode.
La advertencia que debe ser registrada.
La línea de documento EDI a la que pertenece el error.
LogDocumentLineInformation
Registra una información que pertenece a una línea de documentos EDI. Hay una función más general llamada LogRecIDInformationWithCode.
La información a registrar.
La línea de documento EDI a la que pertenece el error.
LogErrorWithCode
Registra un error con un código de error adicional.
Ya sea para romper el flujo de control o para continuar con la ejecución
El mensaje de error a registrar.
Un código para identificar el error.
LogWarningWithCode
Registra una advertencia con un código de error adicional.
La advertencia que debe ser registrada.
Un código para identificar el error.
LogInformationWithCode
Registra una información con un código de error adicional.
La información que debe ser registrada.
Un código para identificar el error.
LogRecIDErrorWithCode
Registra un mensaje de error que debería pertenecer a un registro específico.
Ya sea para romper el flujo de control o continuar la ejecución.
El mensaje de error a registrar.
La identificación del registro al que pertenece el error.
Un código de error para identificar el error.
Si el error puede ser aceptado por el usuario final. Esto requerirá un código de error no vacío.
LogRecIDWarningWithCode
Registra una advertencia que debería pertenecer a un registro.
La advertencia que debe ser registrada.
La identificación del registro al que debe pertenecer la advertencia.
Un código para identificar la entrada de la bitácora.
LogRecIDInformationWithCode
Registra una información que debería pertenecer a un registro.
La información que debe ser registrada.
La identificación de registro a la que la información debe pertenecer.
Un código para identificar la entrada de la bitácora.