2015-10-06 48 views
0

我需要將Ms Dynamics Crm 2015 - On Premise中的實體同步到我的第三方應用程序,爲此,我在Entites(例如。帳戶)的OnSave事件上設置了一個JavaScript函數,可以訪問所有的屬性,並將它們發送到我的web服務,但實體的Id(GuId)! 我該如何訪問此事件的Id(或手動設置)?ms crm 2015 - 從jscript onsave中設置實體的id

Xrm.Page.getAttribute("accountid")Xrm.Page.getAttribute("id")都返回null,所以我不能使用它們的setValue。

另外Xrm.Page.data.entity.getId()返回""這可能是合乎邏輯的,因爲Object尚未被插入到數據庫中,這就是插入一個運行時生成的GUID爲entety似乎可行的原因!

P.S. 我知道我可以做同樣的事情與插件,我已經通過,但問題是,當我註冊我的插件Update消息它被稱爲很多次,(主要是當它已被設置爲invoice),這是讓我走JScript的原因,因爲OnSave事件似乎比Update更合乎邏輯插件的消息

回答

1

正如您已經發現的那樣,尚未保存的記錄沒有ID。這是設計(並明顯)。

此外,ID是數據庫中的PK,它們由系統處理,不能被觸摸或手工製作。

你最好保持一個類似的行爲將是一個Post-Operation Create插件生活在沙箱外(Isolation mode: None)。

另一個不錯的選擇是提取數據而不是推送數據:第三方應用程序可以通過任何公開的API(REST,SOAP,SDK ...)提供許多選項來定期獲取新記錄。

+0

Ofcourse的插件方法會工作,但怎麼樣的jScript方法? 關於使用'Xrm.Page.data.save(saveOptions).then(successCallback,errorCallback)'函數的任何想法?! –

+1

我想不出一個乾淨的方式來完成通過JScript沒有多個外部調用和/或冒着弄亂數據的風險。腳本並不意味着這一點。 – Alex