我需要将Ms Dynamics Crm 2015 - On Premise
中的实体同步到我的第三方应用程序,为此我已经在Entites的OnSave事件上设置了JavaScript函数(例如帐户)我可以访问所有属性并发送它们到我的webservice,但实体的Id(GuId)!
如何在此活动中访问Id(或手动设置)?!
Xrm.Page.getAttribute("accountid")
或Xrm.Page.getAttribute("id")
都返回null,因此我无法使用它们设置值。
同样Xrm.Page.data.entity.getId()
返回""
这可能是合乎逻辑的,因为还没有在数据库中插入Object,这就是为entety插入运行时生成的guid似乎可行的原因!
P.S。
我知道我可以用插件做同样的事情,我已经完成了,但问题在于,当我为Update
消息注册我的插件时,它会被调用很多次,(大多数情况下它被设置为invoice
),这就是让我使用JScript的原因,因为OnSave
事件似乎比插件的Update
消息更合乎逻辑
答案 0 :(得分:1)
正如您已经发现的那样,尚未保存的记录没有ID。这是设计的(也是显而易见的)。
此外,ID是数据库中的PK,它们由系统处理,无法触摸或手工制作。
保持类似行为的最佳选择是住在沙箱外的Post-Operation Create
插件(Isolation mode: None
)。
另一个好的选择是提取数据而不是推送数据:第三方应用程序可以通过任何公开的API(REST,SOAP,SDK ......等等)定期获取新记录。