Веб-сервисы для эффективного управления бизнесом!

Инструменты пользователя

Инструменты сайта


formulas

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
formulas [2019/07/05 08:28]
ilya
formulas [2021/03/13 10:55] (текущий)
butov [4.2. Агрегатные функции:]
Строка 7: Строка 7:
 номер поля, в котором хранится необходимое значение. может быть числом номер поля, в котором хранится необходимое значение. может быть числом
 или id (указывает на поле, в котором хранится ID объекта)\\ ​ или id (указывает на поле, в котором хранится ID объекта)\\ ​
-• **Ссылки на поля в других документах** в виде ${field_id1.field_id2.field_id3 ​etc}. Пробелы внутри\\ ​+• **Ссылки на поля в других документах** в виде ${field_id1.field_id2.field_id3}. Пробелы внутри\\ ​
 скобок допускаются. field_id - номер поля, в котором хранится ссылка или необходимое значение. Может быть \\  скобок допускаются. field_id - номер поля, в котором хранится ссылка или необходимое значение. Может быть \\ 
 числом. parent (указывает на родительский объект,​ если есть), а id (указывает на поле, в котором хранится ID объекта)\\ ​ числом. parent (указывает на родительский объект,​ если есть), а id (указывает на поле, в котором хранится ID объекта)\\ ​
Строка 18: Строка 18:
 • Знаки бинарных операций:​ ~, &, |\\  • Знаки бинарных операций:​ ~, &, |\\ 
 • **Знаки сравнения**:​ ==, !=, >, >=, =>, <, <=, =<​\\ ​ • **Знаки сравнения**:​ ==, !=, >, >=, =>, <, <=, =<​\\ ​
-• Знаки скобок:​ (,)\\  +• Знаки скобок:​ ()\\  
-• Знак разделения операндов:​ ,\\ +• Знак разделения операндов: ​**,**\\ 
     ​     ​
     ​     ​
Строка 47: Строка 47:
 **3.5. В случае преобразования Double => Long теряется дробная часть,​ но ошибка не возникает.**\\ ​ **3.5. В случае преобразования Double => Long теряется дробная часть,​ но ошибка не возникает.**\\ ​
 **3.6. Допускается сложение строк (склейка). Для преобразования значения в строку используется  **3.6. Допускается сложение строк (склейка). Для преобразования значения в строку используется
-выражение:​ ""​ + value.**+выражение:​ +"value".**
  
  
Строка 63: Строка 63:
  
   * avg(x),​ где x – номер поля или id. Вычисляет среднее арифметическое среди значений одного поля всех документов. Возвращаемый тип данных - double;   * avg(x),​ где x – номер поля или id. Вычисляет среднее арифметическое среди значений одного поля всех документов. Возвращаемый тип данных - double;
-  * count(x),​ где x – номер поля или id. Вычисляет количество документов,​ имеющих это поле.  +  * count(x),​ где x – номер поля или id. Вычисляет количество документов,​ имеющих это поле. Имеет сокращение – cnt(x). Возвращаемый тип данных - long;
-  * Имеет сокращение – cnt(x). Возвращаемый тип данных - long;+
   * min(x,​ type),​ где x – номер поля или id,​ type – тип данных. Вычисляет минимальное значение    * min(x,​ type),​ где x – номер поля или id,​ type – тип данных. Вычисляет минимальное значение
   * среди одного поля всех документов;​   * среди одного поля всех документов;​
Строка 114: Строка 113:
 Допустимые значения параметра dim: milisecond, second,​ minute,​ hour,​ day, week, month,​ year.\\ ​ Допустимые значения параметра dim: milisecond, second,​ minute,​ hour,​ day, week, month,​ year.\\ ​
 **Например:​**\\ ​ **Например:​**\\ ​
-⇒ add_date('​10.02.1975',​ 5, week). Прибавляет к дате 5 недель.\\  +''​⇒ add_date('​10.02.1975',​ 5, week). Прибавляет к дате 5 недель.\\  
-⇒ add_date(${parent.512.452.41},​ -7, month). Отнимает от даты (значение берется из поля родительского документа) 7 месяцев.\\ +⇒ add_date(${parent.512.452.41},​ -7, month).\\  
 +Отнимает от даты (значение берется из поля родительского документа) 7 месяцев.
 ⇒ add_date(${512},​ ${587}, year). Прибавляет к дате из поля 512 значение поля 587, выраженное в годах.\\ ​ ⇒ add_date(${512},​ ${587}, year). Прибавляет к дате из поля 512 значение поля 587, выраженное в годах.\\ ​
  
-==== 4.7.diff(date1,​ date2, dim) - функция вычисления расстояния между датами в заданных единицах. ====+==== 4.7.diff(date1,​ date2, dim) - функция вычисления расстояния между датами в заданных единицах.'' ​====
    
 Если date1 > date2 - результат позитивный,​ в противном случае - негативный. Допустимые  Если date1 > date2 - результат позитивный,​ в противном случае - негативный. Допустимые
 значения параметра dim:​ milisecond,​ second, minute, hour, day, week, month,​ year. значения параметра dim:​ milisecond,​ second, minute, hour, day, week, month,​ year.
 Например:​ Например:​
