Справка по системе Платформа ELMA BPM
×
Меню

Язык EQL

Язык EQL (ELMA Query Language) – язык запросов к данным, хранящимся в системе ELMA, который расширяет возможности создания сложных выборок данных, т.е. позволяет создать фильтр даже с такими критериями, которые не заложены в базовом функционале настроек фильтра.
EQL-запрос – это структурированный запрос к данным системы ELMA, позволяющий создавать сложные выборки данных и создаваемый при помощи языка EQL.
Структура EQL-запроса в общем виде схожа со структурой SQL-запросов в языке SQL. Далее будут описаны основные операторы и возможности создания EQL-запросов.
Структура данного раздела:

Синтаксис

Общие рекомендации при написании запросов
1. Простые поля (строка, число) могут быть сравнены с другими полями того же типа или с константами.
2. Поля, являющиеся ссылкой на другой объект, могут быть сравнены только с идентификатором данного объекта (например: Contacts = 2 – поиск контрагентов, имеющих контактное лицо с идентификатором 2).
3. Существует только три типа констант:
4. Строковые константы задаются в одинарных кавычках (Name LIKE ’%ООО%’).
5. В числах разделителем целой и дробной части является точка.
6. Для добавления символа ’ (апостроф) в строку необходимо при вводе продублировать его (например: Name LIKE ’%Задача ’’Подписание пакета документов’’%’ – поиск всех задач, название которых содержит комбинацию "Задача ’Подписание пакета документов’").
7. Для написания запросов необходимы данные о структуре объектов системы. Структуру объекта можно посмотреть в Дизайнере на вкладке Объекты в карточке объекта на вкладке Свойства : на ней можно увидеть список всех полей объекта - их названия и типы
Логические операторы
Логические операторы (AND, OR, NOT) соединяют между собой несколько условий и имеют разный приоритет. В том случае, если в выражении в цепочке используется несколько., то они выполняются в следующем порядке:
1. Управление приоритетом.
2. Операторы отрицания NOT.
3. Логические операторы AND.
4. Логические операторы OR.
Управление приоритетом
Для обозначения приоритета среди выражений в сложных запросах используются круглые скобки:
(Name LIKE ’%ООО%’ OR Name LIKE ’%ЗАО%’) AND (Region = 6) – поиск контрагентов из Уральского региона, в названии которых содержатся слова "ООО" или "ЗАО".
Вместе с оператором OR использованы круглые скобки, для того, чтобы обозначить его приоритет перед оператором AND.
AND
При использовании данного оператора для выполнения условия должны быть выполнены оба подусловия, которые он соединяет:
Name LIKE ’%Ушаков%’ AND Name LIKE ’%Иван%’ AND Name LIKE ’%Петрович%’ – поиск контрагентов, в названии которых содержатся слова "Ушаков", "Иван", "Петрович", причем по обе стороны от данных слов могут находиться любые символы.
OR
При использовании данного оператора для выполнения условия достаточно выполнения одного из подусловий:
Name LIKE ’%ООО%’ OR Name LIKE ’%ЗАО%’ – поиск контрагентов, в названии которых содержатся слова "ООО" или "ЗАО", при чем по обе стороны от обоих слов могут находиться любые символы.
NOT
Данный оператор используется для отрицания условия и располагается перед ним:
NOT (Name LIKE ’%ООО%’ OR Name LIKE ’%ЗАО%’) – поиск контрагентов, в названии которых не содержится слов "ООО" или "ЗАО".
Операторы сравнения
Операторы сравнения позволяют сравнивать между собой несколько полей объектов, значений выражений или констант. В том случае, если условие является истинным и выполняется, значением всего выражения является TRUE, а если условие не выполняется и является ложным – FALSE.
Равенство =
Операция проверки на точное равенство первого операнда второму. Строки сравниваются с учетом регистра.
Если точное сравнение строк не требуется, а необходимо проверить строку на наличие подстроки, рекомендуется использовать оператор LIKE.
Операцию равенства не рекомендуется применять к датам, т.к. точное совпадение даты и времени маловероятно. К датам рекомендуется применять такие операции сравнения, как <, >, <=, >=.
Responsible = CurrentUser() – поиск контрагентов, для которых текущий пользователь является ответственным.
Неравенство <>
Проверка неравенства значений с учетом их регистра.
Responsible <> CurrentUser() – поиск контрагентов, для которых текущий пользователь не является ответственным.
Меньше <
Оператор строгого неравенства. Значение левой части выражения должно быть строго меньше правой.
AnnualIncome < 2500000 – поиск контрагентов, годовой доход которых меньше 2500000 рублей.
Больше >
Оператор строгого неравенства. Значение левой части выражения должно быть строго больше правой.
AnnualIncome > 500000 – поиск контрагентов, которых годовой доход которых больше 500000 рублей.
Меньше либо равно <=
Оператор нестрогого неравенства. Значение выражения будет истинно, если левая часть будет меньше либо равна правой.
CompanyDay <= DateTime(1989, 01, 03) – поиск контрагентов, дата создания которых меньше или равна 03.01.1989.
Больше либо равно >=
Оператор нестрогого неравенства. Значение выражения будет истинно, если левая часть больше либо равна правой.
CompanyDay >= DateTime(1989, 01, 03) – поиск контрагентов, дата создания которых больше или равна 03.01.1989.
Другие операторы сравнения
Данные операторы являются регистронезависимыми, т.е. результаты запроса будут одинаковы независимо от регистра введенного текста (на запрос Name LIKE ’%Мир%’ будут выведены результаты "Мир" и "мир").
LIKE
Данный оператор применяется только для строковых переменных. Оператор сравнивает строковое поле с указанной маской (шаблоном), и при выполнении условия объект попадает в результат выборки.
Данный оператор следует применять с масками строк, например, ’%Мир%’. Если в одиночных кавычках указывать конкретную строку, то действие данного оператора будет равносильно обычному равенству.
Например, следующие запросы будут полностью эквивалентны:
(Name LIKE ’%ООО%’ OR Name LIKE ’%ЗАО%’)
(Name = ’%ООО%’ OR Name = ’%ЗАО%’)
Маска (шаблон) может содержать в себе следующие знаки:
Данный оператор устанавливает соответствие значения определенного поля с каждым из элементов, указанных после него в скобках. Оператор IN подходит для сравнения значения поля с небольшим количеством элементов.
CreationAuthor in (CurrentUser(), 1) – поиск контрагентов, которые были созданы текущим пользователем или пользователем с идентификатором 1.
IS NULL, IS EMPTY
IS NULL
– проверка равенства выражения в левой части оператора пустому значению (Null). Применяется только к объектам с единичным выбором (поле "Отрасль" для контрагента).
Применяется к объектам с единичным выбором. Например, в справочнике "Отрасли" для контрагента можно выбрать только одну отрасль - это единичный выбор.
Industry IS NULL – поиск контрагентов с незаполненным полем "Отрасль".
IS EMPTY
– применяется к объектам со множественным выбором.
Contacts IS EMPTY – поиск контрагентов c пустым списком контактов.

Функции

Подробное описание функций, участвующих в запросах, см. в соответствующем разделе справки.

Подзапросы

Подробное описание использования подзапросов см. в соответствующем разделе справки.

См. также: