Как фильтровать, используя выражение OR в веб-сервисе Dynamics NAV? - PullRequest
0 голосов
/ 01 июня 2018

Мне нужна помощь в фильтрации ключевого слова в двух разных полях с помощью выражения OR.См. Пример ниже.

Мне нужно найти Джона в полях FirstName и ShortName из NAV, используя OR.

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 Ответ

0 голосов
/ 01 июня 2018

Можно использовать конструкцию FILTERGROUP (-1) в коде NAV - она ​​будет эффективно работать как предложение OR.

SearchString := 'John';
FILTERGROUP(-1);
SETFILTER("First Name", SearchString);
SETFILTER("Short Name", SearchString);
IF FINDSET THEN REPEAT
  ...
UNTIL NEXT = 0;
FILTERGROUP(0);

Это действительно механизм, который стоит за функцией окна поиска в списке веб-клиента NAVстраниц.

Таким образом, вы можете создать пользовательскую функцию codeunit в NAV для фильтрации и возврата результатов.Не уверен, возможно ли сделать то же самое со стороны потребителя веб-службы.

Подробнее в этом сообщении в блоге: https://dynamicsuser.net/nav/b/vanvugt/posts/filtergroup-1

Группа фильтров -1 просто упоминается в документации MSDN, но безлюбые детали: https://docs.microsoft.com/en-us/dynamics-nav/filtergroup-function--record-

...