Esta es una traducción automática. El mensaje original está disponible en Inglés.

ANVEDI Events

Anveo EDI Connect ofrece una única codeunit para eventos de integración: Unidad de Codeunit ANVEDI Events. Puedes reaccionar a los eventos de esta unidad de codeunit a través de tu propia codeunit. Los eventos están soportados tanto en la versión FOB como en la versión Extensión de Microsoft Dynamics.

Events

Los Events disponibles son:

  • OnFunctionRegistration
  • OnFunctionExecution
  • OnJob
  • OnAcceptTransmission
  • OnBeforeList
  • OnAfterList
  • OnBeforeReceive
  • OnAfterReceive
  • OnBeforeArchive
  • OnAfterArchive
  • OnBeforeDelete
  • OnAfterDelete
  • OnBeforeSend
  • OnComposeMessage
  • OnAfterSend
  • OnReplacePlaceholder
  • OnError
  • OnAfterProcess

OnFunctionRegistration

procedure OnFunctionRegistration(Register: Codeunit "ANVEDI Function Register")

Este evento se llama cuando el módulo busca funciones personalizadas. Puede definir sus propias funciones utilizando la funcionalidad proporcionada por la codeunit ANVEDI Function Register Register que se proporciona bajo el nombre de Register. La codeunit de código tiene dos funciones: RegisterFunction y AddParameter.

RegisterFunction espera dos parámetros, el nombre del objeto y el nombre de la función de su nueva función. Estos nombres pueden ser elegidos libremente, pero no pueden exceder de 30 caracteres.

Los primeros 29 caracteres de la combinación del nombre del objeto y de la función deben ser únicos para poder especificar los parámetros del mapping. Deberías tratar de mantener los nombres cortos.

Después de registrar una función puedes llamar a AddParameter hasta 5 veces. AddParameter espera un nombre para el parámetro de su función. Puedes usar múltiples bloques de RegisterFunction y AddParameter en un solo Event. Pero recomendamos separar las funciones múltiples a los oyentes Event múltiples.

Register.RegisterFunction('CustomObj', 'MyFunction');
Register.AddParameter('Name');
Register.AddParameter('Value');
Ejemplo: Usando el registro de la función

Después de registrar la función, tienes que reaccionar a las llamadas de la función. Esto se hace mediante el Eventque se describe a continuación.

OnFunctionExecution

procedure OnFunctionExecution(FunctionCall: Codeunit "ANVEDI Function Call")

El Event se llama, cuando el módulo está buscando una implementación de función personalizada. Una instancia de la codeunit ANVEDI Function Call de función se pasa a este evento bajo el nombre de FunctionCall de función.

Deberías comprobar si la llamada a la FunctionCall coincide con tu función personalizada y sólo ejecutar cualquier código, si lo hace. Esto se hace llamando a la función Is() con los mismos parámetros que ha llamado RegisterFunction en el Event. Si Is() devuelve true puedes acceder a los parámetros, ejecutar tu código personalizado y devolver un valor.

if FunctionCall.Is(ObjectNameTok, FunctionNameTok) then begin
            Name := FunctionCall.GetTextParameter(1);
            Val := FunctionCall.GetIntegerParameter(2);
            Message(Name + ': ' + Format(Val));
            FunctionCall.SetResult(TRUE);
 end;
Ejemplo: Reaccionar a la llamada de la función

La codeunit de código ANVEDI Function Call proporciona las siguientes funciones:

procedure Is(ObjectName: Text[30];FunctionName: Text[30]): Boolean

Devuelve si la llamada de función coincide con la firma de función especificada.

procedure SetResult(Value: Variant)

Tienes que llamar a esta función para mostrar al módulo que has manejado la llamada de la función. Puedes pasar un resultado de la función, o simplemente usar true como resultado.

procedure GetTextParameter(ParNum: Integer): Text[1024]

Recupera un parámetro con el número dado como texto. El índice comienza con 1.

procedure GetIntegerParameter(ParNum: Integer): Integer

