4.2. Функции
Last updated
Last updated
Расчетная система JetCalc поддерживает следующие группы функций:
математические функции
условные функции;
функции сравнения;
функции проверки контекста;
функции суммирования;
функции фильтрации;
функции перемещения по дереву объектов учета;
функции обработки тегов;
функции атрибутов ячеек;
логические функции;
Функция округляет до целых первичное значение либо результата вычисления формулы:
Пример:
round ( @SUMMA? / @KOL? )
Для округления значения до определенного количества знаков после запятой, можно воспользоваться следующим шаблоном:
Пример с округлением до двух знаком после запятой:
round ( @SUMMA? / @KOL? * 100 ) / 100
Функция предоставляет возможность выбора вычисляемой формулы в зависимости от результата проверки некоторого условия. Синтаксис функции check:
Пример:
check ( @KOL? < 1 : @CENA? * 1000 ; @CENA )
Аргументы:
условие - условное выражение, результатом которой является логическое значение TRUE или FALSE;
формула1 - формула, вычисляемая, если результат условного выражения равен TRUE;
формула2 - формула, вычисляемая, если результат условного выражения равен FALSE; при отсутствии формулы функция check возвращает 0.
Возвращаемые значения:
результат вычисления формула1 или формула2 в зависимости от результата вычисления условного выражения;
0 - при отсутствии формула2 и результата условного выражения FALSE.
Условное выражение может быть представлена в виде:
формула1 ОП формула2 - сравнение результата вычислений одной формулы с результатом вычислений другой формулы, где ОП - операторы сравнения <, <=, >, >=, <>, =;
формула ОП число - сравнение результата вычисления формулы с натуральным числом, где ОП - операторы сравнения <, <=, >, >=, <>, =;
функция ( аргумент1, аргумент2, ... ) - логическая функция, в перечне аргументов содержащая перечень эталонных значений, с которыми сравниваются атрибуты контекста ячейки.
Функция, устанавливающая лимит точности для формул сверки, ожидаемый результат которых должен быть равен 0. Синтаксис функции limit:
Пример:
limit ( 1.0 : $a110? - $a240? )
Аргументы:
число - положительное натуральное число;
формула - произвольная формула, ожидаемый результат которой должен быть равен 0.
Возвращаемые значение:
0 - если, если результат расчета формулы по модулю меньше или равен модулю числа
результат расчета формулы - если результат расчета формулы по модулю больше модуля числа
Функции, которые выводят значение, если оно превышает минимальную величину (без включения либо с включением данной величины в диапазон сравнения). Синтаксис функций gt (ge) :
Пример:
gt( 100 : ( $a110@OK? - $a110@ON? ) / $a110@OK? * 100 )
Аргументы:
число - натуральное число;
формула - произвольная формула,.
Возвращаемые значение:
результат расчета формулы - если результат расчета формулы больше (больше или равен) числа;
0 - если, если результат расчета формулы меньше или равен (меньше) числа.
Функции, которые выводят значение, если оно меньше максимальной величины (без включения либо с включением данной величины в диапазон сравнения). Синтаксис функций gt (ge) :
Пример:
lt( 0 : $a210@PRIB? )
Аргументы:
число - натуральное число;
формула - произвольная формула,.
Возвращаемые значение:
результат расчета формулы - если результат расчета формулы меньше (меньше или равен) числа;
0 - если, если результат расчета формулы больше или равен (больше) числа.
Функция, вычисляющая значения двух формул и возвращающая меньшее из двух значений. Синтаксис функции min:
Пример:
min ( $a110.P11? ; $a120.P12? )
Аргументы:
формула1 - произвольная формула
формула2 - произвольная формула
Возвращаемое значение:
меньшее значение из двух значений результата вычисления формулы1 и формулы2
Функция, вычисляющая значения двух формул и возвращающая большее из двух значений. Синтаксис функции max:
Пример:
max ( $a110.P11? ; $a120.P12? )
Аргументы:
формула1 - произвольная формула
формула2 - произвольная формула
Возвращаемое значение:
большее значение из двух значений результата вычисления формулы1 и формулы2
Функции проверки контекста являются обертками над функцией check, предоставляющими более наглядный и сжатый синтаксис наиболее часто используемых проверок контекста ячейки
Функция, ограничивающая вычисление формул в контексте ячейки для определенных периодов и их групп:
Пример:
forperiod ( FSNG : @VAL.P-202? + @VAL.P-207? ; FJAN : @VAL.P11? )- для группы периодов FSNG расчет по формуле @VAL.P-202? + @VAL.P-207?, а для группы периодов FJAN - по формуле
@VAL.P11?
Аргументы:
периоды1 - один или несколько кодов периодов или их групп, перечисленных через запятую;
формула1 - формула, вычисляемая при вхождении периода контекста ячейки в перечень периодов, определенных в параметре периоды1;
периоды2 - необязательный набор кодов периодов или их групп
формула2 - формула, вычисляемая при вхождении периода в необязательный набор кодов периодов или их групп
default - необязательный атрибут, определяющий формулу по умолчанию;
формулаN - необязательная формула, вычисляемая для ячеек, период контекста которой не вошел в ранее определенные в функции перечни периодов.
Возвращаемое значение:
результат расчета формулы - если период контекста ячейки входит в перечень периодов либо при наличии атрибута default;
0 - если период контекста ячейки не входит в перечень периодов при одновременном отсутствии атрибута default.
Функция, ограничивающая вычисление формул в контексте ячейки для определенных колонок:
Пример:
forcol ( OK : @OK? / ( $m110@ON? + $m110@OK? ) * 2 )- для колонки OK выполнить расчет деления значения по колонке OK к среднему остатку по строке $m110
Аргументы:
колонки1 - один или несколько кодов колонок, перечисленных через запятую;
формула1 - формула, вычисляемая при вхождении колонки контекста ячейки в перечень колонок, определенных в параметре колонки1;
колонки2 - необязательный набор кодов колонок;
формула2 - формула, вычисляемая при вхождении колонки в необязательный набор кодов колонок;
default - необязательный атрибут, определяющий формулу по умолчанию;
формулаN - необязательная формула, вычисляемая для ячейки, колонка контекста которой не вошла в ранее определенные в функции перечни колонок.
Возвращаемое значение:
результат расчета формулы - если колонка контекста ячейки входит в перечень колонок либо при наличии атрибута default;
0 - если колонка контекста ячейки не входит в перечень колонок при одновременном отсутствии атрибута default.
Функция, ограничивающая вычисление формул в контексте ячейки для определенных объектов учета или их групп:
Пример:
forobj ( NEWPRD : @OV? ; default : @OK.Y-1.P112? )- для группы новых предприятия ( NEWPRD ) вернуть значение по колонке @OV текущего периода, а для остальных вернуть значение по колонке @OK периода .P112 предыдущего года .Y-1
Аргументы:
объекты1 - один или несколько кодов объектов учета, перечисленных через запятую;
формула1 - формула, вычисляемая при вхождении объекта учета контекста ячейки в перечень объектов учета, определенных в параметре объекты1;
объекты2 - необязательный набор кодов объектов учета;
формула2 - формула, вычисляемая при вхождении объекта учета в необязательный набор кодов объектов учета;
default - необязательный атрибут, определяющий формулу по умолчанию;
формулаN - необязательная формула, вычисляемая для ячейки, объект учета контекста которой не вошла в ранее определенные в функции перечни объектов учета.
Возвращаемое значение:
результат расчета формулы - если объект учета контекста ячейки входит в перечень объектов учета либо при наличии атрибута default;
0 - если объект учета контекста ячейки не входит в перечень объектов учета при одновременном отсутствии атрибута default.
Функция суммирования позволяет сложить значения одной ячейки по нескольким объектам учета. В системе JetCalc функция суммирования подразделяется на два вида:
<< - суммирование ячеек дочерних объектов учета всех уровней вложенности для текущего объекта учета;
<<< - суммирование ячеек всех объектов учета.
Синтаксис функции суммирования:
Пример:
$m120@VAL<<<( G:NEWPRD, ( D:MET | R:66 ))?-сумма ячеек $m120@VAL? по группе всех новых предприятия (G:NEWPRD), входящих в металлургический дивизион (D:MET) или расположенный в Свердловской области (R:66)
Аргументы:
фильтр - логическое выражение с операторами NOT, AND, OR и круглыми скобками, операндами которого выступают пары "ключ:значение".
Возвращаемое значение:
сумма значений ячеек по перечню объекта учета, каждый из которых соответствует логическому выражению фильтра объектов учета.
В целях сокращения синтаксиса вместо полного наименования операторов NOT, AND, OR допустимо использовать их сокращенные обозначения:
! (восклицательный знак) - аналог NOT;
, (запятая) - аналог AND;
| (вертикальная черта) - аналог OR.
В фильтре для пар "ключ:значение" могут использоваться следующие ключи в виде латинских букв:
C - класс объектов учета;
T - тип объектов учета;
D - дивизион;
S - отрасль (сектор);
R - регион;
G - группа объектов учета.
На практике при суммирование по дочерних объектов учета (функция << ) использование в качестве фильтра дивизионов (D) и отраслей (S) обычно не имеет смыла, поэтому как правило не применяется.
Функция фильтрации используется в бизтран-документах, каждая строка которых дополнительно детализируется по счетам бухгалтерского учета, а также контрагентам и договорам (подробнее см. главу 9), и позволяет отфильтровать по этим дополнительным атрибутам. Функция фильтрации обычно используется в качестве дополнительного фильтра для функции суммирования.
Синтаксис функции фильтрации:
Пример (продолжение примера функции суммирования):
$m120@VAL<<<( G:NEWPRD, ( D:MET | R:66 ))>>(G:INORG,B:90_01)?- сумма ячеек $m120@VAL? по группе всех новых предприятия (G:NEWPRD), входящих в металлургический дивизион (D:MET) или расположенный в Свердловской области (R:66), в части группы иностранных контрагентов (G:INORG) по бухгалтерскому счету 90.01 (B:90_01)
Возвращаемое значение:
сумма значений ячеек по перечню строк, детализированных по контрагентам, счетам бухгалтерского учета и типам договоров, каждый из которых соответствует логическому выражению фильтра.
В целях сокращения синтаксиса вместо полного наименования операторов NOT, AND, OR допустимо использовать их сокращенные обозначения:
! (восклицательный знак) - аналог NOT;
, (запятая) - аналог AND;
| (вертикальная черта) - аналог OR.
В фильтре для пар "ключ:значение" могут использоваться следующие ключи в виде латинских букв:
G - группа организаций-контрагентов;
B - бухгалтерский счет;
K - тип договора.
Функции перемещения по дереву объектов учета расчетной системы JetCalc позволяют вместо явного указания кода объекта учета использовать контекстное переопределение объекта учета у ячейки путем перемещения по дереву объектов учета снизу-вверх.
^ - смена текущего объекта учета на родительский объект учета;
^^ - смена текущего объекта учета на корневой объект учета, у которого родительский объект учета не определен.
^(n) - смена текущего объекта учета выше на n уровней (по умолчанию n = 1)
Функции объекта учета используются путем подстановки вместо кода объекта учета в коде ячейки на код функции.
Примеры:
$a120@VAL#^?- смена текущего объекта учета с #100pl20 на родительский объект учета #100
$a120@VAL##?- смена текущего объекта учета с #100pl20ce5 на корневой объект учета #100
Функции обработки тегов возвращают текущее значение тега на стадии приведения формул строк или колонок к контексту ячейки в момент открытия документа (подробнее см. раздел 6.1).
Возвращаемое значение функций обработки тегов может использоваться в формулах как:
атрибут кода ячейки - значение тега приводится к текстовому типу ;
числовой операнд - значение тега приводится к числовому типу.
Если приведение значение тега невозможно, то расчетная системе JetCalc возвращает ошибку, которая на интерфейсе выделяет ячейку бледно-красным фоном.
Если формула ячейки содержит тег, то поиск определения значения тега выполняется в следующей последовательности:
Текущая строка или колонка.
Родительские строки вплоть до корневого узла.
Объект учета.
Тип объекта учета.
Класс объекта учета.
Если в вышеописанной цепочке поиска искомый тег не находится, то расчетная система JetCalc возвращает ошибку, которая на интерфейсе выделяет ячейку бледно-красным фоном.
Синтаксис формул обработки тегов:
Примеры:
$a120@{kolcalc}? - подстановка колонки с объемам производства, значение которой содержится в теге kolcalc
${strcalc}@VAL? - подстановка строки с объемам производства, значение которой содержится в теге strcalc
$i100@VAL#{ucomp}? - подстановка кода управляющей компании, значение которой содержится в теге ucomp
Особым случаем является встроенный в расчетную систему JetCalc тег KMULT, имеющий значение 1000. Тег KMULT представляет собой коэффициент (мультипликатор), обозначающий минимальную денежную единицу, в которой обычно составляется финансовая отчетность в стране. В России такой единице является тысяча рублей, поэтому по умолчанию KMULT = 1000.
Значение тега KMULT определено в файле /htdocs/jetcalc/config.js и может быть при необходимости изменено. В рабочей модели тег KMULT может быть переопределен на любом уровне - от строки до класса объекта учета.
Функции атрибутов ячеек позволяют определить переменные характеристики атрибутов ячеек, зависящие от контекста ячеек. Расчетная система JetCalc поддерживает следующие функции атрибутов ячеек:
MCOUNT - число месяцев в отчетном периоде
DCOUNT - число дней в отчетном периоде
Пример:
$t100? / $t200? * 1000 / MCOUNT- расчет среднемесячной заработной платы в рублях исходя из фонда оплаты труда в тысячах рублей $t100? и среднесписочной численности $t200?.
Значения, возвращаемые функциями MCOUNT и DCOUNT, определяются на основании числа месяцев в периоде, а также даты начала и даты окончания периода, определенных при настройке периодов (подробнее см. главу 3).
Логические функции в системе JetCalc являются вспомогательными и обычно используются в условных выражениях функции check.
Пример:
check ( not hastag( R:nobal ) : @ON? + @PD? - @RD? )- вычисление формулы для строк, которые не содержат тег nobal
check ( hastag ( C:ndsrate=0.18 ) : $a100@VAL? * {ndsrate} )- расчет суммы НДС по ставке 18% только для колонки с тегом ndsrate, имеющим значение 0.18
Возвращаемое значение:
истина (true) - если тег и опционально его значение найдены в текущем контексте ячейки;
ложь (false) - если тег и опционально его значение найдены в текущем контексте ячейки.
Атрибут ключ аргумента функции hastag допускает следующие значения:
R - проверяется наличие тега только в текущей строке
W - проверяется наличие тега в текущей строке и всех родительских узлах до корневого узла
C - проверяется наличие тега в текущей колонке
O - проверяется наличие тега в текущем объекте учета
T - проверяется наличие тега в типе текущего объекта учета
round ( число | формула )
round ( формула * 10^n ) / 10^n
check ( условие : формула1 [; формула2 ] )
limit ( число : формула )
gt ( число : формула ) или ge ( число : значение )
lt ( число : формула ) или le ( число : значение )
min ( формула1 ; формула2 )
max ( формула1 ; формула2 )
forperiod ( периоды1 : формула1 [ ; периоды2 : формула 2 ] ... [ ; default : формулаN ] )
forcol ( колонки1 : формула1 [ ; колонки2 : формула 2 ] ... [ ; default : формулаN ] )
forobj ( объкты1 : формула1 [ ; объекты2 : формула 2 ] ... [ ; default : формулаN ] )
$код_ячейки<<( фильтр )? или $код_ячейки<<<( фильтр )?
$код_ячейки>>( фильтр )?
${тег1}@{тег2}#{тег3}? [+-*/] {тег4}
hastag ( ключ:тег[=значение] )