Режим Построитель выражений
Режим Построитель выражения позволяет строить сколько угодно сложные выражения, используя при этом элементы структуры объекта базы данных, константы, функции и операторы.
В редакторе выражения доступен быстрый поиск его составных элементов.
Режим Построитель выражения вызывается в окне свойств атрибута, содержащего выражение (например, для задания значения глобального показателя базы данных).
Для перехода к окну редактирования выражения необходимо щёлкнуть на кнопку
вычисляемого свойства.
Окно Построитель выражений содержит:
- списки компонентов выражений, в том числе объекты базы данных, функции, константы, операторы, распределенные по вкладкам Атрибуты и Операции,
- поле построителя выражения, где необходимо ввести выражение вручную либо добавить компоненты, дважды щёлкнув по ним мышью,
- поле подсказки со сведениями о выбранном компоненте выражения: синтаксис, описание, пример.
- настройка автоматического вывода подсказки. При включении данной настройки по мере ручного ввода компонента (идентификатора, функции и т. д.) будет отображаться список возможных значений. В этом случае можно продолжать ручной ввод, либо выбрать, дважды щёлкнув мышью, необходимое значение в списке. Также можно использовать клавиши со стрелками вверх и вниз, чтобы выбрать нужное значение, а затем нажать клавишу Enter, чтобы добавить его в выражение. Например, если вы начнёте вводить ??Dat??, в раскрывающемся списке отобразятся все функции, имена которых начинаются со значения Dat.

