Filter 如何在Dynamics NAV web服务中使用或表达式进行筛选?

Filter 如何在Dynamics NAV web服务中使用或表达式进行筛选?,filter,navision,dynamics-nav,Filter,Navision,Dynamics Nav,我需要一些帮助,在过滤关键字在两个不同的领域使用或表达式。见下面的例子 我需要使用OR从NAV搜索John到FirstName和ShortName字段 CustomerInterface.ClientInterface_Filter[] filters = { new CustomerInterface.CustomerInterface_Filter(), new CustomerInterface.CustomerInterface_Filter(), }; filters[0].Fiel

我需要一些帮助,在过滤关键字在两个不同的领域使用或表达式。见下面的例子

我需要使用OR从NAV搜索John到FirstName和ShortName字段

CustomerInterface.ClientInterface_Filter[] filters =
{
new CustomerInterface.CustomerInterface_Filter(),
new CustomerInterface.CustomerInterface_Filter(),
};

filters[0].Field = CustomerInterface.CustomerInterface_Fields.FirstName;
filters[0].Criteria = "John";

filters[0].Field = CustomerInterface.CustomerInterface_Fields.ShortName;
filters[0].Criteria = "John";

CustomerInterface.CustomerInterface[] response = service.ReadMultiple(filters.ToArray(), null, 0);

我如何过滤它?谢谢。

可以在导航代码中使用构造过滤器组(-1)-它将作为OR子句有效地工作

SearchString := 'John';
FILTERGROUP(-1);
SETFILTER("First Name", SearchString);
SETFILTER("Short Name", SearchString);
IF FINDSET THEN REPEAT
  ...
UNTIL NEXT = 0;
FILTERGROUP(0);
它实际上是NAV web客户端列表页面中搜索框功能背后的一种机制

因此,您可以在NAV中创建一个自定义codeunit函数来过滤并返回结果。不确定是否可以从web服务消费者端执行同样的操作

更多详细信息,请参阅本博文:

过滤器组-1仅在MSDN文档中提及,但没有任何细节:

在Nav中,您不能设置或过滤两个字段。所以,除了两次查询之外,不要认为您可以通过web服务来完成。