This is an automatic translation. The original post is available in Inglés.

ANVEDI Callback

La información de esta página es para instalaciones locales que utilizan únicamente los archivos FOB. Próximamente añadiremos más funcionalidades para modificar el comportamiento utilizando el sistema de eventos de Dynamics. Esta también será la forma preferida, si estás usando las Extensions, pero también estará disponible desde la versión FOB, si tu versión de Dynamics lo soporta.

El Codeunit ANVEDI Callback con el ID 5327310 es el punto central si desea cambiar el comportamiento de Anveo EDI Connect. Mantenemos la API de esta Codeunit constante, para que no tenga que sobrescribir este objeto cuando actualice nuestro módulo. Hay varias funciones que usted puede modificar y algunas funciones de ayuda que no deben modificarse. Si ha actualizado el módulo y no encuentra una función de ayuda que podría haber sido añadida en una versión más reciente, hay un segundo objeto llamado EDI Callback - Template con ID 5327313 donde encontrará la nueva funcionalidad.

OnFunction

El módulo le permite definir su propia funcionalidad, que puede ser llamada desde los mapeos EDI. Debería utilizar la expresión de casos predefinida y añadir llamadas a las funciones incorporadas FunctionName..FunctionName5.

No debe poner ningún código fuera de la estructura de casos predefinida, ya que esta función se puede llamar con bastante frecuencia y cualquier código adicional puede tener un impacto negativo en el rendimiento.

Ejemplo: Función»Hello World» en OnFunction

El número al final de la función de ayuda local FunctionName define el recuento de parámetros. Se pueden definir funciones con un máximo de cinco parámetros. Puede acceder al contenido de los parámetros llamando a las funciones GetTextParameter(ParNumber) y a las funciones similares para otros tipos de datos. El número de parámetro se cuenta desde «1» hasta «5».

Cada función tiene que devolver un valor llamando a la función local con el nombre FunctionResult.

Debería llamar la función FunctionResult sólo una vez. Es una buena práctica añadir una instrucción EXIT directamente después para evitar llamar a la función varias veces.

Aquí una lista completa de las funciones disponibles para utilizar en la sentencia CASE. A partir de Anveo EDI Connect 4.00:

  • FunctionName(ObjectName: Text; FunctionName: Text)
  • FunctionName1(ObjectName: Text; FunctionName: Text; ParamName1: Text)
  • FunctionName2(ObjectName: Text; FunctionName: Text; ParamName1: Text; ParamName2: Text)
  • FunctionName3(ObjectName: Text; FunctionName: Text; ParamName1: Text; ParamName2: Text; ParamName3: Text)
  • FunctionName4(ObjectName: Text; FunctionName: Text; ParamName1: Text; ParamName2: Text; ParamName3: Text; ParamName4: Text)
  • FunctionName5(ObjectName: Text; FunctionName: Text; ParamName1: Text; ParamName2: Text; ParamName3: Text; ParamName4: Text; ParamName5: Text)

