Четверг, 26.04.2018, 23:37
Приветствую Вас Гость | RSS

Bitrix программирование

Категории раздела
Статистика



Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа

Сложная логика в фильтре

Каталог статей

Главная » Статьи » Программирование

Сложная логика в фильтре

Поля фильтров с символом "?" позволяют вводить запросы.

Использование запросов

Запрос представляет из себя логическое выражение. Например, выборка пользователей по полю ФИО пользователя. Если ввести

Пётр & Иванов

то отфильтруются все пользователи, у которых в поле ФИО встречаются оба эти слова, либо полностью, либо частично. Такого же результата можно добиться, написав эти слова через пробел: Пётр Иванов.

Если нужно отфильтровать всех пользователей, у которых в поле ФИО встречается Пётр или Иванов, необходимо ввести запрос:

Пётр | Иванов

Когда необходимо использовать отрицание, предусмотрен логический оператор "~". Например: 

(Пётр | Иванов) & ~Сидоров.

Данный запрос означает: вывести всех пользователей, у которых в поле ФИО встречаются сочетания букв Пётр или Иванов и в то же время не встречаются Сидоров.

В последнем запросе были использованы круглые скобки. Это обусловлено тем, что оператор "|" имеет более низкий приоритет, чем оператор "&" (см. таблицу Приоритеты логических операторов). В противном случае, если бы мы не указали круглых скобок, запрос Пётр | Иванов & ~Сидоров имел бы следующее значение: вывести всех пользователей, у которых в поле ФИО встречаются сочетания букв Иванов и не встречаются Сидоров, либо всех пользователей, у которых в поле ФИО встречается Пётр.

Вы можете использовать скобки и для построения более сложных запросов.

Помимо вышеописанных операторов, возможно использование операторов для задания масок. Например, вы не помните ФИО нужного вам человека, но точно знаете что фамилия начинается на "Пе" и заканчивается на "ова", при этом имя этого человека "Ирина" либо "Ирэна". Для описания данных условий необходимо использовать следующий запрос: Пе%ова & Ир_на. В данном запросе были использованы два оператора: "%", означающий "ноль, либо более любых символов" и оператор "_", означающий "один любой символ".

В случае, если вам необходимо использовать поиск слов, содержащих зарезервированные символы, воспользуйтесь двойными либо одинарными кавычками, например:"~NICK~" | '&Leon&'. Если вам необходимо найти фразу содержащую пробелы, выделите ее двойными либо одинарными кавычками, например: "Microsoft Internet Explorer" | 'Netscape Navigator'.

Во всех выражениях запроса регистр символов значения не имеет.

Операторы, используемые в запросах

ОператорОписание
&Логический оператор "и" можно опускать: запрос Пётр & Иванов полностью эквивалентен запросу Пётр Иванов.
|Логический оператор "или" позволяет искать записи, содержащие хотя бы один из операндов.
~Логический оператор "не" позволяет искать записи, не содержащие слово, указанное сразу после оператора, либо означает отрицание выражения, следующего сразу за этим оператором.
( )Круглые скобки задают порядок действия логических операторов.
%Оператор задания маски. Означает "0 или более любых символов".
_Оператор задания маски. Означает "1 любой символ".

Приоритеты логических операторов

ОператорПриоритет
~1
&2
|3



Источник: http://dev.1c-bitrix.ru/user_help/general/filter.php
Категория: Программирование | Добавил: Shak (11.08.2011)
Просмотров: 7735 | Теги: сложная логика в фильтре, фильтр со сложной логикой, сложная логика | Рейтинг: 0.0/0
Поиск

Shak © 2018
Копирование материала без указания автора и ссылки на сайт запрещается.
Если вы разместили материал у себя на сайте обязательно свяжитесь со мной shakleinserg{собака}gmail.com
Создать бесплатный сайт с uCoz