Esta é uma tradução automática. O post original está disponível em Inglês .

ANVEDI Events

Anveo EDI Connect oferece uma única codeunit para eventos de integração: ANVEDI Events da Codeunit ANVEDI Events. Você pode reagir aos eventos nesta codeunit através da sua própria codeunit. Os eventos são suportados tanto na versão FOB como na versão Extension da Microsoft Dynamics.

Events

Os Events disponíveis são:

  • 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 é chamado quando o módulo procura por funções personalizadas. Você pode definir suas próprias funções usando a funcionalidade fornecida pela codeunit ANVEDI Function Register que é fornecida sob o nome Register. A codeunit oferece duas funções: RegisterFunction e AddParameter.

RegisterFunction espera dois parâmetros, o nome do objeto e o nome da função da sua nova função. Estes nomes podem ser escolhidos livremente, mas não podem exceder 30 caracteres.

Os primeiros 29 caracteres da combinação de objeto e nome da função precisam ser únicos para poder especificar os parâmetros do mapping. Devias tentar manter os nomes curtos.

Após registar uma função, pode chamar o AddParameter até 5 vezes. AddParameter espera um nome para o parâmetro da sua função. Você pode usar vários blocos de RegisterFunction e AddParameter em um único Event. Mas recomendamos separar múltiplas funções para múltiplos ouvintes de Event.

Register.RegisterFunction('CustomObj', 'MyFunction');
Register.AddParameter('Name');
Register.AddParameter('Value');
Exemplo: Usando o registro de funções

Depois de registrar a função, você tem que reagir às chamadas de função. Isto é feito pelo Eventdescrito a seguir.

OnFunctionExecution

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

O Event é chamado, quando o módulo está pesquisando para uma implementação de função personalizada. Uma instância da codeunit ANVEDI Function Call é passada para este evento sob o nome FunctionCall.

Você deve verificar se a FunctionCall corresponde à sua função personalizada e só deve executar qualquer código, se corresponder. Isto é feito chamando a função Is() com os mesmos parâmetros que você chamou de RegisterFunction no Event. Se Is() retorna verdadeiro você pode acessar os parâmetros, executar seu código personalizado e retornar um valor.

if FunctionCall.Is(ObjectNameTok, FunctionNameTok) then begin
            Name := FunctionCall.GetTextParameter(1);
            Val := FunctionCall.GetIntegerParameter(2);
            Message(Name + ': ' + Format(Val));
            FunctionCall.SetResult(TRUE);
 end;
Exemplo: Reagir à chamada de função

A codeunit ANVEDI Function Call fornece as funções seguintes:

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

Retorna se a chamada de função corresponde à assinatura da função especificada.

procedure SetResult(Value: Variant)

É necessário chamar esta função para mostrar ao módulo que o usuário tratou da chamada de função. Você pode passar um resultado de função, ou apenas usar como resultado true.

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

Recupera um parâmetro com o número dado como texto. O índice começa com 1.

procedure GetIntegerParameter(ParNum: Integer): Integer

Recupera um parâmetro com o número dado como número inteiro. O índice começa com 1.

procedure GetBooleanParameter(ParNum: Integer): Boolean

Recupera um parâmetro com o número dado como booleano. O índice começa com 1.

procedure GetDecimalParameter(ParNum: Integer): Decimal

Recupera um parâmetro com o número dado como decimal. O índice começa com 1.

procedure GetDateParameter(ParNum: Integer): Date

Recupera um parâmetro com o número dado como data. O índice começa com 1.

procedure GetTimeParameter(ParNum: Integer): Time

Recupera um parâmetro com o número dado como data e hora. O índice começa com 1.

procedure GetDateTimeParameter(ParNum: Integer): DateTime

Recupera um parâmetro com o número dado como tempo. O índice começa com 1.

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

Recupera um parâmetro com o número dado como EDIVariante. A função retorna, se o parâmetro pode ser recuperado. O índice começa com 1.

OnJob

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