Aquí una lista de la función que puede utilizar para acceder a los parámetros:

  • GetTextParameter(ParNum : Integer) : Text
    • Obtiene el parámetro e intenta convertirlo en texto de tipo de datos.
  • GetIntegerParameter(ParNum : Integer) : Integer
    • Obtiene el parámetro e intenta lanzarlo a un entero de tipo de datos.
  • GetBooleanParameter(ParNum : Integer) : Boolean
    • Obtiene el parámetro e intenta lanzarlo al tipo de datos booleano.
  • GetDecimalParameter(ParNum : Integer) : Decimal
    • Obtiene el parámetro e intenta lanzarlo al tipo de datos decimal.
  • GetDateParameter(ParNum : Integer) : Date
    • Obtiene el parámetro e intenta lanzarlo al tipo de datos date.
  • GetTimeParameter(ParNum : Integer) : Time
    • Obtiene el parámetro y trata de fundirlo en el tipo de datos tiempo.
  • GetDateTimeParameter(ParNum : Integer) : DateTime
    • Obtiene el parámetro e intenta lanzarlo al tipo de datos fecha/hora.
  • GetParameter(ParNum : Integer;VAR EDIVariant : Codeunit
    • Obtiene el parámetro como una instancia de la ANVEDI Variant Codeunit.

CallbackRegistration

Esta función se llama cada vez que ocurre algo en el módulo al que se puede reaccionar. La función contiene una estructura de caso, en la que se puede comprobar el parámetro pasado CallbackSupport lo que sucedió.

No debe poner ningún código fuera de la estructura de casos predefinida, ya que esta función se puede llamar con bastante frecuencia y cualquier código adicional puede tener un impacto negativo en el rendimiento.

Esta estructura puede parecer inusual para los desarrolladores de C/AL, pero de esta manera podemos añadir funcionalidad, sin necesidad de actualizar la Codeunit ANVEDI Callback.

Los eventos disponibles están definidos por el ANVEDI Callback Support Codeunit. En las siguientes secciones discutiremos los eventos disponibles.

OnJobCallback

Puede utilizar la codeunit trabajo del módulo para definir trabajos personalizados. La codeunit permite soportar el uso de múltiples parámetros. Encontrará más información sobre la documentación del gestor de jobs.

OnAcceptTransmission

Esta función se llama para determinar si el módulo debe aceptar o ignorar un fichero o mensaje. El módulo no almacena si una transmisión fue ignorada y llamará a esta función cada vez que vea una transmisión. El archivo aún no se ha leído, por lo que sólo puede decidir en función de los metadatos disponibles.

Parámetros:

EDITransmission

Un registro de la tabla EDI Transmission con los datos conocidos hasta ahora. El registro aún no está escrito.

Si reacciona a este evento, tiene que llamar la siguiente función:

Parámetros:

Result

Recibir o no la transmisión. El valor True significa que desea recibir los datos, el valor False que desea ignorar la transmisión.

EDITransmission

Debe pasar el registro de la llamada OnAcceptTransmission a este parámetro.

Ejemplo: OnAcceptTransmisión

OnBeforeList

Este código se llama antes de que el módulo busque nuevos datos. Esto se puede utilizar para emitir un comando o script externo para recibir los archivos, antes de que el módulo busque nuevos datos.

Parámetros:

EDICommunicationChannel

Especifica un registro de datos de la tabla de EDI Communication Channel para el que se deben buscar nuevos mensajes.

Este evento no requiere una llamada a otra función ya que no soporta ningún valor de retorno.

OnAfterList

Este código se llama después de que el módulo haya buscado nuevos datos.

Parámetros:

EDICommunicationChannel

Especifica un registro de datos de la tabla de EDI Communication Channel.

Este evento no requiere una llamada a otra función ya que no soporta ningún valor de retorno.

OnBeforeReceive

Este evento se llama antes de recuperar una transmisión.

Parámetros:

EDITransmission

Especifica un registro de datos de la tabla de EDI Transmission.

Este evento no requiere una llamada a otra función ya que no soporta ningún valor de retorno.

OnAfterReceive

Este evento se llama después de recibir una transmisión.

Parámetros:

EDITransmission

Especifica un registro de datos de la tabla de EDI Transmission.

Este evento no requiere una llamada a otra función ya que no soporta ningún valor de retorno.

OnBeforeArchive

Este evento se llama antes de que se archive una transmisión.

Parámetros:

EDITransmission

Especifica un registro de datos de la tabla de EDI Transmission.

Este evento no requiere una llamada a otra función ya que no soporta ningún valor de retorno.

OnAfterArchive

Este evento se llama después de archivar una transmisión.

Parámetros:

EDITransmission

Especifica un registro de datos de la tabla de EDI Transmission.

Este evento no requiere una llamada a otra función ya que no soporta ningún valor de retorno.

OnBeforeDelete

Este evento se llama antes de que se borre una transmisión.

Parámetros:

EDITransmission

Especifica un registro de datos de la tabla de EDI Transmission.

Este evento no requiere una llamada a otra función ya que no soporta ningún valor de retorno.

OnAfterDelete

Este evento se llama después de que se borre una transmisión.

Parámetros:

EDITransmission

Especifica un registro de datos de la tabla de EDI Transmission.

Este evento no requiere una llamada a otra función ya que no soporta ningún valor de retorno.

OnBeforeSend

Este evento se llama antes de que se envíe una transmisión.

Parámetros:

EDITransmission

Especifica un registro de datos de la tabla de EDI Transmission.

Cuando se reacciona a este evento hay que llamar a la función:

Result

Si enviar la transmisión. El valor True significa que la transmisión debe ser enviada.

EDITransmission

La transmisión que recibiste con la llamada de evento.

OnComposeMessage

Este evento se llama cuando se compone una transmisión.

Parámetros:

EDITransmission

Especifica un registro de datos de la tabla de EDI Transmission.

Este evento no requiere una llamada a otra función ya que no soporta ningún valor de retorno.

OnAfterSend

Este evento se llama después de que se envía una transmisión.

Parámetros:

EDITransmission

Especifica un registro de datos de la tabla de EDI Transmission.

Cuando se reacciona a este evento hay que llamar a la función:

Result

El resultado se ignora actualmente.

EDITransmission

La transmisión que recibiste con la llamada de evento.

OnReplacePlaceholder

Esta función se llama cuando se evalúa un string que puede contener variables definidas por el usuario, como un nombre de fichero.

Puede encontrar un ejemplo a continuación:

Código de ejemplo: OnReplacePlaceholder

Parámetros:

Placeholder

El nombre de la variable entre los corchetes rizados para los que se busca un valor.

Al reaccionar a este evento, debe llamar a la función:

Parámetros:

Result

Si desea devolver un valor. Si devuelve True debe especificar un valor para la variable. Puede anular variables del sistema.

Value

El valor que se debe utilizar.

OnError

Este evento se llama cuando se produce un error en la cola de procesamiento.

Parámetros:

EDIProcessingQueue

Una instancia de la tabla EDI Processing Queue cuyo tratamiento falló.

AfterProcess

Este evento se llama después de procesar una entrada en la tabla EDI Processing Queue. Debe verificar el status de la entrada pasada y reaccionar en consecuencia.

Parámetros:

EDIProcessingQueue

Una instancia de la tabla EDI Processing Queue que se procesó.

LookupLinkedDocument

Esta función se llama desde la lista de documentos enlazados, si el usuario desea abrir la página de la tarjeta. Hay algunas páginas predefinidas en el módulo e intentamos volver a la página de búsqueda por defecto, en caso de que esta función devuelva False.

RecRef

El registro para el cual el usuario desea abrir la página.

Valor de retorno

Un valor booleano. Devuelve el valor True, si la página fue abierta por esta función; False en caso contrario.

Código de ejemplo: Abrir la página de la tarjeta para la orden de venta

BeforeConvert

Esta función se llama antes de iniciar una asignación. La llamada está dentro de la transacción de base de datos de la asignación. Puede cancelar la ejecución de la asignación, antes de que ésta haya comenzado, devolviendo el valor True. En general, no recomendamos utilizar esta función. Si desea llamar a un código personalizado, por favor utilice la nueva función CallbackRegistration o la funcionalidad OnFunction.

AfterConvert

Esta función se llama después de que una asignación ha finalizado con éxito. La llamada está dentro de la transacción de base de datos de la asignación. En general, no recomendamos utilizar esta función. Si desea llamar a un código personalizado, por favor utilice la nueva función CallbackRegistration o la funcionalidad OnFunction.

En Anveo EDI Connect 4.00 añadimos a los eventos la función CallbackRegistration llamada OnError y AfterProcess. Por favor, utilice la nueva funcionalidad, si es posible.

Referencias cruzadas

Puede definir su propia lógica de referencias cruzadas. Esta funcionalidad se llama, cuando la clase de referencia cruzada está configurada para la callback. A menudo recomendamos usar mapeos en lugar de código de devolución de llamada personalizado para facilitar la lectura de los mapeos. El código de referencia cruzada personalizado es, desde nuestro punto de vista, más difícil de mantener.

ValidateCrossReferenceNumber

Verifique si un número de referencia externo es válido.

esta función está obsoleta y no debería utilizarse.

GetInternalNo

Devuelve un número interno de uno externo.

GetExternalNo

Devuelve un número externo de uno interno.

UpdateCrossReference

Se llama si el usuario intenta actualizar una referencia cruzada.

Funciones desaprobadas

La funcionalidad que se muestra a continuación sólo se ha implementado parcialmente y, por lo tanto, no es segura. Recomendamos utilizar los filtros de seguridad predeterminados de Microsoft Dynamics 365 Business Central y dejar las dos funciones vacías.

ApplyUserFilter

Le permite filtrar los datos pasados de manera que el usuario pueda cambiar el filtro más adelante. El uso de esta función ya no es recomendable. La función puede ser eliminada en versiones más recientes.

ApplySecurityFilter

Le permite filtrar los datos de manera que el usuario no pueda cambiar el filtro. Esta función no se llama en todos los casos. El uso de esta función ya no es recomendable. La función puede ser eliminada en versiones más recientes.