Dit is een automatische vertaling. De originele post is beschikbaar in Engels.

ANVEDI Callback

De informatie op deze pagina is alleen bedoeld voor installaties op locatie die gebruik maken van de FOB-bestanden.

Als u gebruik maakt van Microsoft Dynamics NAV 2017 of nieuwer en Anveo EDI Connect 5.00 biedt een nieuwe event based customization logica. Wij raden u ten zeerste aan om, indien mogelijk, over te gaan naar de nieuwe integratie-events om upgrades naar nieuwere versies gemakkelijker te maken.

De Codeunit ANVEDI Callback met de ID 5327310 is het centrale punt als u het gedrag van Anveo EDI Connect wilt veranderen. We houden de API van deze Codeunit constant, zodat u dit object niet hoeft te overschrijven bij het updaten van onze module. Er zijn verschillende functies die door u kunnen worden gewijzigd en sommige helpfuncties die niet mogen worden gewijzigd. Als u de module heeft bijgewerkt en een helpfunctie mist die mogelijk in een nieuwere versie is toegevoegd, is er een tweede object genaamd EDI Callback - Template met ID 5327313 waar u de nieuwe functionaliteit zult vinden.

OnFunction

De module maakt het mogelijk om uw eigen functionaliteit te definiëren, die vanuit de EDI-mappings kan worden opgeroepen. U kunt zoveel functies definiëren als u nodig heeft. U moet de voorgedefinieerde casusbeschrijving gebruiken en oproepen toevoegen aan de ingebouwde functies FunctionName..FunctionName5.

U moet geen enkele code buiten de vooraf gedefinieerde casestructuur plaatsen, aangezien deze functie vrij vaak kan worden aangeroepen en elke extra code negatieve gevolgen kan hebben voor de prestaties.

CASE TRUE OF
  // ... other functions

  FunctionName('EXAMPLE', 'HelloWorld'):
    BEGIN
      FunctionResult('Hello World!');
      EXIT;
    END;
END;
Voorbeeld: “Hallo Wereld” functie in OnFunction

Het getal aan het einde van de lokale helperfunctie FunctionName definieert het aantal parameters. U kunt functies definiëren met maximaal vijf parameters. U hebt toegang tot de inhoud van de parameters door de functies GetTextParameter(ParNumber) en soortgelijke functies voor andere datatypes op te roepen. Het parameternummer wordt geteld van “1” tot “5”.

Elke functie moet een waarde teruggeven door de lokale functie aan te roepen met de naam FunctionResult.

U mag de functie FunctionResult slechts één keer oproepen. Het is een goede gewoonte om direct daarna een EXIT-verklaring toe te voegen om te voorkomen dat de functie meerdere keren wordt aangeroepen.

U kunt de object- en functienamen naar wens kiezen.

De eerste 29 tekens van de combinatie van object- en functienaam moeten uniek zijn om de parameters uit de mapping te kunnen specificeren. Je moet proberen de namen kort te houden.

Hier een volledige lijst van de beschikbare functies om te gebruiken in de CASE-verklaring. Vanaf 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)

