2016-10-04 41 views
0

codeunit引用我有了生產訂單行表作爲源和上運行觸發器codeunit顯示了這兩行代碼:運行中的Navision

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

的XXXX代表生產訂單號但是你可以看到有人用硬編碼。如何根據我所在的生產訂單行,在其他地方(如在表單上)通過引用來調用此代碼單元?我試着直接調用SetRANGE例程或調用codeunit.run方法,至今沒有運氣。幫幫我!!

+0

** NAV的版本至極**?但它不依賴於你過濾任何表的方式。 –

回答

4

在設計模式下打開codeunit或其副本以進行測試,並設置表號。 codeunit的屬性。然後,您可以參考OnTrans函數中傳遞給codeunit.run作爲Rec的記錄。

您在記錄通過不同的方式,但一個方法是使用下面的語法:

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公司開發了幾年了,我沒有測試的一種方式了。希望這會讓你指出正確的方向,而且我沒有忘記任何關鍵的東西。

+0

非常感謝您的幫助。是的,當我嘗試使用rec時,我錯過了這一點。我沒有設置表格屬性,所以我會試一試。 – WSNoob

0

根據生產訂單行表的主鍵實際上是[狀態],[訂單號],[行號],您需要使用FIND(' - ')或FINDSET在哪個版本的NAV上。

它似乎行號也是硬編碼....這個過程只關心自己的訂單的第一行嗎?

您對訂單號或憑證號有興趣嗎?

在任何情況下,除非你喜歡的錯誤信息被返回到UI如果過濾結果0行我會寫的條件語句:

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