Você pode usar a codeunit trabalho do módulo para definir trabalhos personalizados. O codeunit permite suportar o uso de múltiplos parâmetros. Você pode encontrar mais informações sobre a documentação do encarregado do trabalho.

ParamaterDictionary

Um dicionário contendo os parâmetros passados para o trabalho.

EventArgs

Você deve definir o Event a ser tratado, se você processou um trabalho. A descrição da estrutura da ANVEDI Event Args pode ser encontrada no final deste capítulo.

OnAcceptTransmission

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

Esta função é chamada para determinar se um arquivo ou mensagem deve ser aceito ou ignorado pelo módulo. O módulo não armazena se uma transmissão foi ignorada e chamará esta função cada vez que vir uma transmissão. O arquivo ainda não foi lido, portanto você só pode decidir com base nos metadados disponíveis.

ANVEDITransmission

A transmissão, para a qual os metadados foram recuperados. Por favor note que nenhum dado foi recebido neste momento e que o registo ainda não está inserido na base de dados.

EventArgs

Você deve definir o Event a ser tratado, se você processou o Event. Você também deve retornar um valor para processar a transmissão (definir o valor de retorno como true); ou não (defini-lo como false). A descrição da estrutura da ANVEDI Event Args pode ser encontrada no final deste capítulo.

OnBeforeList

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

Este código é chamado antes que o módulo procure por novos dados. Isto pode ser usado para emitir um comando ou script externo para receber os arquivos, antes do módulo procurar por novos dados.

EDICommunicationChannel

O canal de comunicação que deve recuperar os dados.

EventArgs

Você deve definir o Event a ser tratado, se você processou o evento. A descrição da estrutura da ANVEDI Event Args pode ser encontrada no final deste capítulo.

OnAfterList

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

O canal de comunicação que deve recuperar os dados.

EventArgs

Você deve definir o Event a ser tratado, se você processou o Event. A descrição da estrutura da ANVEDI Event Args pode ser encontrada no final deste capítulo.

Este código é chamado após o módulo ter procurado por novos dados.

OnBeforeReceive

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

Este Event é chamado antes de uma transmissão ser recuperada. Por favor, note que você não pode abortar o processamento neste momento. Se você quiser decidir se deseja ou não recuperar uma mensagem, por favor use o Event.

ANVEDITransmission

A transmissão. As mensagens ainda não são recebidas.

EventArgs

Você deve definir o Event a ser tratado, se você processou o Event. A descrição da estrutura da ANVEDI Event Args pode ser encontrada no final deste capítulo.

OnAfterReceive

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

Este Event é chamado depois de uma transmissão ser recebida.

ANVEDITransmission

A transmissão após ter sido recuperada (você pode acessar as mensagens).

EventArgs

Você deve definir o Event a ser tratado, se você processou o Event. A descrição da estrutura da ANVEDI Event Args pode ser encontrada no final deste capítulo.

OnBeforeArchive

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

Este Event é chamado antes de uma transmissão ser arquivada.

ANVEDITransmission

A transmissão que vai ser arquivada no local remoto.

EventArgs

Você deve definir o Event a ser tratado, se você processou o Event. A descrição da estrutura da ANVEDI Event Args pode ser encontrada no final deste capítulo.

OnAfterArchive

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

Este Event é chamado depois de uma transmissão ser arquivada.

ANVEDITransmission

A transmissão que foi arquivada no local remoto.

EventArgs

Você deve definir o Event a ser tratado, se você processou o Event. A descrição da estrutura da ANVEDI Event Args pode ser encontrada no final deste capítulo.

OnBeforeDelete

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

Este Event é chamado antes de uma transmissão ser apagada.

ANVEDITransmission

A transmissão que vai ser apagada no local remoto.

EventArgs

Você deve definir o Event a ser tratado, se você processou o Event. A descrição da estrutura da ANVEDI Event Args pode ser encontrada no final deste capítulo.

OnAfterDelete

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

