Бизнес-смысл
Расширенный поиск — это возможность искать контрагентов, не ограничиваясь стандартными рамками, строить гибкие отчеты и составлять различные комбинации условий.
В системе обнаружилось 100 человек со словом «Гагарина»? А сколько тех, у кого это фамилия? Или наоборот, улица в адресе?
Простой поиск ищет по всем полям, расширенный — по конкретному. Поиск ищет только по полному совпадению ( по частичному - нет). При пустом вводе поиск вернёт полный список базы данных.
Описание
Расширенный поисковый запрос всегда должен начинаться с вопросительного знака:
? Folk.name = Иван
Чтобы увидеть результаты расширенного поиска, необходимо нажать Ctrl+Enter
(в отличие от Enter
для обычного поиска).
Поиск возможен по следующим полям и атрибутам:
Синтаксис
Равенство
Чтобы обозначить равенство, можно использовать символ =
.
Контрагенты с фамилией Иванов:
? Folk.surname = Иванов
Контрагенты, родившиеся 18.03.1975:
? Folk.birthdate = 18.03.1975
Пробел интерпретируется как разделитель, составные значения нужно передавать в кавычках:
? Folk.patronymic = "Бахтырай Оглы"
Неточный поиск
В расширенном поиске можно искать по части слова, используя символ *, который означает "любое количество любых символов"
Контрагенты с фамилией Иванов:
? Folk.surname = Ива*
Контрагенты с датой рождения, содержащей цифры 03
? Folk.birthdate = *03*
Пробел экранируем через слеш
? Folk.company = *часовой\ пояс*\ Омск*
Если нужно искать именно кавычки, их тоже экранируем
? Folk.company = *\"Яблочко*\" ? Folk.company = *Студия\ \"Яблочко\"* --- экранируем сначала пробел, потом кавычку
Примеры правил поиска с пробелами и кавычками:
- Поискать ЮЛ с пробелами в названии: [? Folk.company = *\ *] - Поискать ЮЛ с двумя пробелами в названии [? Folk.company = *\ *\ *] - Поискать ЮЛ, у которого есть часть в кавычках, а внутри неё пробел [? Folk.company = *\"*\ *\"*] (первая и последняя звёздочки для "любое начало и конец"; кавычки экранированы, т.к. спец.символ; между кавычками стоит "что угодно, пробел, что угодно")
Просто написать
? Folk.company = *часовой пояс Омск*
Нельзя → пробел означает, что поиск по данной сущности закончен и дальше или новый запрос, или простой поиск, не расширенный. То есть мы получили три условия поиска:
- ? Folk.company = *часовой
- Пояс
- Омск*
Из них «*часовой» относится к наименованию, а остальное — к любым индексируемым полям.
Если брать в кавычки, не будет работать символ *
Комбинация условий
Чтобы выполнялись несколько условий поиска одновременно, необходимо использовать выражение AND
(И)
.
Например, Ивановых, родившихся 18.03.1975, можно найти таким запросом:
? Folk.surname = Иванов and Folk.birthdate = 18.03.1975
Чтобы выполнялось хотя бы одно условие поиска, необходимо использовать использовать выражение OR
(ИЛИ)
.
Например, поиск контрагентов с фамилией Иванов или Кутузов:
? Folk.surname = Иванов or Folk.surname = Кутузов
Можно использовать и простой поиск, и расширенный → если не экранировать пробел символом «\», то пробел в расширенном поиске означает, что дальше мы ищем полнотекстово.
Поэтому можно совместить — сначала все условия по атрибутам, потом пробел и ФИО одной строкой
? Phone.aggregateNumber = 4953332243 Иванов Иван Иванович
Перечисления
Поиск по вхождению значения в множество значений (перечисление) выполняется с помощью выражения OR
(ИЛИ
).
Например, для поиска всех контрагентов с указанными идентификаторами:
? Folk.id = (1024 or 1025 or 1026 or 2048)
Неравенства и диапазоны
Для числовых полей и дат можно делать выборки по условиям на неравенство:
- >
- >=
- <
- <=
Например, для поиска всех контрагентов старше 20 лет:
? Folk.birthdate > 01.01.1993
Если дата может включать время, то для поиска по конкретному дню необходимо использовать диапазон дат. Например, чтобы найти контрагентов с датой рождения 15.01.2013:
? Folk.birthdate >= 15.01.2013 and Folk.birthdate < 16.01.2013
Условие на диапазон также можно указать с помощью интервала:
? Folk.birthdate : [18.03.1975, 18.03.1995]
Квадратные скобки []
указывают, что поиск включает границы интервала, фигурные скобки {}
— что не включает.