Recupera un parámetro con el número dado como entero. El índice comienza con 1.

procedure GetBooleanParameter(ParNum: Integer): Boolean

Recupera un parámetro con el número dado como booleano. El índice comienza con 1.

procedure GetDecimalParameter(ParNum: Integer): Decimal

Recupera un parámetro con el número dado como decimal. El índice comienza con 1.

procedure GetDateParameter(ParNum: Integer): Date

Recupera un parámetro con el número dado como fecha. El índice comienza con 1.

procedure GetTimeParameter(ParNum: Integer): Time

Recupera un parámetro con el número dado como fecha y hora. El índice comienza con 1.

procedure GetDateTimeParameter(ParNum: Integer): DateTime

Recupera un parámetro con el número dado como tiempo. El índice comienza con 1.

procedure GetParameter(ParNum: Integer;var EDIVariant: Codeunit "ANVEDI Variant"): Boolean

Recupera un parámetro con el número dado como EDIVariante. La función regresa, si el parámetro pudo ser recuperado. El índice comienza con 1.

OnJob

procedure OnJob(ParameterDictionary: Codeunit "ANVEDI Data Structures";EventArgs: Codeunit "ANVEDI Event Args")

Puedes usar la unidad de codeunit de trabajo del módulo para definir trabajos personalizados. La codeunit de código permite soportar el uso de múltiples parámetros. Puede encontrar más información en la documentación del encargado del trabajo.

ParamaterDictionary

Un diccionario que contiene los parámetros pasados al trabajo.

EventArgs

Deberías poner el Event a manejar, si procesaste un trabajo. La descripción de la estructura de los ANVEDI Event Args se encuentra al final de este capítulo.

OnAcceptTransmission

