Rest Microsoft Dynamics预定义查询

Rest Microsoft Dynamics预定义查询,rest,odata,microsoft-dynamics,Rest,Odata,Microsoft Dynamics,我们正在编写一个web服务,它需要从MS Dynamics查询一个稍微复杂的数据集。所谓“有点复杂”,我的意思是它需要查询实体层次结构的多个级别。Dynamics oData实现将oData查询的深度限制为两个(即,您可以查询父级和子级,但不能查询该子级的子级) 向前推进的一种方法是通过发出数千个oData调用来遍历实体层次结构,但这一点都不吸引人(这有点违背了服务器端数据库的全部目的) 另一个问题是,我们需要与许多不同的动力学系统交互,这些系统都不允许我们加载自定义的.NET插件。这可能无关紧

我们正在编写一个web服务,它需要从MS Dynamics查询一个稍微复杂的数据集。所谓“有点复杂”,我的意思是它需要查询实体层次结构的多个级别。Dynamics oData实现将oData查询的深度限制为两个(即,您可以查询父级和子级,但不能查询该子级的子级)

向前推进的一种方法是通过发出数千个oData调用来遍历实体层次结构,但这一点都不吸引人(这有点违背了服务器端数据库的全部目的)

另一个问题是,我们需要与许多不同的动力学系统交互,这些系统都不允许我们加载自定义的.NET插件。这可能无关紧要,但我们正在用Java编写客户端代码,确实需要使用常规的REST类型调用


我在想,如果有一种方法可以在Dynamics中预定义一个命中复杂查询的数据报告,那么我们可以通过REST接口查询该报告。到目前为止,我还没有找到一种方法来做到这一点,我想我应该把它扔给社区,看看是否有人有任何建议。

您可以在NAV中创建一个查询对象,并将该查询对象发布为Web服务 如果查询对象在NAV中不可用(NAV版本<2013),则可以创建codeunit,在其中生成数据集,并将codeunit发布为Web服务。 第三个选项是,如果NAV在SQL server上运行,您可以在其中创建一个视图/可诱惑/存储过程来创建数据集;或者使用SQL分析服务


干杯

我们最终完全放弃了restapi,转而使用SOAP。从那里,我们可以执行FetchXML并获取所需内容。

谢谢-这是正确的技术答案。对我们来说,向现有的动态系统添加代码不是一个选项,所以我们不得不放弃REST,转而使用SOAP。