Generische Funktionsaufrufe

19. Mai 2011 11:11

Hallo zusammen,
gibt es im Nav 2009 R2 die Möglichkeit Funktionen generisch aufzurufen.
Szenario: Der NAS hat eine Socket Verbindung über die von außen Requests ankommen. Inhalt dieser Request-Texte ist zum Beispiel eine Funktion, die ich in Navision aufrufen möchte. Diese Funktion würde es auch in Navision geben. Was ich nun nicht möchte, ist eine Variable für eine Codeunit anzulegen und dann über den Aufruf CodeunitVariable.Funktionsname die Funktion aufzurufen.
Vielmehr würde ich gerne irgendwie rausbekommen??? wo die Funktion liegt und diese dann aufrufen. Wenn ich eine Codeunit als Text exportiere, hat eine Funktion ja immer auch eine ID. Kann ich da irgendwie ran kommen? Ich hoffe das war irgendwie verständlich...
Grüße

Re: Generische Funktionsaufrufe

19. Mai 2011 11:20

saschaNav hat geschrieben:Wenn ich eine Codeunit als Text exportiere, hat eine Funktion ja immer auch eine ID.

Selbst wenn du an diese ID kommst, kannst du nicht über die ID eine Funktion aufrufen.

Höchstens so: Du erstellst pro Funktion eine eigene Codeunit und rufst die einzelnen Codeunits generisch auf:
CODEUNIT.RUN(DeineCodeunitID);

Nachteil: Du kannst keine beliegigen Parameter übergeben, höchstens eine Recordvariable.
Möchtest du mehr mitgeben, bist du auf eine (Codeunit-)Variable angewiesen.

Außerdem bräuchtest du so viele Codeunits wie Funktionen.

Alternativ rufst du eine (immer die gleiche) Codeunit auf, die dann mithilfe des übergebenen Parameters für den (mit CASE ausprogrammierten) Aufruf weiterer Funktionen zuständig ist.

Re: Generische Funktionsaufrufe

19. Mai 2011 11:52

Hallo saschaNav,

Mit Parametern geht das auch, wenn Du dafür eine Tabelle opferst. http://www.mibuso.com/forum/viewtopic.php?p=231538#p231538 Das ist zwar nicht generisch, aber ein Mechanismus um Code dynamisch einzuhängen.

LG Jens

Re: Generische Funktionsaufrufe

19. Mai 2011 13:17

Vom Preis her: 10 Tabellen = 100 Codeunits

Re: Generische Funktionsaufrufe

19. Mai 2011 14:18

Danke für die Antworten...so richtig verwendbar ist leider keine der Varianten...ich werde wohl noch etwas weiter forschen müssen. Aber trotzdem Danke

Re: Generische Funktionsaufrufe

19. Mai 2011 14:36

Wie funktioniert die Socketanbindung eigentlich?
Du musst doch in NAV so oder so eine Routine zur Prüfung schreiben, ob Daten/Befehlsanfragen verarbeitet werden sollte.
Es macht mehr Sinn zu erklären, wozu du sowas brauchst.
Es gibt sicherlich eine Lösung dafür.
Ich bin ein Generiker ;-)

Re: Generische Funktionsaufrufe

19. Mai 2011 14:38

JanGD hat geschrieben:Ich bin ein Generiker ;-)

JanGenerischDenkender? :-P

Re: Generische Funktionsaufrufe

19. Mai 2011 15:25

Natalie hat geschrieben:
JanGD hat geschrieben:Ich bin ein Generiker ;-)

JanGenerischDenkender? :-P


Knapp vorbei, gibt trotzdem 100 Gummipunkte, ab 101 hätte es eine Markenwaschmaschine gegeben ;-)

Re: Generische Funktionsaufrufe

20. Mai 2011 13:04

Die Socketverbindung läuft über die CommunicationComponents.
Darüber bekomme ich von außen einen Request der halt unterschiedliche Dinge auslösen kann/soll. Um hier nicht jeden Einzelfall abzufragen war die Idee, es irgendwie "globaler" zu machen. Also wie gesagt, z.B. eine Funktion aufzurufen, die im RequestTringer zu finden ist.