procedure OnAcceptTransmission(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")

Esta función se llama para determinar si un archivo o mensaje debe ser aceptado o ignorado por el módulo. 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, así que sólo puede decidir en base a los metadatos disponibles.

ANVEDITransmission

La transmisión, para la cual se recuperaron los metadatos. Tenga en cuenta que en este momento no se ha recibido ningún dato y que el registro aún no se ha insertado en la base de datos.

EventArgs

Deberías poner el Event a manejar, si procesaste el Event. También debe devolver un valor si se procesa la transmisión (fije el valor de retorno en true); o no (fije el valor en false). La descripción de la estructura de los ANVEDI Event Args se encuentra al final de este capítulo.

OnBeforeList

procedure OnBeforeList(EDICommunicationChannel: Record "ANVEDI Communication Channel";EventArgs: Codeunit "ANVEDI Event Args")

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

EDICommunicationChannel

El canal de comunicación que debe recuperar los datos.

EventArgs

Deberías poner el Evento a manejar, si procesaste el Event. La descripción de la estructura de los ANVEDI Event Args se encuentra al final de este capítulo.

OnAfterList

procedure OnAfterList(EDICommunicationChannel: Record "ANVEDI Communication Channel";EventArgs: Codeunit "ANVEDI Event Args")
EDICommunicationChannel

El canal de comunicación que debe recuperar los datos.

EventArgs

Deberías poner el Event a manejar, si procesaste el Event. La descripción de la estructura de los ANVEDI Event Args se encuentra al final de este capítulo.

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

OnBeforeReceive

procedure OnBeforeReceive(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")

Este Event se llama antes de que se recupere una transmisión. Por favor, tenga en cuenta que no puede abortar el proceso en este momento. Si desea decidir si desea recuperar un mensaje o no, por favor use el Eventde transmisión de aceptación.

ANVEDITransmission

La transmisión. Los mensajes aún no se han recibido.

EventArgs

Deberías poner el Event a manejar, si procesaste el Event. La descripción de la estructura de los ANVEDI Event Args se encuentra al final de este capítulo.

OnAfterReceive

procedure OnAfterReceive(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")

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

ANVEDITransmission

La transmisión después de ser recuperada (se puede acceder a los mensajes).

EventArgs

Deberías poner el Event a manejar, si procesaste el Event. La descripción de la estructura de los ANVEDI Event Args se encuentra al final de este capítulo.

OnBeforeArchive

procedure OnBeforeArchive(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")

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

ANVEDITransmission

La transmisión que se va a archivar en la ubicación remota.

EventArgs

Deberías poner el Event a manejar, si procesaste el Event. La descripción de la estructura de los ANVEDI Event Args se encuentra al final de este capítulo.

OnAfterArchive

procedure OnAfterArchive(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")

Este Event se llama después de que se archiva una transmisión.

ANVEDITransmission

La transmisión que se archivó en la ubicación remota.

EventArgs

Deberías poner el Event a manejar, si procesaste el Event. La descripción de la estructura de los ANVEDI Event Args se encuentra al final de este capítulo.

OnBeforeDelete

procedure OnBeforeDelete(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")

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

ANVEDITransmission

La transmisión que se va a borrar en la ubicación remota.

EventArgs

Deberías poner el Event a manejar, si procesaste el Event. La descripción de la estructura de los ANVEDI Event Args se encuentra al final de este capítulo.

OnAfterDelete

procedure OnAfterDelete(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")

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

ANVEDITransmission

La transmisión que fue borrada de la ubicación remota.

EventArgs

Deberías poner el Event a manejar, si procesaste el Event. La descripción de la estructura de los ANVEDI Event Args se encuentra al final de este capítulo.

OnBeforeSend

procedure OnBeforeSend(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")

Este Event es llamado antes de que se envíe una transmisión.

ANVEDITransmission

La transmisión que se va a enviar.

EventArgs

Deberías poner el Event a manejar, si procesaste el Event. La descripción de la estructura de los ANVEDI Event Args se encuentra al final de este capítulo.

OnComposeMessage

procedure OnComposeMessage(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")

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

ANVEDITransmission

La transmisión que se compone.

EventArgs

Deberías poner el Event a manejar, si procesaste el Event. La descripción de la estructura de los ANVEDI Event Args se encuentra al final de este capítulo.

OnAfterSend

procedure OnAfterSend(ANVEDITransmission: Record "ANVEDI Transmission";EventArgs: Codeunit "ANVEDI Event Args")

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

ANVEDITransmission

La transmisión que fue enviada.

EventArgs

Deberías poner el Evento a manejar, si procesaste el Event. La descripción de la estructura de los ANVEDI Event Args se encuentra al final de este capítulo.

OnReplacePlaceholder

procedure OnReplacePlaceholder(Placeholder: Text[50];var ANVEDILinkedDocument: Record "ANVEDI Linked Document";EventArgs: Codeunit "ANVEDI Event Args")

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

Placeholder

El nombre del marcador de posición. El módulo está buscando un valor para reemplazar este marcador de posición específico. Si quieres proporcionar un valor, tienes que establecer especificar el resultado y configurar el evento para que se maneje en el EventArgs.

ANVEDILinkedDocument

Un registro prefiltrado de los documentos vinculados. Puede, por ejemplo, utilizar esta tabla para obtener los documentos de la memoria intermedia que se encuentran en el archivo.

EventArgs

Deberías poner el Event a manejar, si procesaste el Event. También tienes que proporcionar un valor. La descripción de la estructura de los ANVEDI Event Args se encuentra al final de este capítulo.

El siguiente ejemplo muestra cómo se podrían devolver los datos del documento vinculado:

[EventSubscriber(ObjectType::Codeunit, Codeunit::="" Events="" TRUE,="" TRUE)]=""]
local procedure OnReplacePlaceholderExternalDocumentNo(Placeholder: Text[50];var ANVEDILinkedDocument: Record "ANVEDI Linked Document";EventArgs: Codeunit "ANVEDI Event Args")
var
  recID: RecordID;
  ediDocument: Record "ANVEDI Document";
begin
  if Placeholder = 'ExternalDocumentNo' then begin
    if ANVEDILinkedDocument.FindSet() then 
      repeat
        recID := ANVEDILinkedDocument.RecordId;
        if recID.TableNo = Database::"ANVEDI Document" then begin
          ediDocument.get(recID);
          EventArgs.SetResult(ediDocument."External Document No.");
          EventArgs.SetHandled(true);
          exit;
        end;
      until ANVEDILinkedDocument.Next() = 0;
  end;
end;
Ejemplo: OnReplacePlaceholder

OnError

procedure OnError(ANVEDIProcessingQueue: Record "ANVEDI Processing Queue";EventArgs: Codeunit "ANVEDI Event Args")

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

EventArgs

Deberías poner el Event a manejar, si procesaste el Event. La descripción de la estructura de los ANVEDI Event Args se encuentra al final de este capítulo.

OnAfterProcess

procedure OnAfterProcess(ANVEDIProcessingQueue: Record "ANVEDI Processing Queue";EventArgs: Codeunit "ANVEDI Event Args")

Este Event se llama después del procesamiento de una entrada en la tabla Cola de Procesamiento EDI Processing Queue. Deberías comprobar el estado de la entrada aprobada y reaccionar en consecuencia.

EventArgs

Deberías poner el Event a manejar, si procesaste el Event. La descripción de la estructura de los ANVEDI Event Args se encuentra al final de este capítulo.

ANVEDI Event Args

Algunos de los Events usan una estructura llamada ANVEDI Event Args. Esta estructura le permite devolver valores y decirle al módulo si ha manejado el evento.

Las siguientes funciones están disponibles en los Archivos ANVEDI Event Args pasados al Event:

SetHandled(Value: Boolean)
Value

Si el Event fue manejado por su código.

SetResult(Value: Variant)
Value

El valor de retorno, si el Event espera un valor de retorno.

Ejemplo

El siguiente ejemplo muestra, cómo puede añadir su propia función personalizada «MYOBJECT.MYFUNC», que muestra un mensaje que contiene el nombre proporcionado seguido de ‘: ‘ y el valor. Puedes añadir tantas funciones de tantas extensiones como necesites.

codeunit 50100 MyAnveoFunctions
{
    var
        ObjectNameTok: label 'MYOBJECT';
        FunctionNameTok: label 'MYFUNC';


    [EventSubscriber(ObjectType::Codeunit, Codeunit::="" Events="" TRUE,="" TRUE)]=""]
    local procedure OnRegisterFunctions(Register: Codeunit "ANVEDI Function Register")
    begin
        Register.RegisterFunction(ObjectNameTok, FunctionNameTok);
        Register.AddParameter('Name');
        Register.AddParameter('Value');
    end;

    [EventSubscriber(ObjectType::Codeunit, Codeunit::="" Events="" TRUE,="" TRUE)]=""]
    local procedure OnFunction(FunctionCall: Codeunit "ANVEDI Function Call")
    var
        Name: Text;
        Val: Integer;
    begin
        if FunctionCall.Is(ObjectNameTok, FunctionNameTok) then begin
            Name := FunctionCall.GetTextParameter(1);
            Val := FunctionCall.GetIntegerParameter(2);
            Message(Name + ': ' + Format(Val));
            FunctionCall.SetResult(TRUE);
        end;
    end;
}
Un ejemplo completo: Función personalizada

Dependencias

Si quieres reaccionar al Event a través de AL, necesitas añadir una dependencia al módulo Anveo EDI Connect.

Los valores de la Extensión en el lugar son:

{
      "appId": "25286BD2-B08A-49F9-B613-64122CCEE4E1",
      "name": "Anveo EDI Connect - OnPremise",
      "publisher": "conion media GmbH",
      "version": "5.x.y.z"
}

Por favor, asegúrate de reemplazar x, y, z con el número de versión correcto.

Los valores de la Extensión Online de Business Central son:

{
      "appId": "FC195C4F-19BF-4167-BFE8-6D1FF7D266BC",
      "name": "Anveo EDI Connect",
      "publisher": "conion media GmbH",
      "version": "5.x.y.z"
}

Por favor, asegúrate de reemplazar x, y, z con el número de versión correcto.