Este Event é chamado após uma transmissão ser apagada.

ANVEDITransmission

A transmissão que foi apagada do local remoto.

EventArgs

Você deve definir o Event a ser tratado, se você processou o Event. A descrição da estrutura da ANVEDI Event Args pode ser encontrada no final deste capítulo.

OnBeforeSend

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

Este Event é chamado antes de uma transmissão ser enviada.

ANVEDITransmission

A transmissão que vai ser enviada.

EventArgs

Você deve definir o Event a ser tratado, se você processou o Event. A descrição da estrutura da ANVEDI Event Args pode ser encontrada no final deste capítulo.

OnComposeMessage

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

Este Event é chamado quando uma transmissão é composta.

ANVEDITransmission

A transmissão que é composta.

EventArgs

Você deve definir o Event a ser tratado, se você processou o Event. A descrição da estrutura da ANVEDI Event Args pode ser encontrada no final deste capítulo.

OnAfterSend

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

Este Event é chamado depois que uma transmissão é enviada.

ANVEDITransmission

A transmissão que foi enviada.

EventArgs

Você deve definir o Event a ser tratado, se você processou o evento. A descrição da estrutura da ANVEDI Event Args pode ser encontrada no final deste capítulo.

OnReplacePlaceholder

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

Esta função é chamada quando se avalia uma string que pode conter variáveis definidas pelo usuário, tais como o nome de um arquivo.

Placeholder

O nome do lugar reservado. O módulo está actualmente à procura de um valor para substituir este espaço reservado específico. Para fornecer um valor, é necessário definir o resultado e definir o evento a ser tratado no EventArgs.

ANVEDILinkedDocument

Um registo pré-filtrado dos documentos ligados. Você pode, por exemplo, usar esta tabela para obter os documentos buffer que estão contidos no arquivo.

EventArgs

Você deve definir o Event a ser tratado, se você processou o Event. Você também tem que fornecer um valor. A descrição da estrutura da ANVEDI Event Args pode ser encontrada no final deste capítulo.

O exemplo a seguir mostra como você poderia retornar dados do documento ligado:

[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;
Exemplo: OnReplacePlaceholder

OnError

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

Este Event é chamado quando ocorre um erro na fila de processamento.

EventArgs

Você deve definir o Event a ser tratado, se você processou o Event. A descrição da estrutura da ANVEDI Event Args pode ser encontrada no final deste capítulo.

OnAfterProcess

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

Este Event é chamado após o processamento de uma entrada na tabela EDI Processing Queue. O usuário deve verificar o status da entrada aprovada e reagir de acordo.

EventArgs

Você deve definir o Event a ser tratado, se você processou o Event. A descrição da estrutura da ANVEDI Event Args pode ser encontrada no final deste capítulo.

ANVEDI Event Args

Alguns dos Events utilizam uma estrutura chamada ANVEDI Event Args Esta estrutura permite retornar valores e dizer ao módulo se você tratou do evento.

As seguintes funções estão disponíveis no ANVEDI Event Args passados para o Event:

SetHandled(Value: Boolean)
Value

Se o Event foi tratado pelo seu código.

SetResult(Value: Variant)
Value

O valor de retorno, se o Event espera um valor de retorno.

Exemplo

O exemplo seguinte mostra, como você pode adicionar sua própria função personalizada “MYOBJECT.MYFUNC”, que mostra uma mensagem contendo o nome fornecido seguido por ‘: ‘ e o valor. Você pode adicionar quantas funções a partir de quantas extensões você precisar.

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;
}
Exemplo completo: Função personalizada

Dependências

Se você quiser reagir ao Event via AL, é necessário adicionar uma dependência ao módulo Anveo EDI Connect.

Os valores para a Extensão OnPremise são:

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

Por favor, certifique-se, para substituir x, y, z com o número de versão correto.

Os valores para a Business Central Online Extension são:

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

Por favor, certifique-se, para substituir x, y, z com o número de versão correto.