2015-10-06 49 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