Как применить Entity_Filter как ИЛИ в Dynamics NAV WebService
Я использую веб-сервис Dynamics NAV 2009 (SOAPish). Конкретно я говорю о методе ReadMultiple MSDNA
FilterArray принимает массив объектов Entity_Filter. Каждый Entity_Filter имеет свойство Field и Criteria.
Теперь я хочу знать, как я могу применять фильтры как ИЛИ, так и нет.
Например, я передаю два фильтра:
Entity_Filter { Field: "Name", Criteria: "*banana*" }
Entity Filter { Field: "Color", Criteria: "yellow"}
Если я отправляю это в ReadMultiple, я получаю все записи, которые имеют "банан" как часть имени И цвет желтый. Что я должен сделать, чтобы получить все записи, которые имеют "банан" как часть имени ИЛИ желтый цвет?
1 ответ
К сожалению, невозможно применить фильтр "ИЛИ" к записи. Метод ReadMultiple применяет фильтры аналогично методам C/AL SETFILTER или SETRANGE. Это должно быть сделано в двух отдельных запросах.
Во-вторых, вы можете сделать это за один запрос, но с помощью службы OData, использующей Linq:
NAV nav = new NAV(new Uri("http://ServerName:Port/DynamicsNAV71/OData/Company('Your Company Name')"));
nav.Credentials = CredentialCache.DefaultCredentials;
var items = from i in nav.ItemsList where i.Name.Equals("Banana") || i.Color.Equals("Yellow") select i;
Где "ItemsList" - это веб-сервис OData типа "Страница"