Компоненты выражений:
1. Атрибуты:
-
Атрибуты - список идентификаторов источника данных. Идентификатор - это имя поля, свойства или показателя. Идентификаторы используются в выражении для ссылки на значение, связанное с полем, свойством или показателя. Например, рассмотрим выражение =Заявка,_очередной_год????Заявка,_очередной_год_1. В этом выражении значение поля Заявка,_очередной_год_1 вычитается из значения поля Заявка,_очередной_год. В этом выражении как Заявка,_очередной_год_1, так и Заявка,_очередной_год являются идентификаторами.
-
Константы - список постоянных идентификаторов базы данных (подробнее в таблице ниже).
| Синтаксис | Описание [тип данных] | Пример [Результат] | ||
|---|---|---|---|---|
| Объект.ID | Идентификатор текущего объекта: документа или справочника[Число] | Объект.ID[100500] | ||
| Объект.Наименование | Наименование текущего объекта: документа или справочник [Строка] | Объект.Наименование[Ввод заявки] | ||
| Пользователь.ID | Идентификатор текущего пользователя[Число] | Пользователь.ID | ||
| Объект.ID | Идентификатор текущего объекта: документа или справочника[Число] | Объект.ID[100500] | ||
| Объект.Наименование | Наименование текущего объекта: документа или справочник | [Строка] | Объект.Наименование[Ввод заявки] | |
| Пользователь.ID | Идентификатор текущего пользователя[Число] | Пользователь.ID [326] | ||
| Пользователь.ФИО | ФИО текущего пользователя[Строка] | Пользователь.ФИО[Иванов Иван Иванович] | ||
| Пользователь.Логин | Логин текущего пользователя[Строка] | Пользователь.Логин[ivanov] | ||
| Расчетная_дата | Текущая расчётная дата[Дата] | Расчетная_дата[26.11.2019] | Начало расчётного периода[Дата] | Расчетный_период.Начало[01.01.2019] |
| Расчетный_период.Конец | Конец расчётного периода[Дата] | Расчетный_период.Конец[31.12.2019] | ||
| ФормаРедактирования.ID | Идентификатор текущей формы редактирования.[Число] | ФормаРедактирования.ID[4033] |
2. Операции - список выполняемых действий:
-
Функции - список всех функций распределён по категориям: дата и время, математические, текстовые, агрегирующие, логические и другие. Функции — это встроенные процедуры, которые можно использовать в выражениях. Подробный список встроенных функций приведён в таблице ниже.
-
Операторы - список всех операторов распределён по категориям: арифметические, логические, сравнение и другие.
Функции
Категория
Синтаксис
Описание [тип данных]
Пример [Результат]
Дата и время
DATE
DATE(x), DATE(year, month, day),
где x - строковое значение даты в формате [dd.MM.yyyy];
year, month, day - целочисленные значениягода, месяца и дня. результат - значение даты
Возвращает дату исходя из входных параметров
Date(??31.12.2016??) или Date(2016, 12, 31) [результат 31 декабря 2016]
NOW
NOW(), результат - значение Даты
Возвращает значение текущих даты и времени данного компьютера, выраженные как местное время.
now() [результат типа ??01.01.2016 00:00:00??]
TODAY
TODAY(), результат - значение Даты
Возвращает текущую дату (не расчетную) в формате местного времени
today() [результат типа ??01.01.2016??]
YEAR
YEAR(x), где x - дата; результат - целочисленное значение
Возвращает значение года для даты x
now() [результат типа ??01.01.2016 00:00:00??]
MONTH
MONTH(x), где x - дата; результат - целочисленное значение
Возвращает значение месяца для даты x
month(??2016-02-01 00:00:00??) [результат 2]
DAY
DAY(x), где x - дата; результат - целочисленное значение
Возвращает день месяца для даты x
day(??01.02.2016??) [результат 1]
WEEK_DAY
WEEK_DAY(x), где x - дата; результат - целочисленное значение
Возвращает число от 0 (вск) до 6 (сб) - день недели даты x
week_day(??2016-01-02??) [результат 6]
DATE_DIFF
DATE_DIFF(x,y), где x,y - выражения даты; результат - целочисленное значение
Вычитает указанную дату y из указанной даты x и возвращает временной интервал в количестве дней
DATE_DIFF(??2016-01-02??, ??01.01.2016??) [результат 1]
DATE_ADD
DATE_ADD(x,y,m,d,h,min,s), где x - выражение даты, y,m,d,h,min,s - целочисленые выражения; результат - дата
Возвращает дату x, к которой добавлено заданное число лет y, месяцев m, дней d, часов h, минут min, секунд s
DATE_ADD(??2016-01-01??, 0,0,1,0,0,1) [результат ??2016-01-02 00:00:01??]
Математические
ABS
ABS(expr), где expr - числовое выражение; результат - числовое значение
Возвращает абсолютное значение заданного числа
ABS(БАОЧГ1)
SQRT
SQRT(expr), где expr - числовое выражение; результат - дробное числовое значение
Возвращает абсолютное значение заданного числа
ABS(БАОЧГ1)
SIN
SIN(expr), где expr - числовое выражение; результат - дробное числовое значение
Возвращает синус указанного угла в радианах
SIN(7.981)
COS
COS(expr), где expr - числовое выражение; результат - дробное числовое значение
Возвращает косинус указанного угла в радианах
COS(0.128)
ROUND
ROUND(expr), ROUND(expr, digits), где expr - числовое выражение; digits - целое числовое выражение; результат - целое и дробное числовые значение соответсвенно
Округляет числовое значение expr до ближайшего числа с заданным количеством дробных разрядов digits или до ближайшего целого
ROUND(5.8) [результат 6];
ROUND(5.123, 2) [результат 5.12]
POWER
POWER(x,y), где x,y - числовые выражения; результат - числовые значение
Возвращает указанное выражение x, возведённое в указанную степень y
POWER(БАОЧГ1, 2)
CEILING
CEILING(expr), где expr - числовое выражение; результат - целое числовое выражение
Округляет число в большую сторону до ближайшего целого
CEILING(5.2) [результат 6]
Текстовые
ISNULL
ISNULL(x), где x - выражение; результат - логическое значение
Указывает, является ли выражение пустым
ISNULL(??атрибут??)
ISNULLOREMPTY
ISNULLOREMPTY(x), где x - строковое выражение; результат - строковое значение
Указывает, является ли указанная строка пустой.
(Устаревшее. Не рекомендуется к использованию.)
ISNULLOREMPTY(????)
LEN
LEN(x), где x - строковое выражение; результат - целое числовое значение
Возвращает число знаков в текущем объекте x
len(??БАОЧГ??) [результат 5]
LCASE
LCASE(x), где x - строковое выражение; результат - строковое значение
Возвращает копию данной строки, переведённую в нижний регистр
lcase(??КОММЕНТАРИИ??) [результат ??комментарии??]
UCASE
UCASE(x), где x - строковое выражение; результат - строковое значение
Возвращает копию этой строки, переведённую в верхний регистр
ucase(??комментарии??) [результат ??КОММЕНТАРИИ??]
IS_NUMERIC
IS_NUMERIC(x), где x - строковое выражение; результат - логическое значение
Указывает, является ли указанная строка строкой приводимой в число
IS_NUMERIC(??123.456??) [результат ??ИСТИНА??]; IS_NUMERIC(??123ABC??) [результат ??ЛОЖЬ??]
LEFT
LEFT(x,y), где x - строковое выражение, y - положительное целочисленное выражение; результат - строковое значение
Возвращает подстроку из строки x длиной у от начала строки
left(??АБВ??,2) [результат ??АБ??]
RIGHT
RIGHT(x,y), где x - строковое выражение, y - положительное целочисленное выражение; результат - строковое значение
Возвращает подстроку из строки x длиной у от конца строки
right(??АБВ??,2) [результат ??БВ??]
REMOVE
REMOVE(x,y,z), где x - строковое выражение, y,z - положительные целочисленные выражения; результат - строковое значение
Возвращает строку, в которой было удалено указанное число символов z в указанной позиции y
remove(??АБВ---абв??,3,3) [результат ??АБВабв??]
REPLACE
REPLACE(x,y,z), где x,y,z - строковые выражения; результат - строковое значение
Возвращает строку, в которой все вхождения заданной строки y в строке x заменены другой заданной строкой z
replace(??АБВ123абв??,??123??,??9??) [результат ??АБВ9абв??]
CONTAINS
CONTAINS(x,y), где x,y - строковые выражения; результат - логическое значение
Возвращает значение, указывающее, содержит ли указанная строка x значение подстроки у, переданной в качестве параметра
CONTAINS(??123??,??1??) [результат ??ИСТИНА??]
TRIM
TRIM(x), TRIM(x,y), где x,y - строковые выражения; результат - строковое значение
Удаляет все начальные и конечные символы-разделители или вхождения набора знаков, заданного в виде строки y, из текущей строки x
trim(??_abc.??, ??._??) [результат ??abc??]
LTRIM
LTRIM(x), LTRIM(x,y), где x,y - строковые выражения; результат - строковое значение
Удаляет все начальные символы-разделители или вхождения набора знаков, заданного в виде строки y, из текущей строки x
ltrim(??_abc??, ????) [результат ??abc??]
RTRIM
RTRIM(x), RTRIM(x,y), где x,y - строковые выражения; результат - строковое значение
Удаляет все конечные символы-разделители или вхождения набора знаков, заданного в виде строки y, из текущей строки x
rtrim(??abc??, ????) [результат ??abc??]
CONCAT
CONCAT(p1,p2,p3,...,pi), где p1,p2,p3,...,pi - строковые выражения; результат - строковое значение
Сцепляет строки p1,p2,p3,...,pi в одну строку
CONCAT(??а??, ??б??) [результат ??аб??]
STR
STR(x), где x - числовое или логическое выражения; результат - строковое значение
Преобразовывает явно числовое или логическое значение x в эквивалентное ему строковое представление
STR(12) [результат ??12??]
SUBSTR
SUBSTR(x,y,z), где x - строковое выражение, y,z - неотрицательные целочисленные выражения; результат - строковое значение
Извлекает подстроку из строки x. Подстрока начинается с указанной позиции y и имеет указанную длину z
substr(??abc??, 2, 1) [результат ??b??]
CHAR
CHAR(x), где x - целое число
Возвращает символ Unicode по коду x
CHAR(65) [результат ??A??]
ASC
ASC(x), где x строка; результат - целочисленное значение
Возвращает код первого символа входной строки x или -1, если строка имела значение NULL
ASC(??A??) [результат 65]
Агрегирующие
SUM
SUM(p1,...,pi), где p1,...,pi - числовые выражения; результат - числовое значение
Вычисляет сумму последовательности выражений p1,...,pi
SUM(1,2,3) [результат 6]
AVG
AVG(p1,...,pi), где p1,...,pi - числовые выражения; результат - числовое значение
Вычисляет среднее последовательности выражений p1,...,pi
AVG(1,2,3) [результат 3]
MEDIAN
MEDIAN(p1,...,pi), где p1,...,pi - числовые выражения; результат - числовое значение
Вычисляет медиану последовательности выражений p1,...,pi
MEDIAN(1,2,3) [результат 2]; MEDIAN(1,2,3,4) [результат 2.5]
MIN
MIN(p1,...,pi), где p1,...,pi - числовые или строковые выражения; результат - числовые или строковые значение, в зависимости от типа передаваемых параметров
Возвращает минимальное значение последовательности выражений p1,...,pi
MIN(1,2,3) [результат 1]
MAX
MAX(p1,...,pi), где p1,...,pi - числовые или строковые выражения; результат - числовые или строковые значение, в зависимости от типа передаваемых параметров
Возвращает максимальное значение последовательности выражений p1,...,pi
MAX(1,2,3) [результат 3]
FIRST
FIRST(p1,...,pi), где p1,...,pi - числовые или строковые выражения; результат - числовые или строковые значение, в зависимости от типа передаваемых параметров
Возвращает первый элемент последовательности выражений p1,...,pi
FIRST(1,2,3) [результат 1]
LAST
LAST(p1,...,pi), где p1,...,pi - числовые или строковые выражения; результат - числовые или строковые значение, в зависимости от типа передаваем