簡體   English   中英

在Navision中通過引用運行代碼單元

[英]Running a codeunit by reference in Navision

我有一個以生產訂單行表為源的代碼單元,“運行”觸發器顯示了這兩行代碼:

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

XXXX代表生產訂單號,但是您看到有人對其進行了硬編碼。 我如何在其他地方(在表單上說),但根據我所在的生產訂單行進行引用,將此代碼單位稱為其他代碼單位? 我嘗試執行SetRANGE例程或直接調用codeunit.run方法,到目前為止還算不上運氣。 救命!!

在設計模式下打開代碼單元或它的副本以進行測試,然后設置表號。 代碼單元的屬性。 然后,您可以在OnRun函數中引用作為Rec傳遞給codeunit.run的記錄。

傳遞記錄的方式各不相同,但是一種方法是使用以下語法:

Codeunit.RUN(CodeUnitNumber, Record)

SetRange在傳遞的變量上是不夠的,因為它僅過濾但不選擇記錄。 如果我正確理解了您的問題,則在OnRun中不需要ProdOrderLine.GET。 只需調用ExecuteFunction(Rec)。

您沒有提及版本號或ExecuteFunction函數的功能,但可以嘗試一下。

您可以在以下位置找到更多信息: https : //msdn.microsoft.com/en-us/library/dd301214 ( v=nav.90) .aspxhttps://msdn.microsoft.com/en-us/library/ dd355035(v = nav.90)的.aspx

自從為Navision開發以來已經有幾年了,我再也沒有測試的方法了。 希望這會為您指明正確的方向,而我也沒有忘記任何重要的事情。

根據生產訂單行表的主鍵是否實際上是[Status],[Order No。],[Line No.],您將需要使用FIND('-')或FINDSET,具體取決於哪個版本NAV。

看來行號也是經過硬編碼的。...此過程僅涉及訂單的第一行嗎?

您對訂單號或單據號感興趣嗎?

無論如何,我都會將其寫為條件語句,除非您希望過濾器結果為0行,則將錯誤消息返回到UI:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM