Это старая версия документа!
• Числа - константы, используемые для вычисления. Дробная часть отделяется точкой.
• Ссылки на локальные поля в виде ${field_id}. Пробелы внутри скобок допускаются. field_id -
номер поля, в котором хранится необходимое значение. может быть числом
или id (указывает на поле, в котором хранится ID объекта)
• Ссылки на поля в других документах в виде ${field_id1.field_id2.field_id3 etc}. Пробелы внутри
скобок допускаются. field_id - номер поля, в котором хранится ссылка или необходимое значение. Может быть
числом. parent (указывает на родительский объект, если есть), а id (указывает на поле, в котором хранится ID объекта)
• Даты - выражения, заключенные в одинарные кавычки. Форматы: 'dd.MM.yyyy' - дата,
'dd.MM.yyyy hh:mm:ss' - дата и время.
• Зарезервированные слова (используется только в функциях)
• Все остальные данные считаются строками.
• Знаки математических операций: +, -, /, *
• Знаки логических операций: !, &&, ||
• Знаки бинарных операций: ~, &, |
• Знаки сравнения: ==, !=, >, >=, ⇒, <, ⇐, =<
• Знаки скобок: (,)
• Знак разделения операндов: ,
2.1. Очередность выполнения операций - классическая.
2.2. Допускается использование операндов как результат выполнения функции(операции).
Например:
⇒ find(diff(x, y, day), 1024, id, long)
3.1. Все вычисления выполняются с использованием типов данных. Контроль над корректностью
типов возлагается на того, кто пишет формулу.
Используемые типы:
3.2. Все математические функции возвращают Double.
3.3. Все бинарные функции возвращают Long.
3.4. Все логические функции возвращают Boolean.
3.5. В случае преобразования Double ⇒ Long теряется дробная часть, но ошибка не возникает.
3.6. Допускается сложение строк (склейка). Для преобразования значения в строку используется
выражение: «» + value.
Например:
⇒ avg(37) – вычисляет среднее арифметическое среди значений поля № 37;
⇒ cnt(37) – вычисляет количество полей № 37;
⇒ min(37, long) – вычисляет минимальное значение поля № 37 как long;
⇒ max(37, timestamp) – вычисляет максимальное значение поля № 37 как timestamp;
⇒ sum(37, integer) – вычисляет сумму значений поля № 37 как integer.
Например:
⇒ avg_t(37) – вычисляет среднее арифметическое среди значений поля № 37 таблицы;
⇒ count_t(10.id) – вычисляет количество полей id, таблицы, номер формы которой - 10;
⇒ min_t(37, long) – вычисляет минимальное значение поля № 37 как long, таблицы;
⇒ max_t(37, timestamp) – вычисляет максимальное значение поля № 37 как timestamp, таблицы;
⇒ sum_t(37, integer) – вычисляет сумму значений поля № 37 как integer, таблицы.
Field – номер поля, в котором хранится номер документа, dim – тип периода времени: day, week, month, year. Dim служит для указания периода повторения номеров.
Возвращаемый тип данных - long;
Например:
⇒ gen(10, week). Генерирует номер для поля 10 с периодичностью в неделю.
⇒ generator(12, year). Генерирует номер для поля 12 с периодичностью в год
Классическое условие: если eval, то вернуть x, иначе - вернуть y.
Допустимые значения параметра dim: milisecond, second, minute, hour, day, week, month, year.
Например:
⇒ add_date('10.02.1975', 5, week). Прибавляет к дате 5 недель.
⇒ add_date(${parent.512.452.41}, -7, month). Отнимает от даты (значение берется из поля родительского документа) 7 месяцев.
⇒ add_date(${512}, ${587}, year). Прибавляет к дате из поля 512 значение поля 587, выраженное в годах.
Если date1 > date2 - результат позитивный, в противном случае - негативный. Допустимые значения параметра dim: milisecond, second, minute, hour, day, week, month, year. Например: ⇒ diff('10.02.1975', '25.02.2005', week). Возвращает разницу между двумя датами (заданы константами), выраженную в неделях. ⇒ diff(${parent.512.452.41}, '25.02.2005', month). Возвращает разницу между двумя датами (поле и константа), выраженную в месяцах. ⇒ diff(${512}, ${587}, year). Возвращает разницу между двумя датами (значение из полей), выраженную в годах.
val - искомое значение или ссылка на поле, в котором это значение.
searchId - номер поля, где ищем (число).
resultId - номер поля, из которого извлекаем данные или id для получения ID объекта
type – тип данных значения, которое ищет функция.
Например:
⇒ find(test string, 1253, id, string). Возвращает ID объекта в поле №1253 которого, имеется значение test string (как string).
⇒ find(true, 6787, 3847, boolean). Возвращает значение поля №3847 объекта, поле № 6787 которого равно true (как boolean).
⇒ find(${343}, 153, 9874, date). Возвращает значение поля №9874 объекта, поле №153 которого равно значению поля №343 (как date).