2017-09-05 66 views
2

我想通過擴展CustTable來使用D365FO中新的'命令鏈'功能。D365FO中的命令鏈(方法環繞)導致'對象未設置爲對象的實例'

我們需要檢查更新方法中的值是否已更改,然後再將其記錄到新表中。

[ExtensionOf(tableStr(CustTable))] 
final class CustTable_Extension 
{ 
    void update(boolean _updateSmmBusRelTable = true, boolean _updateParty = 
       true) 
    { 
     CustTable custTable_Orig = this.orig(); 
     boolean hasChanged = this.CreditMax != custTable_Orig.CreditMax; 

     next update(_updateSmmBusRelTable, _updateParty); 

     if(hasChanged) 
     { 
      //do something 
     } 
    } 
} 

但是,當運行此代碼時,我們得到「對象未設置爲對象的實例」錯誤。發生錯誤是因爲'this'對象爲空。調用「next update(_updateSmmBusRelTable,_updateParty);」時也會出現同樣的錯誤。

documentation指出:「這允許在不需要使用事件處理程序的情況下擴展公共方法和受保護方法的邏輯,當您包裝方法時,還可以訪問其他公共和受保護的方法以及類的變量。

任何想法?

回答

4

您必須(重新)編譯包含CustTable - Application Suite與PU9或更新。

https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/get-started/whats-new-platform-update-9#supported-versions

但是,此功能需要被類增加要在平臺更新9編譯因爲動力學365財務和運營的當前版本,企業的Editon應用已經編上平臺更新8或更早版本,則需要以重新編譯基本包(如應用套件)的平臺更新9或更新包是在包中定義的方法

+0

我在應用PU10後做了一個完整的構建。我也剛剛做了另一個完整的構建,只是爲了仔細檢查,仍然得到相同的錯誤。 – AinsleyJ

+1

您是否嘗試使用「構建相關軟件包」複選框來激活您的軟件包?聽起來很奇怪,但它應該以這種方式工作。 –

2

嘗試刪除默認的參數值從包裝方法。

[ExtensionOf(tableStr(CustTable))] 
final class CustTable_Extension 
{ 
    void update(boolean _updateSmmBusRelTable , boolean _updateParty) 
    { 
     CustTable custTable_Orig = this.orig(); 
     boolean hasChanged = this.CreditMax != custTable_Orig.CreditMax; 

     next update(_updateSmmBusRelTable, _updateParty); 

     if(hasChanged) 
     { 
      //do something 
     } 
    } 
} 
相關問題