这可能看起来有点奇怪,所以我会尝试提供一些背景信息。我的CRM上有一个功能,要求用户应该能够过滤视图,然后保存结果记录,以便单独的过程可以接收它们并定期处理它们,例如每日。
现在这里是捕获,他们希望这个过程在处理数据之前重新查询数据,所以基本上应该保存的是查询或过滤器而不是视图中的数据。
之前已经编写过一些javascript代码,可以像这样在子网格上动态设置fetchxml
Subgrid.getGrid().setParameter("fetchXml", fetchxml);
我虽然应该可以直接检索网格中的fetchxml
Subgrid.getGrid().getParameter("fetchXml");
然而,这不起作用,我似乎无法找到任何可以指向正确方向的文件或任何内容。我使用Developer工具来检查Mscrm.XrmControlGridWrapper
的属性,但我找不到任何有用的东西..
如果有人知道如何使用javascript检索为子网格提供动力的fetchxml,那会非常有帮助吗?
修改
我刚刚发现我可以做到这一点
Subgrid.getGrid().getFilter().$3_1.GetParameter("fetchXml")
然后返回我想要的东西,但这只是尖叫的hacky和不支持。
$3_1
的类型为[object (Mscrm.TurboGridControl)]
有没有办法以受支持的方式访问此对象?
答案 0 :(得分:0)
对此有一些想法:
您可以检索SystemForm记录,然后解析FormXml以获取ViewId。然后,您可以从SavedQuery实体中检索视图,并获取FetchXML。以下是FormXml中ViewId的示例:
您可以向实体添加布尔字段,当用户保存他们想要处理的集合时,您可以标记这些记录以供稍后批处理过程检索。
当用户识别出他们想要处理的集合时,您可以使用带有Guid列表的“in”运算符临时创建一个带有FetchXML的视图(SystemQuery或UserQuery),以识别要处理的确切记录。使用视图检索和处理记录后,批处理可以删除视图。我可能会习惯使用这种方法达到几十条记录。
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false"> <entity name="account"> <filter type="and"> <condition attribute="accountid" operator="in"> <value>{A1CC84F2-BE0D-E711-8104-00155D6FD705}</value> <value>{A3CC84F2-BE0D-E711-8104-00155D6FD705}</value> <value>{A5CC84F2-BE0D-E711-8104-00155D6FD705}</value> </condition> </filter> </entity> </fetch>
答案 1 :(得分:0)
您可以这样做:
由于您拥有先前设置为fetchxml
的过滤器的SubGrid
,所以为什么不直接存储此变量。您可以将此变量保存在localStorage中,甚至保存在为此目的而创建的虚拟字段中。并在所需的过程中使用它。
顺便说一句,获取fetchXml的受支持方法:Xrm.Page.getControl(gridControlName).getFetchXml()
希望这对您有帮助...