在CRM 2011中,将信息从javascript发送到插件的最佳方式

Tro*_*roy 2 crm dynamics-crm dynamics-crm-2011

我在CRM 2011表单上有一个HTML Web资源,用户将输入数据.如果用户选择保存主表单,则CRM创建/更新插件将需要此数据,但没有功能要求需要将数据保存到实体上的任何字段.我正在考虑一个可以保存数据的隐藏虚拟字段,但我想知道是否有更优雅的东西来保存从客户端到服务器技术的数据.我已经对"共享变量"进行了一些研究,但还无法确定它们是否满足这种需求.使用JavaScript设置值然后从插件中检索它的任何示例都是有价值的.

编辑:我只是想根据我的测试澄清我收到的回复.虽然CRM具有可用于插件和脚本的"SharedVariables",但是脚本中保存的任何数据都不可用于插件.由一个javascript函数保存到"SharedVariables"的数据将可用于为同一事件注册的其他javascript函数,并且插件保存的数据可用于为同一事件注册的其他插件,但数据不会从脚本持久保存到插件或反之亦然.这会将虚拟字段作为将数据从javascript持久保存到插件的唯一选项.正如NickNow建议的那样,除非你需要将数据保存到数据库,否则在预插件上删除它将是一个好主意.谢谢Nicknow!

Nic*_*now 6

隐藏/虚拟字段是正确的方法.SharedVariables从插件的角度来看,不存在,直到数据被发送到服务器.

表单保存只是一个触发创建或更新事件的UI - 从平台的角度来看,您只是发送实体逻辑名称,记录guid(用于更新)和字段/值.该插件不知道如何触发事件,也不需要知识.

我所做的是创建一个字段(例如`new_internalmessaging')作为文本字段(因为我永远不会将值保存到数据库我只是使它成为一个2000字符的字符串).在JavaScript OnSave事件期间,我将所需的任何数据抓取到对象中并创建一个JSON字符串,然后我用它来填充该字段.

在我的预创建和预更新插件中,我检索字符串并将其反序列化为一个对象,以便在我的插件中使用(SharedVariable如果我需要它用于post插件,我也可以将它放在此处).此时插件代码应该new_internalmessaging从中删除Target.

我这样做是为了确保该字段中的数据永远不会持久存储到CRM.