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

ANVEDI Events

Anveo EDI Connect ofrece una única unidad de codeunit para los eventos de integración: Codeunit ANVEDI Events. Puede reaccionar a los eventos de esta codeunit de código a través de su propia codeunit. Los eventos están soportados tanto en la versión FOB como en la versión Extension 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 es llamado cuando el módulo busca funciones personalizadas. Puede definir sus propias funciones utilizando la funcionalidad proporcionada por la codeunit ANVEDI Function Register que se proporciona con el nombre Register. La codeunit proporciona 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 elegirse libremente, pero no pueden superar los 30 caracteres.

Los primeros 29 caracteres de la combinación de objeto y nombre de función deben ser únicos para poder especificar los parámetros desde el mapping. Intente que los nombres sean cortos.

Después de registrar una función, puede llamar a AddParameter hasta 5 veces. AddParameter espera un nombre para el parámetro de su función. Puede utilizar múltiples bloques de RegisterFunction y AddParameter en un Event. Pero recomendamos separar múltiples funciones a múltiples Event listeners.

Register.RegisterFunction('CustomObj', 'MyFunction');
Register.AddParameter('Name');
Register.AddParameter('Value');
Ejemplo: Utilización del registro de funciones

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

OnFunctionExecution

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

El Event se activa cuando el módulo busca la implementación de una función personalizada. A este evento se le pasa una instancia de la codeunit ANVEDI Function Call con el nombre FunctionCall.

Debe comprobar si el FunctionCall coincide con su 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 con los que ha llamado a RegisterFunction en el OnFunctionRegistration. Si Is() devuelve true puede acceder a los parámetros, ejecutar su 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 una llamada de función

La codeunit ANVEDI Function Call proporciona las siguientes funciones:

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

Devuelve si la llamada a la 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 a la función. Puede pasar el resultado de una función, o simplemente utilizar true como resultado.

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

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

procedure GetIntegerParameter(ParNum: Integer): Integer

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

procedure GetBooleanParameter(ParNum: Integer): Boolean

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

procedure GetDecimalParameter(ParNum: Integer): Decimal

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

procedure GetDateParameter(ParNum: Integer): Date

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

procedure GetTimeParameter(ParNum: Integer): Time

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

procedure GetDateTimeParameter(ParNum: Integer): DateTime

Recupera un parámetro con el número dado como tiempo. El índice empieza por 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 devuelve si se ha podido recuperar el parámetro. El índice empieza por 1.

OnJob

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

Puede utilizar la codeunit de trabajos del módulo para definir trabajos personalizados. La codeunit permite el uso de múltiples parámetros. Puede encontrar más información en la documentación del gestor de tareas.

ParamaterDictionary

Un diccionario que contiene los parámetros pasados a la tarea.

EventArgs

Debe establecer el Event como gestionado, si ha procesado un trabajo. La descripción de la estructura 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 es llamada 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, por lo que sólo se puede decidir en función de los metadatos disponibles.

ANVEDITransmission

La transmisión para la que 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

Debe establecer el Event como manejado, si procesó el Event. También debe devolver un valor si procesar la transmisión (establecer el valor de retorno en true); o no (establecerlo en false). La descripción de la estructura 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 ejecuta antes de que el módulo busque nuevos datos. Esto se puede utilizar para emitir un comando externo o script 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

Debe establecer el Event como manejado, si procesó el evento. La descripción de la estructura 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

Debe establecer el Event como manejado, si procesó el Event. La descripción de la estructura ANVEDI Event Args se encuentra al final de este capítulo.

Este código se ejecuta 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 activa antes de recuperar una transmisión. Tenga en cuenta que no puede cancelar el proceso en este momento. Si desea decidir si recuperar o no un mensaje, utilice la función OnAcceptTransmission.

ANVEDITransmission

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

EventArgs

Debe establecer el Event como manejado, si procesó el Event. La descripción de la estructura 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 activa después de recibir una transmisión.

ANVEDITransmission

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

EventArgs

Debe establecer el Event como manejado, si procesó el Event. La descripción de la estructura 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 ejecuta antes de archivar una transmisión.

ANVEDITransmission

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

EventArgs

Debe establecer el Event como manejado, si procesó el Event. La descripción de la estructura 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 activa después de archivar una transmisión.

ANVEDITransmission

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

EventArgs

Debe establecer el Event como manejado, si procesó el Event. La descripción de la estructura 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 ejecuta antes de borrar una transmisión.

ANVEDITransmission

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

EventArgs

Debe establecer el Event como manejado, si procesó el Event. La descripción de la estructura 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 borrar una transmisión.

ANVEDITransmission

La transmisión que se borró de la ubicación remota.

EventArgs

Debe establecer el Event como manejado, si procesó el Event. La descripción de la estructura 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 se activa antes de que se envíe una transmisión.

ANVEDITransmission

La transmisión que se va a enviar.

EventArgs

Debe establecer el Event como manejado, si procesó el Event. La descripción de la estructura 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 activa cuando se compone una transmisión.

ANVEDITransmission

La transmisión que se compone.

EventArgs

Debe establecer el Event como manejado, si procesó el Event. La descripción de la estructura 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 es llamado después de que una transmisión es enviada.

ANVEDITransmission

La transmisión que se envió.

EventArgs

Debe establecer el Event como manejado, si procesó el evento. La descripción de la estructura 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 el nombre de un archivo.

Placeholder

El nombre del marcador de posición. El módulo está buscando actualmente un valor para reemplazar este marcador de posición específico. Si desea proporcionar un valor, debe especificar el resultado y establecer el evento a manejar en el EventArgs.

ANVEDILinkedDocument

Un registro prefiltrado de los documentos vinculados. Puede, por ejemplo, utilizar esta tabla para obtener los documentos del buffer que contiene el fichero.

EventArgs

Debe establecer el Event como manejado, si procesó el Event. También hay que aportar un valor. La descripción de la estructura ANVEDI Event Args se encuentra al final de este capítulo.

El siguiente ejemplo muestra cómo podría devolver 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 activa cuando se produce un error en la cola de procesamiento.

EventArgs

Debe establecer el Event como manejado, si procesó el Event. La descripción de la estructura 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 es llamado después del procesamiento de una entrada en la tabla EDI Processing Queue. Debe comprobar el estado de la entrada aprobada y reaccionar en consecuencia.

EventArgs

Debe establecer el Event como manejado, si procesó el Event. La descripción de la estructura ANVEDI Event Args se encuentra al final de este capítulo.

ANVEDI Event Args

Algunos de los Events utilizan una estructura llamada ANVEDI Event Args. Esta estructura permite devolver valores e indicar al módulo si ha gestionado el evento.

Las siguientes funciones están disponibles en el ANVEDI Event Args pasado al Event:

SetHandled(Value: Boolean)
Value

Si el Event fue manejado por tu 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;
}
Ejemplo completo: Función personalizada

Dependencias

Si quieres reaccionar al Event vía AL, necesitas añadir una dependencia al módulo Anveo EDI Connect.

Los valores para la Extension OnPremise son:

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

Asegúrese de sustituir x, y, z por el número de versión correcto.

Los valores para Business Central Online y Universal Code Extension son:

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

Asegúrese de sustituir x, y, z por el número de versión correcto. Las versiones anteriores de BC llamaban «id» a «appId».