Операторы и функции¶
Под полем "Имя" расположена строка с набором доступных инструментов — операторов и функций. Отображаемый на ней набор инструментов зависит от выбранного атрибута и текущего редактируемого выражения.
Если вы знакомы с Entity SQL, есть возможность подставлять некоторые операторы этого языка для формирования нужной строки условий отбора (полный список операторов Entity SQL, доступен по адресу: Справочник по Entity SQL).
Использование ID объектов¶
Вместо непосредственного ввода ID объекта предпочтительнее использовать кнопку ID объекта.
По кнопке открывается окно для выбора объекта:
В результате будет создана конструкция, в которой вместо числового ID объекта используется типизированная ссылка на него.
Такой способ формирования ссылки на объект является предпочтительным, поскольку облегчает выполнение служебных заданий и перенос смарт-выражений между разными инсталляциями системы.
Операторы¶
-
В списке -- Оператор, проверяющий входит ли значение атрибута в список значений {a,b,c};
-
Не в списке -- Оператор, проверяющий исключение значений атрибута из списка значений {a,b,c};
Функции¶
Строки¶
ℹ️ Строковые константы должны заключаться в одинарные кавычки, например:
| Функция | Описание | Атрибуты | Возвращаемое значение |
|---|---|---|---|
| БезПробеловСЛВ | Возвращает строку без начальных пробелов слева > ℹ️ Обратите внимание: в редакторе смарт-выражений пробелы могут сохраняться при отображении результатов тестирования. Однако это никак не влияет на итоговый результат |
Строка | Строка |
| БезПробеловСПР | Возвращает строку без конечных пробелов справа > ℹ️ Обратите внимание: в редакторе смарт-выражений пробелы могут сохраняться при отображении результатов тестирования. Однако это никак не влияет на итоговый результат |
Строка | Строка |
| БезПробелов | Возвращает строку без начальных и конечных пробелов > ℹ️ Обратите внимание: в редакторе смарт-выражений пробелы могут сохраняться при отображении результатов тестирования. Однако это никак не влияет на итоговый результат |
Строка | Строка |
| ВернутьСлева | Возвращает первые N символов строки | Строка, Целое число (количество символов, N) | Строка |
| ВернутьСправа | Возвращает последние N символов строки | Строка, Целое число (количество символов, N) | Строка |
| ИндексПодстроки | Возвращает позицию подстроки в строке | Подстрока, Строка | Целое число |
| Подстрока | Возвращает N символов строки начиная с позиции M | Строка, Целое число (начальная позиция, M), Число (количество символов, N) | Строка |
| DateConvert | Преобразование даты в строку по указанному формату (см. форматы) | Строка, Число | Строка |
| ВВерхРегистр | Преобразование всех символов строки в верхний регистр | Строка | Строка |
| ВНижРегистр | Преобразование всех символов строки в нижний регистр | Строка | Строка |
| ЗаменитьВСтроке | Замена всех вхождений подстроки1 на подстроку2 | Строка (где менять), Подстрока1 (что менять), Подстрока2 (на что менять) | Строка |
| НачинаетсяС | Проверяет, начинается ли строка с подстроки | Строка, Подстрока | Логическое значение |
| ОбратитьСтроку | Переставляет все символы в строке в обратном порядке ("задом наперед") | Строка | Строка |
+ |
Соединение строк (например: Категория.Описание = Категория.Название + '123') | Строка | Строка |
| IsNullString | Проверяет, является ли строка1 пустой. Если не является, то возвращает строку1; если является, то возвращает строку2 | Строка 1 (проверяемая строка), Строка 2 (возвращается, если строка1 пустая) | Строка |
| ВДробноеЧисло | Преобразует строку в десятичную дробь. Разделителем должна быть точка. Если строка не может быть преобразована, возвращает ошибку | Строка | Десятичная дробь |
| ВЦелоеЧисло | Преобразует строку в целое число. Если строка не может быть преобразована, возвращает ошибку | Строка | Целое число |
| ДлинаСтроки | Возвращает длину строки | Строка | Целое число |
| ЗаканчиваетсяНа | Проверяет, заканчивается ли строка подстрокой | Строка, Подстрока | Логическое значение |
| Конкатенация | Соединяет две строки | Строка 1, Строка 2 | Строка |
| Перенос строки | Вставляет символ переноса строки | — | Строка |
| ПовторитьСтроку | Повторяет строку N раз | Строка, Целое число | Строка |
| ПоискВСтроке | Возвращает позицию первого вхождения подстроки в строке и Даже если поиск осуществляется не с первой позиции, функция все равно возвращает позицию вхождения относительно начала строки. | Подстрока (что искать), Строка (где искать), Целое число (номер позиции, начиная с которой осуществляется поиск. Отсчет позиций начинается с 1. Если параметр равен 0, то поиск также ведется с начала строки) | Целое число |
| ПоискПоШаблону | Возвращает позицию первого вхождения шаблона в строке. Шаблон включает символы-шаблоны '%' (любое количество символов) и '_' (один символ). | Строка (шаблон), Строка | Целое число |
| ПробелыВASCII | Генерирует строку из N пробелов | Целое число | Строка |
| СтрокаНеПуста | Проверяет, есть ли в строке хотя бы один символ | Строка | Логическое значение |
| СтрокаПуста | Проверяет, является ли строка пустой | Строка | Логическое значение |
| СтрокаСодержит | Проверяет, содержит ли строка подстроку. При использовании функции для проверки наличия подстроки в значении ДП в карточке задачи рекомендуется дополнительно применять проверку на пустые значения. Если ДП не заполнен в карточке, его значение становится равным null. В таком состоянии любая операция поиска или сравнения, включая проверку на содержание подстроки, будет возвращать false, даже если логически ожидается иной результат. Функция IsNullString проверяет, является ли строка пустой или null, и если это так — возвращает значение строки2, которую можно задать как пустую или по умолчанию. | Подстрока (что содержит) | Логическое значение |
Числа¶
| Функция | Описание | Атрибуты | Возвращаемое значение |
|---|---|---|---|
- |
Числовые операторы | -, *, /, +, <, <=, >, >= |
|
| IsNullDecimal | Проверяет, является ли число1 пустым значением. Если не является, то возвращает число1; если является, то возвращает число2. | Число1 (проверяемое число), Число2 (возвращается, если число1 пустое). | Число в формате десятичной дроби с двумя знаками после запятой. |
| ВСтроку | Преобразует число в строку. Если число содержит десятичную дробную часть, должна быть точка. Если число не может быть преобразовано, возвращает ошибку. | Число | Строка |
Дата и время¶
| Функция | Описание | Атрибуты | Возвращаемое значение |
|---|---|---|---|
| ДобавитьДней | Добавляет к дате указанное количество дней. Количество может быть положительным и отрицательным | Дата и время, Целое число | Дата и время |
| ДобавитьЛет | Добавляет к дате указанное количество лет. Количество может быть положительным и отрицательным | Дата и время, Целое число | Дата и время |
| ДобавитьМесяцев | Добавляет к дате указанное количество месяцев. Количество может быть положительным и отрицательным | Дата и время, Целое число | Дата и время |
| ДобавитьМинут | Добавляет к дате указанное количество минут. Количество может быть положительным и отрицательным | Дата и время, Целое число | Дата и время |
| ДобавитьРабочихДней | Добавляет к дате указанное количество рабочих дней. Количество может быть положительным и отрицательным | Дата и время, Целое число | Дата и время |
| ДобавитьРабочихЛет | Добавляет к дате указанное количество рабочих лет. Количество может быть положительным и отрицательным | Дата и время, Целое число | Дата и время |
| ДобавитьРабочихМесяцев | Добавляет к дате указанное количество рабочих месяцев. Количество может быть положительным и отрицательным | Дата и время, Целое число | Дата и время |
| ДобавитьРабочихМинут | Добавляет к дате указанное количество рабочих минут. Количество может быть положительным и отрицательным. Работа функции в течение дня опирается только на системный параметр Рабочее время (с... по...) и не учитывает параметр Рабочих минут в дне. | Дата и время, Целое число | Дата и время |
| ДобавитьРабочихЧасов | Добавляет к дате указанное количество рабочих часов. Количество может быть положительным и отрицательным. Работа функции в течение дня опирается только на системный параметр Рабочее время (с... по...) и не учитывает параметр Рабочих минут в дне. | Дата и время, Целое число | Дата и время |
| ДобавитьЧасов | Добавляет к дате указанное количество часов. Количество может быть положительным и отрицательным | Дата и время, Целое число | Дата и время |
| РазницаДней | Возвращает число целых дней между двумя датами. Если первая дата больше второй, то разница отрицательная | Дата и время 1, Дата и время 2 | Целое число |
| РазницаЛет | Возвращает число целых лет между двумя датами. Если первая дата больше второй, то разница отрицательная | Дата и время 1, Дата и время 2 | Целое число |
| РазницаМесяцев | Возвращает число целых месяцев между двумя датами. Если первая дата больше второй, то разница отрицательная | Дата и время 1, Дата и время 2 | Целое число |
| РазницаМинут | Возвращает число целых минут между двумя датами. Если первая дата больше второй, то разница отрицательная | Дата и время 1, Дата и время 2 | Целое число |
| РазницаРабочихДней | Возвращает число целых рабочих дней между двумя датами. Если первая дата больше второй, то разница отрицательная | Дата и время 1, Дата и время 2 | Целое число |
| РазницаРабочихМинут | Возвращает число целых рабочих минут между двумя датами. Если первая дата больше второй, то разница отрицательная | Дата и время 1, Дата и время 2 | Целое число |
| РазницаРабочихЧасов | Возвращает число целых рабочих часов между двумя датами. Если первая дата больше второй, то разница отрицательная | Дата и время 1, Дата и время 2 | Целое число |
| РазницаЧасов | Возвращает число целых часов между двумя датами. Если первая дата больше второй, то разница отрицательная | Дата и время 1, Дата и время 2 | Целое число |
| УсечьВремя | Возвращает указанную дату со временем 0 часов 00 минут | Дата и время | Дата и время |
| ОкруглитьНачалоНедели | Возвращает первый день недели, содержащей указанную дату, со временем 0 часов 00 минут | Дата и время | Дата и время |
| ОкруглитьНачалоМесяца | Возвращает первый день месяца, содержащего указанную дату, со временем 0 часов 00 минут | Дата и время | Дата и время |
| ОкруглитьНачалоКвартала | Возвращает первый день квартала, содержащего указанную дату, со временем 0 часов 00 минут | Дата и время | Дата и время |
| ОкруглитьНачалоГода | Возвращает первый день года, содержащего указанную дату, со временем 0 часов 00 минут | Дата и время | Дата и время |
| ОкруглитьКонецДня | Возвращает указанную дату со временем 23 часа 59 минут | Дата и время | Дата и время |
| ОкруглитьКонецНедели | Возвращает последний день недели, содержащей указанную дату, со временем 23 часа 59 минут | Дата и время | Дата и время |
| ОкруглитьКонецМесяца | Возвращает последний день месяца, содержащего указанную дату, со временем 23 часа 59 минут | Дата и время | Дата и время |
| ОкруглитьКонецКвартала | Возвращает последний день квартала, содержащего указанную дату, со временем 23 часа 59 минут | Дата и время | Дата и время |
| ОкруглитьКонецГода | Возвращает последний день года, содержащего указанную дату, со временем 23 часа 59 минут | Дата и время | Дата и время |
| Год | Возвращает год для указанной даты | Дата и время | Целое число |
| День | Возвращает день для указанной даты | Дата и время | Целое число |
| ДеньГода | Возвращает порядковый день в году для указанной даты | Дата и время | Целое число |
| Месяц | Возвращает месяц для указанной даты | Дата и время | Целое число |
| Минута | Возвращает минуты для указанной даты | Дата и время | Целое число |
| НерабочийДень | Возвращает признак, является ли указанная дата нерабочим днем | Дата и время | Логическое значение |
| НовыеДатаВремя | Возвращает дату, сформированную из указанных параметров | Целое число (год), Целое число (месяц), Целое число (день), Целое число (час), Целое число (минуты), Число формата double (секунды) | Дата и время |
| ОтформатироватьДату | Возвращает дату, отформатированную по указанному формату. Формат — строка вида 'dd.MM.yyyy HH:mi' | Дата и время, Строка (формат) | |
| ПеревестиВЧасовуюЗонуПользователя | Возвращает указанную дату и время, преобразованную в часовую зону пользователя с указанным ID | Дата и время, Целое число (ID пользователя) | Дата и время |
| ТекущиеДатаВремя | Возвращает текущую дату и время | Дата и время | |
| Час | Возвращает час для указанной даты | Дата и время | Целое число |
| ДеньНедели | Возвращает название дня недели для указанной даты | Дата и время | Строка |
Логические¶
| Функция | Описание | Атрибуты | Возвращаемое значение |
|---|---|---|---|
| есть значение | Функция проверяет наличие значения в предыдущем атрибуте в поле смарт-выражения и возвращает: истина (1), если значение есть; ложь (0), если значения нет (пустое, null). | — | Логическое значение |
| есть ложь | Функция проверяет значение предыдущего атрибута в поле смарт-выражения и возвращает: истина (1), если предыдущее значение равно "ложь" (0); ложь (0), если предыдущее значение равно "истина" (1). Можно применить функцию дважды: когда "({атрибут} есть ложь) есть ложь" возвращает 1, это означает, что исходное значение атрибута было истинным. | — | Логическое значение |
| И | Операция логического умножения. | — | Логическое значение |
| ИЛИ | Операция логического сложения. | — | Логическое значение |
| нет значения | Возвращает "истина" (1) если в предыдущем атрибуте в поле смарт-выражения нет значения (пустое, null); возвращает "ложь" (0) если значение есть. | — | Логическое значение |
| Если ... то ... иначе ... | Вставляет шаблон в поле смарт-выражения: case when ... then ... else ... end |
— | — |
| В случае / если / иначе / конец / то | Вставляет в поле смарт-выражения одну (выбранную) часть шаблона: case, when, else, end, then |
— | — |
Агрегатные¶
Агрегатные функции выполняют операции над множеством и возвращают результирующее значение.
| Функция | Описание | Атрибуты | Возвращаемое значение |
|---|---|---|---|
| Максимум | Возвращает максимальный из элементов массива. | Массив чисел, строк или дат. | Соответствует типу элементов в массиве |
| Минимум | Возвращает минимальный из элементов массива. | Массив чисел, строк или дат. | Соответствует типу элементов в массиве |
| Сконкатенировать в строку | Преобразует коллекцию атрибутов в строку. Чтобы сформировать XML выборки данных, надо "обернуть" подвыражение в макрос EVALXML. Важно, чтобы описание атрибута XML точно соответствовало названию колонки в таблице БД (в т.ч. с учетом регистра). | Строка1 (XML выборки данных), Строка2 (атрибут XML, который надо сконкатенировать), Строка3 (символ-разделитель конкатенации). | Строка |
| Среднее | Возвращает среднее арифметическое значений элементов массива. | Массив чисел | Число |
| Сумма | Возвращает сумму значений элементов массива. | Массив чисел | Число |
Математические¶
| Функция | Описание | Атрибуты | Возвращаемое значение |
|---|---|---|---|
| ПоМодулю | Возвращает абсолютное значение числа (модуль). | Число | Число |
| МинЦелоеНеМеньше | Возвращает ближайшее целое число, не меньшее указанного. Например, МинЦелоеНеМеньше(12.3) = 13 | Число | Целое число |
| МаксЦелоеНеБольше | Возвращает ближайшее целое число, не большее указанного. Например, МаксЦелоеНеБольше(12.3) = 12 | Число | Целое число |
| Степень | Возвращает число N, возведенное в степень M. | Число (основание степени, N), Число (показатель степени, M). | Число |
| Округлить | Возвращает округленное число (дробная часть \< 0.5 отбрасывается, >= 0.5 округляется в большую строну). | Число | Число |
| УрезатьДоЗнаков | Возвращает указанное число с количеством знаков после запятой, не большим максимального заданного; остальные знаки отбрасываются. Например, УрезатьДоЗнаков(123.456, 2) = 123.45; УрезатьДоЗнаков(123, 2) = 123 | Число (урезаемое число), Число (максимальное количество знаков после запятой). | Число |
| СлучЗнач | Возвращает случайное десятичное значение от 0 до 1, подсчитанное на основе указанного числа. | Число | Число |
| ЗнакЧисла | Возвращает 1 для положительных значений, -1 для отрицательных, 0 для нуля. | Число | Целое число |
| Корень | Возвращает квадратный корень из указанного числа. | Число | Число |