Hier een lijst van de functie die u kunt gebruiken om toegang te krijgen tot de parameters:

  • GetTextParameter(ParNum : Integer) : Text
    • Krijgt de parameter en probeert deze in datatype tekst te gieten.
  • GetIntegerParameter(ParNum : Integer) : Integer
    • Krijgt de parameter en probeert deze op datatype integer te gieten.
  • GetBooleanParameter(ParNum : Integer) : Boolean
    • Krijgt de parameter en probeert deze op datatype boolean te gieten.
  • GetDecimalParameter(ParNum : Integer) : Decimal
    • Krijgt de parameter en probeert deze in datatype decimaal te gieten.
  • GetDateParameter(ParNum : Integer) : Date
    • Krijgt de parameter en probeert deze op datatype datum te gieten.
  • GetTimeParameter(ParNum : Integer) : Time
    • Krijgt de parameter en probeert deze te gieten naar datatype tijd.
  • GetDateTimeParameter(ParNum : Integer) : DateTime
    • Krijgt de parameter en probeert deze op datatype datum/tijd te zetten.
  • GetParameter(ParNum : Integer;VAR EDIVariant : Codeunit
    • Krijgt de parameter als voorbeeld van de Codeunit ANVEDI Variant.

CallbackRegistration

Deze functie wordt aangeroepen als er iets gebeurt in de module, waar u op kunt reageren. De functie bevat een case structuur, waar u kunt controleren op de doorgegeven parameter CallbackSupport wat er gebeurd is.

U moet geen enkele code buiten de vooraf gedefinieerde casestructuur plaatsen, aangezien deze functie vrij vaak kan worden aangeroepen en elke extra code negatieve gevolgen kan hebben voor de prestaties.

Deze structuur ziet er misschien ongewoon uit voor C/AL ontwikkelaars, maar we kunnen op deze manier functionaliteit toevoegen, zonder de noodzaak om de ANVEDI Callback Codeunit te updaten.

De beschikbare gebeurtenissen worden gedefinieerd door de Codeunit ANVEDI Callback Support. In de volgende paragrafen bespreken we de beschikbare evenementen.

OnJobCallback

U kunt de codeunit van de module gebruiken om aangepaste jobs te definiëren. De codeunit maakt het mogelijk om het gebruik van meerdere parameters te ondersteunen. U kunt meer informatie vinden over de job handler documentatie.

OnAcceptTransmission

Deze functie wordt aangeroepen om te bepalen of een bestand of bericht door de module moet worden geaccepteerd of genegeerd. De module slaat niet op of een transmissie werd genegeerd en zal deze functie telkens oproepen wanneer het een transmissie ziet. Het bestand is nog niet gelezen, dus u kunt alleen beslissen op basis van de beschikbare metadata.

Parameters:

EDITransmission

Een record uit tabel EDI Transmission met de gegevens die tot nu toe bekend zijn. Het verslag is nog niet geschreven.

Als u op deze gebeurtenis reageert, moet u de volgende functie oproepen:

HandleAcceptTransmission(Result : Boolean;VAR EDITransmission : Record "ANVEDI Transmission")

Parameters:

Result

Het al dan niet ontvangen van de transmissie. De waarde True betekent dat u de gegevens wilt ontvangen, de waarde False dat u de transmissie wilt negeren.

EDITransmission

U moet het record van de OnAcceptTransmission oproep doorgeven aan deze parameter.

CASE TRUE OF
  // ...
  CallbackSupport.OnAcceptTransmission(ANVEDITransmission):
    BEGIN
      // Ignore files with the name "FileList.txt"
      // Usually you also want to check the communication channel etc. to only run this for specific channels
      IF ANVEDITransmission."Tag 2" = 'FileList.txt' THEN BEGIN
        CallbackSupport.AcceptTransmission(FALSE. ANVEDITransmission);
      END ELSE BEGIN
        CallbackSupport.AcceptTransmission(TRUE. ANVEDITransmission);
      END;
    END;
  END;
END;
Voorbeeld: OnAcceptTransmissie

OnBeforeList

Deze code wordt aangeroepen voordat de module op zoek gaat naar nieuwe gegevens. Dit kan worden gebruikt om een extern commando of script te geven om de bestanden te ontvangen, voordat de module op zoek gaat naar nieuwe gegevens.

Parameters:

EDICommunicationChannel

Specificeert een datarecord van de EDI Communication Channel waarvoor nieuwe berichten moeten worden gezocht.

Deze gebeurtenis vereist geen oproep naar een andere functie, aangezien deze geen enkele returnwaarde ondersteunt.

OnAfterList

Deze code wordt aangeroepen nadat de module naar nieuwe gegevens heeft gezocht.

Parameters:

EDICommunicationChannel

Specificeert een datarecord van de EDI Communication Channel.

Deze gebeurtenis vereist geen oproep naar een andere functie, aangezien deze geen enkele returnwaarde ondersteunt.

OnBeforeReceive

Deze gebeurtenis wordt opgeroepen voordat een transmissie wordt opgehaald.

Parameters:

EDITransmission

Specificeert een gegevensrecord van de EDI Transmission.

Deze gebeurtenis vereist geen oproep naar een andere functie, aangezien deze geen enkele returnwaarde ondersteunt.

OnAfterReceive

Deze gebeurtenis wordt opgeroepen nadat een transmissie is ontvangen.

Parameters:

EDITransmission

Specificeert een gegevensrecord van de EDI Transmission.

Deze gebeurtenis vereist geen oproep naar een andere functie, aangezien deze geen enkele returnwaarde ondersteunt.

OnBeforeArchive

Deze gebeurtenis wordt opgeroepen voordat een uitzending wordt gearchiveerd.

Parameters:

EDITransmission

Specificeert een gegevensrecord van de EDI Transmission.

Deze gebeurtenis vereist geen oproep naar een andere functie, aangezien deze geen enkele returnwaarde ondersteunt.

OnAfterArchive

Deze gebeurtenis wordt opgeroepen nadat een transmissie is gearchiveerd.

Parameters:

EDITransmission

Specificeert een gegevensrecord van de EDI Transmission.

Deze gebeurtenis vereist geen oproep naar een andere functie, aangezien deze geen enkele returnwaarde ondersteunt.

OnBeforeDelete

Deze gebeurtenis wordt opgeroepen voordat een transmissie wordt verwijderd.

Parameters:

EDITransmission

Specificeert een gegevensrecord van de EDI Transmission.

Deze gebeurtenis vereist geen oproep naar een andere functie, aangezien deze geen enkele returnwaarde ondersteunt.

OnAfterDelete

Deze gebeurtenis wordt opgeroepen nadat een transmissie is verwijderd.

Parameters:

EDITransmission

Specificeert een gegevensrecord van de EDI Transmission.

Deze gebeurtenis vereist geen oproep naar een andere functie, aangezien deze geen enkele returnwaarde ondersteunt.

OnBeforeSend

Deze gebeurtenis wordt opgeroepen voordat er een transmissie wordt verzonden.

Parameters:

EDITransmission

Specificeert een gegevensrecord van de EDI Transmission.

Wanneer u op deze gebeurtenis reageert, moet u de functie oproepen:

HandleBeforeSendTransmission(Result, EDITransmission)
Result

Of de transmissie moet worden verzonden. De waarde True betekent dat de transmissie moet worden verzonden.

EDITransmission

De uitzending die je kreeg bij de oproep voor het evenement.

OnComposeMessage

Deze gebeurtenis wordt opgeroepen wanneer een uitzending wordt samengesteld.

Parameters:

EDITransmission

Specificeert een gegevensrecord van de EDI Transmission.

Deze gebeurtenis vereist geen oproep naar een andere functie, aangezien deze geen enkele returnwaarde ondersteunt.

OnAfterSend

Deze gebeurtenis wordt opgeroepen nadat een transmissie is verzonden.

Parameters:

EDITransmission

Specificeert een gegevensrecord van de EDI Transmission.

Wanneer u op deze gebeurtenis reageert, moet u de functie oproepen:

HandleAfterSendTransmission(Result, EDITransmission)
Result

Het resultaat wordt momenteel genegeerd.

EDITransmission

De uitzending die je kreeg bij de oproep voor het evenement.

OnReplacePlaceholder

Deze functie wordt aangeroepen wanneer een string wordt geëvalueerd die door de gebruiker gedefinieerde variabelen kan bevatten, zoals een bestandsnaam.

Hieronder vindt u een voorbeeld:

If Placeholder = 'MyNumber' THEN BEGIN
    IF EDILinkedDocument.FINDSET THEN REPEAT
      RecID := EDILinkedDocument."Record ID";
      IF (RecID.TABLENO = DATABASE::"EDI Document") THEN BEGIN
        RecRef.GET(EDILinkedDocument."Record ID");
        RecRef.SETTABLE(EDIDocument);
        CallbackSupport.HandleReplacePlaceholder(TRUE, EDIDocument."System Document No.");
        EXIT;
      END;
    UNTIL EDILinkedDocument.NEXT = 0;
  
    CallbackSupport.HandleReplacePlaceholder(FALSE, '');
  END ELSE BEGIN
    CallbackSupport.HandleReplacePlaceholder(FALSE, '');
  END;
Voorbeeldcode: OnReplacePlaceholder

Parameters:

Placeholder

De variabele naam tussen de gekrulde haakjes waarvoor een waarde wordt gezocht.

Wanneer u op deze gebeurtenis reageert, moet u de functie oproepen:

CallbackSupport.HandleReplacePlaceholder(Result,Value)

Parameters:

Result

Of u nu een waarde wilt teruggeven. Als u True teruggeeft, moet u een waarde voor de variabele opgeven. U kunt systeemvariabelen overschrijven.

Value

De waarde die gebruikt moet worden.

OnError

Deze gebeurtenis wordt opgeroepen wanneer er een fout optreedt in de verwerkingswachtrij.

Parameters:

EDIProcessingQueue

Een voorbeeld van de tabel EDI Processing Queue waarvan de verwerking is mislukt.

AfterProcess

Deze gebeurtenis wordt aangeroepen na de verwerking van een invoer in de tabel EDI Processing Queue. U dient de status van de ingevoerde gegevens te controleren en dienovereenkomstig te reageren.

Parameters:

EDIProcessingQueue

Een voorbeeld van de tabel EDI Processing Queue die is verwerkt.

LookupLinkedDocument

Deze functie wordt opgeroepen vanuit de lijst met gekoppelde documenten, als de gebruiker de kaartpagina wil openen. Er zijn een paar voorgedefinieerde pagina’s in de module en we proberen terug te vallen op de standaard zoekpagina, voor het geval dat deze functie False is.

LookupLinkedDocument(RecRef: RecordRef) : Boolean
RecRef

Het record waarvoor de gebruiker de pagina wil openen.

Retourwaarde

Een booleaanse waarde. Geef de waarde True terug, als de pagina door deze functie werd geopend; Anders False.

     CASE RecRef.NUMBER OF
       DATABASE::"Sales Header":
          BEGIN
            RecRef.SETTABLE(SalesHeader);
            PAGE.RUN(PAGE::"Sales Order", SalesHeader);
            EXIT(TRUE);
          END;
      END;
Voorbeeldcode: Open kaartpagina voor verkooporder

BeforeConvert

Deze functie wordt aangeroepen voordat een mapping wordt gestart. De oproep bevindt zich binnen de databasetransactie van de mapping. U kunt de mapping annuleren, nog voordat de mapping is begonnen, door de waarde True terug te geven. In het algemeen raden wij aan deze functie niet te gebruiken. Wilt u een aangepaste code bellen, gebruik dan ofwel de nieuwere CallbackRegistration of de OnFunction functionaliteit.

AfterConvert

Deze functie wordt aangeroepen nadat een mapping met succes is voltooid. De oproep bevindt zich binnen de databasetransactie van de mapping. In het algemeen raden wij aan deze functie niet te gebruiken. Wilt u een aangepaste code bellen, gebruik dan ofwel de nieuwere CallbackRegistration of de OnFunction functionaliteit.

In Anveo EDI Connect 4.00 hebben we gebeurtenissen toegevoegd aan de functie CallbackRegistration genaamd OnError en AfterProcess. Gebruik de nieuwe functionaliteit, indien mogelijk.

Kruisverwijzingen

U kunt uw eigen kruisverwijzingslogica definiëren. Deze functionaliteit wordt aangeroepen, wanneer het kruisverwijzingstype is ingesteld op callback. Vaak raden we aan om mappings te gebruiken in plaats van aangepaste terugbelcode om het lezen van de mappings te vergemakkelijken. Aangepaste kruisverwijzingscode is vanuit ons oogpunt moeilijker te onderhouden.

ValidateCrossReferenceNumber

Controleer of een extern kruisverwijzingsnummer geldig is.

deze functie is verouderd en mag niet worden gebruikt.

GetInternalNo

Geeft een intern nummer van een extern nummer.

GetInternalNo(TableID: Integer; FieldNo: Integer; RelationTableID: Integer; RelationFieldNo: Integer; RelationTableView: Text[1024]; RelationTableViewPar1: Variant; VAR InternalNo: Code[20]; EDICrossReferenceType: Record 5327361; ExternalNo: Text[64]; EDIProject: Code[20]) : Boolean

GetExternalNo

Geeft een extern nummer van een intern nummer.

GetExternalNo(TableID: Integer; FieldNo: Integer; RelationTableID: Integer; RelationFieldNo: Integer; RelationTableView: Text[1024]; RelationTableViewPar1: Variant; InternalNo: Code[20]; EDICrossReferenceType: Record 5327361; VAR ExternalNo: Text[64]; EDIProject: Code[20]) : Boolean

UpdateCrossReference

Wordt aangeroepen als de gebruiker probeert een kruisverwijzing bij te werken.

UpdateCrossReference(TableID : Integer; FieldNo: Integer; RelationTableID: Integer; RelationFieldNo: Integer; RelationTableView: Text[1024]; RelationTableViewPar1: Variant; InternalNo: Code[20]; EDICrossReferenceType: Record 5327361; CrossReference: Text[64]; EDIProject : Code[20])

Verouderde functies

De onderstaande functionaliteit is slechts gedeeltelijk geïmplementeerd en dus niet veilig. We raden aan de standaard beveiligingsfilters van Microsoft Dynamics NAV 2016 te gebruiken en de twee functies leeg te laten.

ApplyUserFilter

Hiermee kunt u de doorgegeven gegevens filteren op een manier die de gebruiker later kan wijzigen. Het gebruik van deze functie wordt niet meer aanbevolen. De functie kan in nieuwere versies worden verwijderd.

ApplySecurityFilter

Hiermee kunt u de gegevens zodanig filteren dat het filter niet door de gebruiker kan worden gewijzigd. Deze functie wordt niet in alle gevallen opgeroepen. Het gebruik van deze functie wordt niet meer aanbevolen. De functie kan in nieuwere versies worden verwijderd.