2016-10-04 3 views
0

Ich habe eine Codeunit, die die Produktion Order Line-Tabelle als Quelle und dem On Run Trigger zeigt diese beiden Zeilen Code hat:Ausführen einer durch Bezugnahme in Navision Codeunit

ProdOrderLine.GET(Status,'xxxx',10000); 
ExecuteFunction(ProorderLine); 

Die XXXX stellt den Fertigungsauftrag Nr Aber jemand hat es hart codiert, wie Sie sehen können. Wie rufe ich diese Codeeinheit sonst wo (zB in einem Formular) auf, aber durch Referenz, abhängig davon, in welcher Produktionsreihenfolge ich bin? Ich habe versucht, die SetRANGE-Routine zu tun oder die codeunit.run-Methode direkt aufzurufen und bisher kein Glück zu haben. Hilfe!!

+0

Wich-Version ** NAV ** ?, aber es hängt nicht davon ab, wie Sie eine Tabelle filtern. –

Antwort

4

Öffnen Sie die Codeeinheit oder eine Kopie davon zum Testen im Design-Modus und setzen Sie die Tabelle Nr. Eigenschaft der Codeeinheit. Dann können Sie auf den Datensatz verweisen, der in der OnRun-Funktion an codeunit.run als Rec übergeben wurde.

Die Art und Weise in der Platte variiert passieren, aber ein Weg ist, diese Syntax zu verwenden:

Codeunit.RUN(CodeUnitNumber, Record) 

SetRange wird, weil es nicht ausreichend sein, auf denen nur Filter in Variable übergeben, aber nicht wählen, eine Aufzeichnung. Sie werden ProdOrderLine.GET nicht in OnRun benötigen, wenn ich Ihr Problem richtig verstanden habe. Rufen Sie einfach ExecuteFunction (Rec) auf.

Sie erwähnen keine Versionsnummern oder was die ExecuteFunction-Funktion tut, aber versuchen Sie es.

Sie können mehr Informationen finden Sie unter: https://msdn.microsoft.com/en-us/library/dd301214(v=nav.90).aspx und https://msdn.microsoft.com/en-us/library/dd355035(v=nav.90).aspx

Es ist schon ein paar Jahre her, seit ich für Navision entwickelt, und ich eine Art und Weise der Prüfung nicht mehr haben. Hoffentlich weist dich das in die richtige Richtung, und ich habe nichts Kritisches vergessen.

+0

Vielen Dank für Ihre Hilfe. Ja, das hast du auf einen Schritt aufmerksam gemacht, den ich verpasst habe, als ich versucht habe, rec zu benutzen. Ich habe die Tischeigenschaft nicht festgelegt, also werde ich es versuchen. – WSNoob

0

Abhängig davon, ob der Primärschlüssel für die Produktionsauftragsreihen-Tabelle tatsächlich [Status], [Bestellnr.], [Zeilennummer] ist, müssen Sie FIND ('-') oder FINDSET abhängig verwenden auf welcher Version von NAV.

Es scheint die Zeile nein ist auch hart codiert .... beschäftigt sich dieser Prozess nur mit der ersten Zeile der Bestellung?

Sind Sie an der Bestellnummer oder Dokumentnummer interessiert?

Auf jeden Fall würde ich es als eine bedingte Anweisung schreiben, wenn Sie es vorziehen, eine Fehlermeldung an den UI, wenn die Filterergebnisse in Zeilen 0 zurückgegeben wird:

IF ProdOrderLine.GET(Status,"Order No.", "Line No.") THEN 
    ExecuteFunction(ProdOrderLine); 
Verwandte Themen