Значения фильтра этого типа обрабатываются по следующим правилам:
| Операция | Значение | Описание |
|---|---|---|
| пустая строка | Фильтр по полю применяться не будет. Будут выбраны все значения. | |
| "?" | не пустая строка | Значением фильтра должна быть строка которая может содержать сложную логику. |
| "%", "!%" | не пустая строка | Будет выполнен регистронезависимый поиск подстроки. |
| "><" или "!><" | должно быть массивом с двумя элементами | Будет выполнена проверка на попадание в диапазон заданный элементами массива значения фильтра. Включительно. Если перед полем этого указано отрицание (символ "!"), то будут выбраны значения не попадающие в диапазон.
|
| false | Если перед полем этого фильтра указано отрицание (символ "!"), то будут выбраны все не пустые значения.
Иначе будут выбраны пустые значения - NULL или те у которых длина равна нулю. | |
| "="
| будет приведено к верхнему регистру
| Проверка на точное совпадение значения. Если указано отрицание, то проверка будет выполнена на неравенство. Проверка регистронезависимая.
|
| ">", "<", ">=", "<=" | будет приведено к верхнему регистру | "Больше", "меньше", "больше или равно" и "меньше или равно". Можно использовать "!" для отрицания условия. Не зависит от регистра.
|
| не указана | будет приведено к верхнему регистру | Значение фильтра будет служить маской для отбора значений. "%" - любое количество любых символов, "_" - один любой символ. |
Примечание
Если значение фильтра массив, то для каждого элемента будут формироваться соответствующие условия, а затем они будут объеденены по "ИЛИ". В случае отрицания условия будут объединяться по "И".См. также
Примеры использования
<?
$arFilter = (
...
"NAME" => false, //Не вернет ничего т.к. нет пустых NAME
"NAME" => "", //вернет все т.к. фильтр не будет применен
"NAME" => "А%", //вернет все NAME начинающиеся на "A"
"?NAME" => "(мама || мачеха) && (папа || отчим)", //Все имют двух родителей
">NAME" => "э", //Все начинающиеся на Э, Ю, Я.
...
);
?>
Пользовательские комментарии
Пользовательские комментарии не являются официальной документацией. Ответственность за их использование несет сам пользователь.Добавлять комментарии могут только зарегистрированные пользователи. Сообщения для просмотра появляются после модерации.
|
| ||
|
Задача: Вывести дерево разделов только до текушего раздела + потомки текущего раздела. Ну как в проводнике папки.
Решение:
| ||
|
| ||||||||
|
Вопрос: Есть очень большой каталог, несколько тысяч, у каждого задействовано много пользовательских св-в элемента для описания характеристик товара, нужно сделать выбор по двум словам, которые могут содержаться в одном из пользовательских св-в элементов.
Как сделать через маску? Решение: Например, нужны элементы содержащие в значении этого св-ва два слова "Citroen" "Berlingo" 1 Вариант маски
2 Вариант маски
Ну и потом запрос
По производительности 2й вариант хуже, так как 1-й вариант
В то время как 2й вариант - делает переработку фильтра запроса (ради интереса можете сами посмотреть последовательность) С другой стороны, если в 1-м варианте поменять местами слова, то ничего не найдется, а во втором - должно сработать. | ||||||||

