[gelöst] OnAfterInput Trigger Ersatz

19. August 2014 14:13

Hallo Forum,


Im 4er Navision gab es auf den Feldern im Form, den OnAfterInput Trigger.
Hier ist bei uns, in der SalesOrderSubForm programmiert, dass nach der Eingabe eines Wertes in das Feld "No." ein Funktionsaufruf im OnAfterInput -Trigger erfolgt, der den eingegebenen Wert in eine Funktion schickt, die aus diesem Wert, die korrekte Artikelnummer holt und dann in das Feld "No."hineinvalidiert.
Im Nav 2013 gibt’s keinen OnAfterInput Trigger mehr.
Also habe ich mir in der SalesOrderSubPage eine Code-Variable "Eingabe Nr." angelegt, die ganz normal als Feld in der Page angezeigt wird. Im OnAfterValidate -Trigger dieser "Eingabe Nr." rufe ich die Funktion auf, die mir die korrekte Artikelnummer zurückliefert und validiere das Feld SalesLine."No." mit dem Wert aus der Funktion (also die zurückgegebene Artikelnr.). Funktioniert soweit, nur ist logischerweise das "CurrFieldNo" des Feldes "No." immer 0. Ich muss aber irgendwie simulieren, dass das Feld "No." "manuell" aus der Page gefüllt wird.

Hat jemand von euch vielleicht eine Idee , was man hier machen könnte?
Danke.
Zuletzt geändert von svr am 20. August 2014 11:09, insgesamt 1-mal geändert.

Re: OnAfterInput Trigger Ersatz

19. August 2014 14:36

Hallo,

in 2013 leider nichts, da dort keine Addins in Repeatern benutzt werden können. in R2 ist das, glaube ich, anders. Da kann man ein Addin für den Repeater bauen, das den Trigger wieder zur Verfügung stellt.

Jede andere Programmierung, Suche im Onvalidate oder über neues Feld, ist nur ein Krücke und funktioniert nur unter bestimmten Bedingungen, und nur mit weiterer Programmierung (Schnellsuche überlisten,Currfieldno- Prüfung erweitern)

Gruß, Fiddi

Re: OnAfterInput Trigger Ersatz

19. August 2014 14:53

Hallo Fiddi,

Danke für deine schnelle Antwort.
Bin gerade dabei mich in 2013 R2 einzuarbeiten bzw. übernehme Funktionalitäten aus 4.02 in die 2013 R2 im Rahmen eines Upgrade-Projektes.
Was meinst du genau mit
...AddIn für den Repeater bauen, dass den Trigger wieder zur Verfügung stellt...
Wie baut man sowas? Gibts irgendwo ganz einfache Beispiele, anhand derer das ein wenig erklärt wird?

Grüße

Re: OnAfterInput Trigger Ersatz

19. August 2014 14:59

Hi,

wozu brauchst du denn die CurrFIeldNo?
Rufst du nach dem Validate eine andere Funktion auf, die aufgrund der CurrFieldNo weiteren Code abarbeitet?
Würde dir vielleicht eine globale boolsche Variable dann weiterhelfen?

Re: OnAfterInput Trigger Ersatz

19. August 2014 15:10

Hi,

es kommen diverse Meldungen, wenn die CurrFieldNo <> '' ist. Da ich auch Aufträge (Köpfe und Zeilen) an anderer Stelle per Code baue, steck ich an der Stelle in einem Dilemma.

Re: OnAfterInput Trigger Ersatz

19. August 2014 15:38

sweikelt hat geschrieben:wozu brauchst du denn die CurrFIeldNo?


Ich benötige das nicht, aber die Trigger und Funktionen des Standards in den Belegzeilen fragen CurrFieldno ab, was bei einem anderen Feld als "No." nicht mehr funktioniert oder angepasst werden muss.


svr hat geschrieben:Wie baut man sowas (Client Addin)? Gibts irgendwo ganz einfache Beispiele, anhand derer das ein wenig erklärt wird?


Da hilft dir am besten die Suche nach dem Begriff "Client Addin" im Zusammenhang mit NAV2013.

Gruß, Fiddi

Re: OnAfterInput Trigger Ersatz

19. August 2014 15:53

Danke euch für die Hinweise.

Re: OnAfterInput Trigger Ersatz

19. August 2014 17:25

fiddi hat geschrieben:
sweikelt hat geschrieben:wozu brauchst du denn die CurrFIeldNo?


Ich benötige das nicht, aber die Trigger und Funktionen des Standards in den Belegzeilen fragen CurrFieldno ab, was bei einem anderen Feld als "No." nicht mehr funktioniert oder angepasst werden muss.


mir war schon klar, dass du das nicht brauchst, fiddi :) -> deswegen aber auch mein Hinweis mit der Variable - sollte doch eigentl. funktionieren

Re: OnAfterInput Trigger Ersatz

20. August 2014 11:08

Problem (bezogen auf mein konkretes Beispiel) gelöst:

in der Tabelle 37 wird eine Funktion "SetCurrFieldNo" erstellt in die eine Integer Zahl (die gewünschte Feldnummer "NewCurrFieldNo.") als Parameter übergeben wird. Diese Zahl wird der CurrFieldNo zugewiesen:

Code:
CurrFieldNo := NewCurrFieldNo;


Im OnValidateTrigger des Feldes "Eingabe Nr." der SalesOrderSubPage:
Code:
SetCurrentFieldNo(6);
VALIDATE("No.",'irgendwas');


So könnte man, obwohl per Code validiert wird, die Tastatureingabe des Feldes "No." simulieren.

Re: [gelöst] OnAfterInput Trigger Ersatz

20. August 2014 15:32

Wieder was dazu gelernt :wink:

Aber nicht den Code aus dem OnValidate- Trigger von "No." aus der Page auch hier einzutragen :wink:

Gruß, Fiddi