-⇒ diff('​10.02.1975',​ '​25.02.2005',​ week). Возвращает разницу между двумя датами (заданы константами),​ выраженную в неделях.+''​⇒ diff('​10.02.1975',​ '​25.02.2005',​ week). Возвращает разницу между двумя датами (заданы константами),​ выраженную в неделях.
 ⇒ diff(${parent.512.452.41},​ '​25.02.2005',​ month). Возвращает разницу между двумя датами  ⇒ diff(${parent.512.452.41},​ '​25.02.2005',​ month). Возвращает разницу между двумя датами
 (поле и константа),​ выраженную в месяцах. (поле и константа),​ выраженную в месяцах.
-⇒ diff(${512},​ ${587}, year). Возвращает разницу между двумя датами (значение из полей),​ выраженную в годах. +⇒ diff(${512},​ ${587}, year). Возвращает разницу между двумя датами (значение из полей),​ выраженную в годах.''​ 
-4.8. find(val, searchId, resultId, type) - ищет заданное значение в поле и возвращает значение другого поля,​ найденного объекта. + 
-val - искомое значение или ссылка на поле, в котором это значение. +==== 4.8. find(val, searchId, resultId, type) - ищет заданное значение в поле и возвращает значение другого поля,​ найденного объекта. ​==== 
-searchId - номер поля, где ищем (число). + 
-resultId - номер поля, из которого извлекаем данные или id для получения ID объекта + 
-type – тип данных значения,​ которое ищет функция. +val - искомое значение или ссылка на поле, в котором это значение.\\  
-Например:​ +searchId - номер поля, где ищем (число).\\  
-⇒ find(test string, 1253, id, string). Возвращает ID объекта в поле №1253 которого,​ имеется значение test string (как string). +resultId - номер поля, из которого извлекаем данные или id для получения ID объекта\\  
-⇒ find(true, 6787, 3847, boolean). Возвращает значение поля №3847 объекта,​ поле № 6787 которого равно true (как boolean). +type – тип данных значения,​ которое ищет функция.\\  
-⇒ find(${343},​ 153, 9874, date). Возвращает значение поля №9874 объекта,​ поле №153 которого равно значению поля №343 (как date).+ 
 +**Например:​**\\  
 +''​⇒ 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).''​\\  
 + 
 +==== 4.9. between(val,​ startId, endId, resultId, type) - ищет объект,​ имеющий два поля, которые описывают диапазон,​ в который попадает заданное значение,​ и возвращает значение другого поля этого объекта. ==== 
 + 
 +val - искомое значение или ссылка на поле, в котором это значение.\\  
 +startId - номер поля,​ где записаны начальные значения диапазонов.\\  
 +endId - номер поля, где записаны конечные значения диапазонов.\\  
 +resultId - номер поля, из которого извлекаем данные или id для получения ID объекта.\\  
 +type – тип данных значения,​ которое ищет функция.\\  
 +**Например:​**\\  
 +''​⇒ between('​12.10.1975',​ 1253, 1254, id, date). Осуществляет поиск вхождения даты 12.10.1975.  
 +Диапазон указан в полях №1253 и №1254. Результирующее значение – ID объекта.\\  
 +⇒ between(235,​ 251, 252, 253, integer). Осуществляет поиск вхождения числа 235. Диапазон указан в полях №251 и №252. Результирующее значение – значение поля №253 объекта.\\  
 +⇒ between($(235),​ 251, 252, 253, string). Осуществляет поиск вхождения значения поля №235. 
 +Диапазон указан в полях № 251 и № 252. Результирующее значение – значение поля № 253 объекта.\\  
 +''​ 
 +==== 4.10. exchange(currency,​ relevance) - ищет информацию об обменном курсе валюты (currency) на указанную дату (relevance). ==== 
 + 
 +Синоним названия - ex_rate. Currency может быть как строкой с кодом валюты,​ так и числом  
 +со значением ID для нужной валюты. 
 +**Например:​**\\  
 +''​⇒exchange(usd,​ '​12.10.2015'​). Осуществляет поиск обменного курса для американского доллара на дату '​12.10.2015.\\  
 +⇒ ex_rate(3, '​10.11.2016'​). Осуществляет поиск обменного курса для евро (ID = 2) на дату '​10.11.2016.''​ 
 + 
 +===== 5. Пример получения коэффициента страховки,​ в зависимости от возраста человека на момент начала страховки. ===== 
 + 
 +==== 5.1. Создаем справочник,​ в котором храним зависимость возраста и коэф., поля: ==== 
 + 
 +  * название (# 523) 
 +  * от (# 524) в годах 
 +  * до (# 525) в годах 
 +  * коэф (# 526) в абсолютных единицах 
 +  
 +==== 5.2. Заносим значения справочника:​ ==== 
 + 
 +  * "до 14", 0, 14, 0.5 
 +  * "​15-18",​ 15, 18, 0.75 
 +  * "​19-35",​ 19, 35, 1 
 +  * "​36-50",​ 36, 50, 1.25 
 +  * "​51-75",​ 51, 75, 1.5 
 +  * "76 и старше",​ 76, 150, 2 
 + 
 +==== 5.3. В документе создаем поле-ссылку на справочник контрагентов (№ 1235) и поле начала действия страховки (№1236). ==== 
 + 
 +==== 5.4. Дата рождения рождения находится в поле № 222 справочника контрагентов. ==== 
 + 
 +==== 5.5. Формула будет иметь вид: between(diff($(1236},​ ${1235.222},​ year), 524, 525, 526,​ integer) ==== 
 + 
 +Она вернет значение коэффициента страховки,​ в зависимости от возраста контрагента на момент начала страховки. 
 + 
  
formulas.1562315300.txt.gz · Последние изменения: 2019/07/05 08:28 — ilya