Manipulador de Comunicação Personalizado
Na Anveo EDI Connect, você pode usar codeunits personalizadas para lidar com a troca de dados. Você pode optar por implementar apenas os métodos que você precisa e permitir, por exemplo, apenas o envio de arquivos.
As codeunits comunicação personalizadas são suportadas em todas as versões do nosso módulo. Vamos ilustrá-lo com base em uma Extensão Dinâmica escrita em AL, mas o mesmo se aplica às plataformas de desenvolvimento mais antigas.
Se você estiver usando a versão Dynamics Extension do Anveo EDI Connect, você pode alternativamente fornecer um serviço HTTP/HTTPs em qualquer linguagem de programação sem criar nenhuma Dynamics Extension. A definição da API está disponível mediante solicitação da nossa equipe de suporte da EDI.
Utilização de um Gestor de Comunicação Personalizado
Se o seu sistema tem um manipulador de comunicação personalizado, você precisará do codeunit para configurar o canal de comunicação. Você pode configurá-lo como qualquer manipulador de comunicação integrada, mas você terá que inserir o Codeunit ID manualmente. A pesquisa não permitirá que você selecione seu manipulador personalizado. Em seguida, atualize a página e configure o canal, se necessário clicando em Configure.
Requisitos básicos
A codeunit comunicação personalizada receberá um registro especial “ANVEDI Format Control” do módulo passado para o gatilho OnRun. Você terá que obter a ação de comunicação solicitada desse registro e ligar para o seu código de acordo.
Exemplo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
codeunit 50000 "My Anveo File Handler" { TableNo = "ANVEDI Format Control"; trigger OnRun() var EDICommunicationChannel: Record "ANVEDI Communication Channel"; EDITransmission: Record "ANVEDI Transmission"; ProcessingQueue: Record "ANVEDI Processing Queue"; begin ProcessingQueue.Get("Processing Queue Entry No."); ProcessingQueue.TestField("Communication Channel"); EDICommunicationChannel.Get(ProcessingQueue."Communication Channel"); if Action in [Action::Receive, Action::Send,="" Action::Archive,="" Action::Delete]=""] then begin EDITransmission.Get(ProcessingQueue."Transmission Entry No."); end; case Action of Action::Connect: // Call your code to establish a connection ; Action::Close: // Your code to close a connection ; Action::"Configure Comm.": // Show configuration options ; Action::"Receive/List": ListFiles(EDICommunicationChannel); Action::Receive: ReceiveFile(EDICommunicationChannel, EDITransmission); Action::Send: SendFile(EDICommunicationChannel, EDITransmission); Action::Archive: ArchiveFile(EDICommunicationChannel, EDITransmission); Action::Delete: DeleteFile(EDICommunicationChannel, EDITransmission); else Error(NotSupportedErr); end; end; var NotSupportedErr: Label 'Not supported by communication codeunit.'; EDICommunicationMgmt: Codeunit "ANVEDI Communication Mgmt"; local procedure ListFiles(EDICommunicationChannel: Record "ANVEDI Communication Channel") var Transmission: Record "ANVEDI Transmission"; begin // Create one transmission per message you want to import. // We recommend to check the transmission table for the same comm. channel with the same "Tag 1" and "Tag 2" // to prevent receiving the same message again, before inserting a new transmission Transmission.Init; Transmission."Entry No." := 0; Transmission.Validate(Direction, Transmission.Direction::Incoming); Transmission.Validate("Communication Channel Code", EDICommunicationChannel.Code); Transmission.Validate(Description, 'Example file'); Transmission.Validate("Tag 1", 'Some data to identify'); Transmission.Validate("Tag 2", 'More data'); Transmission.Validate("Transmission Date/Time", CURRENTDATETIME); EDICommunicationMgmt.InsertTransmissionAndReceive(EDICommunicationChannel, Transmission); end; local procedure ReceiveFile(EDICommunicationChannel: Record "ANVEDI Communication Channel";EDITransmission: Record "ANVEDI Transmission") var EDIMessage: Record "ANVEDI Message"; EDIProcessingQueue: Record "ANVEDI Processing Queue"; MessageFile: File; InS: InStream; OutS: OutStream; begin EDIMessage.Init; EDIMessage.Validate("Transmission Entry No.", EDITransmission."Entry No."); EDIMessage.CreateOutStream(OutS); // Get the data and write it to OutS EDIMessage.Insert(true); // If you want to call archive afterwards: EDIProcessingQueue."Processing Type" := EDIProcessingQueue."Processing Type"::Archive; EDIProcessingQueue."Communication Channel" := EDICommunicationChannel.Code; EDIProcessingQueue."Transmission Entry No." := EDITransmission."Entry No."; EDIProcessingQueue.Insert(true); // If you want to call delete afterwards EDIProcessingQueue."Processing Type" := EDIProcessingQueue."Processing Type"::Delete; EDIProcessingQueue."Communication Channel" := EDICommunicationChannel.Code; EDIProcessingQueue."Transmission Entry No." := EDITransmission."Entry No."; EDIProcessingQueue.Insert(true); // Release the message EDIMessage.Release(); end; local procedure DeleteFile(EDICommunicationChannel: Record "ANVEDI Communication Channel";EDITransmission: Record "ANVEDI Transmission") begin // Your code here end; local procedure ArchiveFile(EDICommunicationChannel: Record "ANVEDI Communication Channel";EDITransmission: Record "ANVEDI Transmission") begin // Your code here end; local procedure SendFile(EDICommunicationChannel: Record "ANVEDI Communication Channel";EDITransmission: Record "ANVEDI Transmission") var EDIMessage: Record "ANVEDI Message"; InS: InStream; begin EDIMessage.SetRange(EDIMessage."Transmission Entry No.", EDITransmission."Entry No."); if EDIMessage.FindSet then begin repeat if EDIMessage.CREATEINSTREAM(InS) then begin // Send the data using the stream end; EDIMessage.CLOSE(); until EDIMessage.Next = 0; end; end; } |
Dependências
Se você quiser criar um manipulador de comunicação personalizado em AL, você precisa adicionar uma dependência ao módulo Anveo EDI Connect.
Os valores para a Extensão OnPremise são:
1 2 3 4 5 6 |
{ "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:
1 2 3 4 5 6 |
{ "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.