Справочник функций
Операторы
Логический оператор AND выполняет условие только в том случае, если в результате вычисления всех аргументов получается значение ИСТИНА. Если хотя бы одно условие ЛОЖНО, то все условие ЛОЖНО. Обычно функция AND используется для расширения возможностей других функций, выполняющих логическую проверку.
(<выражение1>) AND (<выражение2>)
- выражение1 - первое проверяемое условие, вычисление которого дает значение ИСТИНА или ЛОЖЬ.
- выражение2 - второе проверяемое условие, вычисление которого дает значение ИСТИНА или ЛОЖЬ.
F.IF (A > 0 AND B=5, B, 0)
Возвращается значение B, если A>0 и B=5, иначе 0
Условный оператор IF возвращает одно значение, если указанное условие дает в результате значение ИСТИНА, и другое значение, если условие дает в результате значение ЛОЖЬ.
F.IF(bool <выражение1>, float <выражение2>, float <выражение3>)
- выражение1 - логическое выражение
- выражение2 - значение, если указанное условие дает в результате значение ИСТИНА
- выражение3 - значение, если условие дает в результате значение ЛОЖЬ
F.IF (A > 0, B, 0)
Возвращается значение B, если A больше 0 или 0, если A меньше или равно 0
F.IF (((А /B) > 1.5) and ((A/B) < 2.3), C, 0)
Возвращается значение С, если A/В больше 1.5 и меньше 2.3 или 0, если A/В меньше или равно 1.5 и больше или равно 2.3
Условный оператор OR позволяет проверить некоторое условие и, в зависимости от результатов проверки, выполнить то или иное действие. Возвращает значение ИСТИНА, если хотя бы один из аргументов имеет значение ИСТИНА или ЛОЖЬ, если все аргументы имеют значение ЛОЖЬ. Обычно функция OR используется для расширения возможностей других функций, выполняющих логическую проверку.
(<выражение1>) OR (<выражение2>)
F.IF (A > 0 OR B=5, B, 0)
Оператор LIKE применим только к строковым значениям справочника, с которыми он используется, чтобы находить подстроки. Используется для наложения фильтров в справочнике при поиске нужных значений. В вычислимых полях Базового показателя не поддерживается (используется «=»)
<'Код справочника'> LIKE <'Шаблон'>
- Код справочника – аргумент код справочника
- Шаблон – аргумент подстрока/часть слова/фразы
F.SUM (А, 20110101, 20111231, rep.everymonth, 'фил' LIKE 'Московский*')
Поиск значений в справочнике «Филиалы» (код справочника «Фил») начинающихся со слова «Московский»
Оператор NOT LIKE, обратный оператору LIKE, применим только к строковым значениям справочника, с которыми он используется, чтобы находить подстроки. Используется для наложения фильтров в справочнике при поиске нужных значений. В вычислимых полях Базового показателя не поддерживается (используется «<>» или «!=»)
<'Код справочника'> NOT LIKE <'Шаблон'>
- Код справочника – аргумент код справочника
- Шаблон – аргумент подстрока/часть слова/фразы
F.SUM (А, 20110101, 20111231, rep.everymonth, 'фил' NOT LIKE 'Московский*')
Поиск значений в справочнике «Филиалы» (код справочника «Фил») не содержащих в названии слова «Московский»
Оператор NOT отрицает условие или оператор.
NOT (<Условие_Оператор>)
- Условие_Оператор – аргумент для условия или оператора, требующих отрицания
F.SUM (А, 20110101, 20111231, rep.everymonth, 'фил' NOT LIKE 'Московский*')
Поиск всех значений кроме «Московский*» в справочнике «Филиалы» (код справочника «Фил»)
NOT (A=8)
А не равно 8
Математические функции
Функция F.PI возвращает число Пи - 3.1415...
F.PI
F.PI
Для показателя измеритель, которого имеет точность два знака после запятой, возвращает значение 3.14
Функция F.SIN возвращает синус угла
F.SIN(float <угол>)
- угол – показатель или выражение, для вычисления синуса
F.SIN(30)
Возвращает значение 0,5
Функция F.COS возвращает косинус угла
F.COS (float <угол>)
- угол – показатель или выражение, для вычисления косинуса
F.COS(360)
Возвращает значение 1
Функция F. TG возвращает тангенс угла
F. TG (float <угол>)
- угол – показатель или выражение, для вычисления тангенса
F. TG (45)
Возвращает значение 1
Функция F.CTG возвращает котангенс угла
F.CTG(float <угол>)
- угол – показатель или выражение, для вычисления котангенса
F.CTG (45)
Возвращает значение 1
Функция F.ARCSIN возвращает арксинус угла
F.ARCSIN (float <значение>)
- значение – показатель или выражение, для вычисления арксинуса
F.ARCSIN (1)
Возвращает значение 90°
Функция F.ARCCOS возвращает арккосинус угла
F.ARCCOS (float <значение>)
- значение – показатель или выражение, для вычисления арккосинуса
F.ARCCOS (1)
Возвращает значение 0.
Функция F.ARCTG возвращает арктангенс угла
F.ARCTG (float <значение>)
- значение – показатель или выражение, для вычисления арктангенса
F.ARCTG (1)
Возвращает значение 45°
Функция F.ARCCTG возвращает арккотангенс угла
F.ARCCTG (float <значение>)
- значение – показатель или выражение, для вычисления арккотангенса
F.ARCCTG (1)
Возвращает значение 45°
Функция F.EXP возвращает основание натурального логарифма (e = 2.7182818284590452...) в указанной степени
F.EXP(float <выражение>)
- выражение – показатель или выражение, для вычисления экспоненты
F.EXP (0)
Возвращает значение 1
Функция F.LG возвращает логарифм по основанию 10 указанного числа
F.LG (float <выражение>)
- выражение – показатель или выражение, для вычисления
F.LG (10)
Возвращает значение 1
Функция F.LN возвращает натуральный логарифм указанного числа
F.LN (float <выражение>)
- выражение – показатель или выражение, для вычисления
F.LN (1)
Возвращает значение 0
Функция F.ABC возвращает модуль (абсолютную величину) числа, т.е. число без знака.
F.ABC(float <выражение>)
- выражение - вещественное число, абсолютное значение которого необходимо найти
F.ABC (3)
Возвращает значение 3
F.ABC (-2)
Возвращает значение 2
Функция F.MAX возвращает наибольшее значение из набора значений.
F.MAX(float <выражение1>,..., float <выражениеN>)
- выражение1 , ... , выражениеN - вещественные числа, максимальное из которых необходимо найти
F.MAX (2, 3, 1)
Возвращает значение 3
Функция F.MAXTAB для вычисления максимального значения показателя, расщепленного по справочнику
F.MAXTAB (<показатель>, '<код справочника>')
- показатель - переменная показателя, максимальное значение которого необходимо найти
- код справочника - код справочника, по которому производится расщепление при вычислении максимального значения показателя
F.MAXTAB (А, 'Сотрудник')
Показатель, соответствующий переменной A, расщепляется по справочнику «Сотрудник», и из получившегося списка <Значение справочника>=<значение показателя> возвращается максимальное значение показателя.
Функция F.MAXIMUM вычисляет максимальное значение за период в заданном шаге периода или максимальное значение в массиве.
При вычислении значения за период функция сначала суммирует данные в указанном шаге периода, а потом находит экстремум в диапазоне назначенных дат.
F.MAXIMUM(<показатель>, int <дата начала>, int <дата конца>, REP.EVERY*, {<фильтр>}, {bool <выражение>})
F.MAXIMUM ([<выражение>{,<выражение>}])
- показатель – код переменной
- дата начала - дата, от которой производится вычисление
- дата конца - дата, до которой производится вычисление
- REP.EVERY*- константа соответствующего шага периода
- необязательный фильтр на справочники
- выражение - любое синтаксически верное выражение, результат которого число
F.MAXIMUM(A, 20140101, 20141231, rep.everymonth)
Возвращает максимальное месячное значение за 2014 год.
F.MAXIMUM(A, 20140101, 20141231, rep.everymonth, 'Сегмент' LIKE 'Малый*')
Возвращает максимальное месячное значение выбранного показателя за 2014 год со значением «Малый» по справочнику «Сегмент»
F.MAXIMUM([2, 4])
Возвращает максимальное значение в массиве - 4
Функция F.MIN возвращает наименьшее значение из набора значений.
F.MIN(float <выражение1>, float <выражение>)
- выражение1 , ... , выражениеN - вещественные числа, минимальное из которых необходимо найти
F.MIN (2, 3, 5)
Возвращает значение 2
Функция F.MINTAB для вычисления минимального значения показателя, расщепленного по справочнику
F.MINTAB (<показатель>, '<код справочника>')
- показатель - переменная показателя, минимальное значение которого необходимо найти
- код справочника - код справочника, по которому производится расщепление при вычислении минимального значения показателя
F.MINTAB (А, 'Сотрудник')
Показатель, соответствующий переменной A, расщепляется по справочнику «Сотрудник», и из получившегося списка <Значение справочника>=<значение показателя> возвращается минимальное значение показателя.
Функция F.MINIMUM вычисляет максимальное значение за период в заданном шаге периода или минимальное значение в массиве.
При вычислении значения за период функция сначала суммирует данные в указанном шаге периода, а потом находит экстремум в диапазоне назначенных дат.
F.MINIMUM(<показатель>, int <дата начала>, int <дата конца>, REP.EVERY*, {<фильтр>},{bool <выражение>})
F.MINIMUM ([<выражение>{, <выражение>}])
- показатель – код переменной
- дата начала - дата, от которой производится вычисление
- дата конца - дата, до которой производится вычисление
- REP.EVERY*- константа соответствующего шага периода
- необязательный фильтр на справочники
- выражение - любое синтаксически верное выражение, результат которого число
F.MINIMUM(A, 20140101, 20141231, rep.everymonth)
Возвращает минимальное месячное значение за 2014 год.
F.MINIMUM(A, 20140101, 20141231, rep.everymonth, 'Сегмент' LIKE 'Малый*')
Возвращает минимальное месячное значение выбранного показателя за 2014 год со значением «Малый» по справочнику «Сегмент»
F.MINIMUM([2, 4])
Возвращает минимальное значение в массиве - 2
Функция F.SQRT вычисляет квадратный корень из указанного выражения или значения показателя.
F.SQRT(float <выражение>)
- выражение – код переменной или выражение
F. SQRT(A)
Возвращает квадратный корень из значения Показателя
F. SQRT(64)
Возвращает значение 8
Функция F.ROUND округляет значение десятичной части с указанной точностью. Если точность -отрицательное число, то округляется количество знаков целой части.
F.ROUND(float <выражение>, int <точность>)
- выражение – код переменной или выражение
- точность – количество знаков округления (если точность - отрицательное число, то округляется количество знаков целой части)
F.ROUND(123.9994, 3)
Возвращает значение 123
F.ROUND(123.9995, 3)
Возвращает значение 124
F.ROUND(748.58, -1)
Возвращает значение 750.00
F.ROUND(748.58, -3)
Возвращает значение 1000
Функция F.ROUNDDOWN округляет значение до ближайшего меньшего по модулю значения
F.ROUNDDOWN(float <выражение>, int <точность>)
- выражение – код переменной или выражение
- точность – количество знаков после округления
F.ROUNDDOWN(3.14159, 3)
Возвращает округленное с недостатком до трех десятичных разрядов значение 3.141
F.ROUNDDOWN(76.9, 0)
Возвращает округленное с недостатком до ближайшего целого значение 76
F.ROUNDDOWN(-3.14159, 1)
Возвращает округленное с недостатком до одного десятичного разряда значение -3.1
F.ROUNDDOWN(31415.92654, -2)
Возвращает округленное с недостатком до двух десятичных разрядов слева от запятой значение 31400
Функция F.ROUNDUP округляет значение до ближайшего большего по модулю значения
F.ROUNDUP(float <выражение>, int <точность>)
- выражение – код переменной или выражение
- точность – количество разрядов, до которого округляется значение
F.ROUNDUP(3.14159, 3)
Возвращает округленное с избытком до трех десятичных разрядов значение 3.142
F.ROUNDUP(76.1, 0)
Возвращает округленное с избытком до ближайшего целого значение 77
F.ROUNDUP(-3.14159, 1)
Возвращает округленное с избытком до одного десятичного разряда значение -3.2
F.ROUNDUP(31415.92654, -2)
Возвращает округленное с избытком до двух десятичных разрядов слева от запятой значение 31500
Функция F.FLOOR округляет число до кратного заданной точности с недостатком
F.FLOOR(float <выражение>, float <точность>)
- выражение – код переменной или выражение
- точность – количество знаков, кратно которому производится округление
F.FLOOR(2.5, 1)
Возвращает округленное с недостатком до ближайшего числа, кратного 1, значение 2
F.FLOOR(-2.5, -2)
Возвращает округленное с недостатком до ближайшего числа, кратного -2, значение -2
F.FLOOR(-2.5, 2)
Возвращает ошибку, поскольку числа -2.5 и 2 имеют разные знаки
F.FLOOR(1.5, 0.1)
Возвращает округленное с недостатком до ближайшего числа, кратного 0.1, значение 1,5
F.FLOOR(0.234, 0.01)
Возвращает округленное с недостатком до ближайшего числа, кратного 0.01, значение 0.23
Функция F.NUMFROMSEP возвращает число после десятичного разделителя из числа.
F.NUMFROMSEP (float <выражение>)
- выражение – любое синтаксически верное выражение, результатом которого будет вещественное значение
F.NUMFROMSEP (123.4567)
Возвращает значение 4567
Функция F.COUNTFROMSEP возвращает количество значащих цифр после десятичного разделителя из числа.
F.COUNTFROMSEP (float <выражение>)
- выражение – любое синтаксически верное выражение, результатом которого будет вещественное значение
F.COUNTFROMSEP(123.1567)
Возвращает значение 4
Функции по работе с датами
Функция F.TODAY возвращает текущую дату (или дату со смещением от текущей).
F.TODAY({int <смещение>, {REP.BYCURRENT | REP.BYSTART | REP.BYEND}})
- смещение - количество шагов периода для смещения в шаге периода отчета
- необязательный параметр, возвращающий значение текущей даты BYCURRENT | REP.BYSTART | REP.BYEND (по умолчанию используется REP.BYEND). Если режим текущей даты не указан, то функция принимает значение REP.BYCURRENT
F.TODAY
Возвращается текущая дата - 20150305 00:00:00.000
F.TODAY (-1)
Если шаг отчета - месяц, то возвращается текущая дата минус 1 месяц
Если шаг отчета - квартал, то возвращается текущая дата минус 1 квартал.
F.TODAY (+2)
Если шаг отчета месяц, то возвращается текущая дата плюс 2 месяца
F.TODAY (0, rep.bystart)
При шаге отчета месяц при расчете показателя на ноябрь возвращает начало ноября – 20141101 00:00:00.000
F.IF(F.TODAY = 20141225, 'Католическое Рождество', '')
В данной функции определяется текущая дата и, если она равна 25 декабря 2014, то возвращается значение «Католическое Рождество», иначе - «»
Функция F.DATEADD возвращает дату со смещением
F.DATEADD(int <дата начала>, int <смещение>, REP.EVERY*, {REP.BYSTART | REP.BYEND| REP.BYREPORT})
- дата начала - дата, от которой производится вычисление
- смещение - количество шагов периода для смещения
- REP.EVERY*- константа соответствующего шага периода
- необязательный параметр, возвращающий значение даты на начало или конец периода REP.BYSTART | REP.BYEND| REP.BYREPORT (по умолчанию используется REP.BYEND)
F.DATEADD (F.REPORTDATE (rep.byend), -11, rep.everyquarter, rep.bystart), F.DATEADD (F.REPORTDATE (rep.byend), -4, rep.everyquarter, rep.byend)
В данной функции определяется период расчета.
Дата начала периода и конца периода расчета заданы со смещением от конечной даты периода отчета по Показателю. Для Показателя с шагом «Квартал» и периодом отчета с I квартала 2014 по VI квартал 2014 периодом расчета будут 2 года - I квартала 2012 - VI квартал 2013.
F.AVG (A, 4, F.DATEADD (F.REPORTDATE (rep.byend), -11, rep.everyquarter, rep.bystart), F.DATEADD (F.REPORTDATE (rep.byend), -4, rep.everyquarter, rep.byend), rep.everyquarter, 4)
В данной функции определяется поквартальное среднее значение переменной «A».
Для вычисления периода расчета среднего значения использована функция F.DATEADD, рассмотренная выше. Среднее значение, рассчитанное за 2012 - 2013 года, будет отображено в 2014 году.
Функция F.REPORTDATE возвращает текущую дату начала отчета, текущую дату конца отчета или дату текущего шага периода
F.REPORTDATE({REP.BYSTART | REP.BYEND | REP.BYREPORT})
- REP.BYSTART | REP.BYEND | REP.BYREPORT - параметр, который определяет возвращаемое значение даты - на начало периода отчета, конец периода отчета или на дату текущего шага периода соответственно.
F.SUM (A , F.REPORTDATE (rep.bystart) , F.TODAY(0, rep.byend) , rep.everymonth )
Сумма за период с января по декабрь 2014 года будет рассчитываться помесячно нарастающим итогом до текущего столбца отчета (за январь вернется значение января, за февраль – (январь+февраль), за март - (январь+февраль+март) и т.д.)
F.REPORTDATE (rep.bystart)
Возвращается дату начала отчета
Функция F.DATE возвращает дату в формате (день, месяц, год) с возможностью рассчитать один из этих параметров с помощью других функций
F.DATE (int <день>, int <месяц>, int <год>)
F.DATE (1,1,2015)
Возвращает значение 20150101, т.е. 01.01.2015
F.SUM(А, F.DATE (01, 01, F.YEAR (F.REPORTDATE(rep.byreport))), F.TODAY (0, rep.byend), rep.everyquarter )
С помощью функции F.DATE при расчете суммы задается дата начала суммирования – 01 января каждого года, где год вычисляется с помощью функций F.REPORTDATE.
Функция F.PERIOD возвращает разницу между двумя датами в заданном шаге периода.
F.PERIOD(int <дата начала>, int <дата конца>, REP.EVERY*)
- дата начала - дата, от которой производится вычисление
- дата конца - дата, до которой производится вычисление
- REP.EVERY*- константа соответствующего шага периода
F.PERIOD(20150101, 20150201, rep.everyday)
Возвращает 31 день
F.PERIOD(20150101, 20150201, rep.everyhour)
Возвращает 744 часа
F.PERIOD(20140101, 20150101, rep.everymonth)
Возвращает 12 месяцев
Функция F.PERIODOF возвращает разницу между началом и концом текущего рассчитываемого шага периода отчета
F.PERIODOF(REP.EVERY*)
- REP.EVERY*- константа соответствующего шага периода
F.PERIODOF(rep.everyday)
При расчете показателя за период с января по декабрь 2014 года с шагом «Месяц» будет последовательно возвращать: 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
Та же функция в шаге периода «Квартал» будет возвращать: 90, 91, 92, 92
Аналогична записи комбинаций функций F.PERIOD(F.TODAY (0, rep.bystart), F.TODAY (0, rep.byend), rep.everyday)+1
Функция F.DAY вычисляет день из параметра даты
F.DAY(int <дата>, REP.EVERY*)
- дата- дата, из которой производится вычисление дня
- REP.EVERY*- константа соответствующего шага периода
F.DAY(20151101)
Возвращает значение - 1
Функция F.MONTH вычисляет месяц из параметра даты
F.MONTH(int <дата>)
- дата - дата, из которой производится вычисление месяца
F.MONTH(20151101)
Возвращает значение - 11
Функция F.QUARTER вычисляет квартал из параметра даты
F.QUARTER(int <дата>)
- дата - дата, из которой производится вычисление квартала
F.QUARTER(20151101)
Возвращает значение - 4
Функция F.YEAR вычисляет год из параметра даты
F.YEAR(int <дата>)
- дата- дата, из которой производится вычисление года
F.YEAR(20151101)
Возвращает значение - 2015
Функция F.GETDATE возвращает текущую дату со временем
F.GETDATE()
F.GETDATE
Возвращает текущую дату со временем
Функция F.DATENIL возвращает минимальное (пустое) значение даты
F.DATENIL()
F.DATENIL
Возвращает 18991230 - минимальное значение даты 30.12.1899
Функция F.DATEONLY возвращает только дату из заданного значения (без времени)
F.DATEONLY(int <дата>)
- дата- дата со временем, из которой производится вычисление даты
F.DATEONLY( F.GETDATE )
Возвращает текущее значение даты без времени
Функция F.SECOND возвращает значение секунд из даты
F.SECOND(int <дата>)
- дата- дата со временем, из которой производится вычисление
F.SECOND( F.GETDATE() )
Возвращает секунды из текущей даты со временем
Функция F.MINUTE возвращает значение минуты из даты
F.MINUTE(int <дата>)
- дата- дата со временем, из которой производится вычисление
F.MINUTE ( F.GETDATE() )
Возвращает минуты из текущей даты со временем
Функция F.HOUR возвращает значение часа из даты
F.HOUR(int <дата>)
- дата- дата со временем, из которой производится вычисление
F.HOUR( F.GETDATE() )
Возвращает часы из текущей даты со временем
Функция F.DATEDIFF возвращает разность дат в заданном шаге периода. Результат целое число
F.DATEDIFF(REP.EVERY*, int <дата начала>, int <дата конца>)
- REP.EVERY*- константа соответствующего шага периода
- дата начала - дата, от которой производится вычисление
- дата конца - дата, до которой производится вычисление
F.DATEDIFF(rep.everymonth, 20100101, 20101231)
Возвращает 11 месяцев
Функции для строковых значений
Функция F.DATESTR возвращает строковое представление даты
F.DATESTR(int <дата>, REP.EVERY*)
- дата – дата, которую нужно преобразовать в строку
- REP.EVERY*- константа соответствующего шага периода (по умолчанию используется шаг периода отчета).
F.DATESTR(20141231, rep.everysecond)
Возвращает '2014.12.31 00:00:00'
F.DATESTR(20141231, rep.everyminute)
Возвращает '2014.12.31 00:00'
F.DATESTR(20141231, rep.everyhour)
Возвращает '2014.12.31 00:00'
F.DATESTR(20141231, rep.everyday)
Возвращает '2014.12.31'
F.DATESTR(20141231, rep.everyweek)
Возвращает '2014 53 нед'
F.DATESTR(20141231, rep.everymonth)
Возвращает '2014.12'
F.DATESTR(20111231, rep.everyquarter) -- '2011 04 кв'
Возвращает '2014.12'
F.DATESTR(20111231, rep.everyhalf)
Возвращает '2011 02 пе'
F.DATESTR(20111231, rep.everyyear)
Возвращает '2011'
Пример применения функции
Рассмотрим показатель А, в котором 12 значений по справочнику "Период" за 2011 год от "2011.01; 2011 01 кв" до "2011.12; 2011 04 кв".
Допустим, данные этого показателя введены в апреле и помечены справочником "Период", как данные за февраль.
Тогда для того, чтобы отразить приход по показателю за прошлый период, напишем формулу для расчетного показателя:
F.SUM (А, F.REPORTDATE (rep.bystart), F.REPORTDATE (rep.byend), rep.byreport, 'Период' like ('' + F.DATESTR (F.DATEADD (F.TODAY(0, rep.byend), -2, F.REPORTSTEP, rep.byend) , F.REPORTSTEP) + ''))
Если график строится по расчетному показателю за 2011 год с шагом периода «Месяц», то приведение формулы для расчета каждого шага будет выглядеть так:
F.SUM(A, 20110101, 20111231, rep.everymonth, 'Период' like '2010.11'))
Возвращает 2011.01.01 - 2011.01.31
F.TODAY(0, rep.byend)
Возвращает 2011.01.31
F.DATEADD(2011.01.31, -2, rep.everymonth, rep.byend)
Отнимает 2 месяца и выравнивает дату на конец месяца - 2010.11.30
F.DATESTR(2010.11.30, rep.everymonth)
Возвращает ‘2010.11'
F.SUM(A, 20110101, 20111231, rep.everymonth, 'Период' like '2010.12'))
Возвращает 2011.02.01 - 2011.02.28
F.TODAY (0, rep.ByEnd)
Возвращает 2011.02.28
F.DATEADD (2011.01.31, -2, rep.everymonth, rep.byend)
Отнимает 2 месяца и выравнивает дату на конец месяца - 2010.12.31
F.DATESTR(2010.11.30, rep.everymonth)
Возвращает ‘2010.12'
F.SUM (A, 20110101, 20111231, rep.everymonth, 'Период' like '2011.01'))
Возвращает 2011.03.01 - 2011.03.31
F.SUM (A, 20110101, 20111231, rep.everymonth, 'Период' like '2011.10'))
Возвращает 2011.12.01 - 2011.12.31
При укрупнении того же показателя до шага периода «Квартал», приведение формулы будет выглядеть так:
F.SUM (A, 20110101, 20111231, rep.everyquarter, 'Период' like '2010 03 кв')
Возвращает 2011.01.01 - 2011.03.31
F.TODAY (0, rep.byend)
Возвращает 2011.03.31
F.DATEADD(2011.03.31, -2, rep.everyquarter, rep.byend)
Отнимает 2 квартала и выравнивает на конец квартала - 2010.09.30
F.DATESTR(2010.09.30, rep.everyquarter)
Возвращает '2010 03 кв'
F.SUM (A, 20110101, 20111231, rep.everyquarter, 'Период' like '2010 04 кв')
Возвращает 2011.04.01 - 2011.06.30
F.TODAY (0, rep.byend)
Возвращает 2011.06.30
F.DATEADD (2011.06.30, -2, rep.everyquarter, rep.byend)
Отнимает 2 квартала и выравнивает дату на конец квартала -- 2010.12.31
F.DATESTR(2010.12.31, rep.everyquarter)
Возвращает '2010 04 кв'
F.SUM (A, 20110101, 20111231, rep.everyquarter, 'Период' like '2011 01 кв'))
Возвращает 2012.01.01 - 2011.03.31
F.SUM (A, 20110101, 20111231, rep.everyquarter, 'Период' like '2011 02 кв'))
Возвращает 2012.04.01 - 2011.06.30
Функция F.STRINDEXOF возвращает индекс начала искомой строки (параметр 1), содержащейся в строке (параметр 2). Индексация строки начинается с единицы.
F.STRINDEXOF(string <выражение1>, string <выражение2>)
- Выражение1 – искомая строка
- Выражение2 – строка, в которой производится поиск
Нельзя использовать в качестве следующие символы: %, _ , [ ] , ^
F.STRINDEXOF('(', '10 (100%)')
Возвращает значение 4
Функция F.SUBSTR возвращает строку, содержащуюся в строке (параметр 1) от заданной позиции (параметр 2) до заданной длины (параметр 3)
F.SUBSTR(string <выражение1>, int <выражение2>, int <выражение3>)
- выражение1 –строка, из которой будет вырезаться строка
- выражение2 – позиция, с которой производим вырезание строки
- выражение3 – длина строки, которую хотим получить.
Нельзя использовать следующие символы: %, _ , [ ] , ^
F.SUBSTR('10 (100%)', 5, 3)
Возвращает значение 100
F.SUBSTR(Пушкин Александр Сергеевич'; 0 ; f.strindexof( ' ' ; Пушкин Александр Сергеевич))
Возвращает значение 'Пушкин'
Функция F.STRUBSTR возвращает строку (параметр 1) до заданной строки (параметр 2)
Данная функция используется только в Мастере настройки сценариев импорта
F.STRUBSTR (string <выражение1>, string <выражение2>)
- выражение1 – строка, до которой производим вырезание
- выражение2 – строка, из которой производим вырезание
Нельзя использовать следующие символы: %, _ , [ ] , ^
F.STRUBSTR ( ',' , 'Тюмень, ул.Ленина 100' )
Возвращает значение Тюмень
Функция F.STRFMTTMPL дополняет символами строку (параметр 2) до строки в заданном формате (параметр 1)
Данная функция используется только в Мастере настройки сценариев импорта
F.STRFMTTMPL (string <выражение1>, string <выражение2>)
- выражение1 – строка в заданном формат
- выражение2 – строка для преобразования в заданный формат
Нельзя использовать следующие символы: %, _ , [ ] , ^
F.STRFMTTMPL( '00000' , '123' )
Возвращает значение '00123'
Функция F.SUBSTRBETW возвращает строку, содержащуюся в строке (параметр 1) между строкой (параметр 2) и строкой (параметр 3)
Данная функция используется только в Мастере настройки сценариев импорта
F.SUBSTRBETW(string <выражение1>, string <выражение2>, string <выражение3>)
- выражение1 – строка, от которой производим вырезание
- выражение2 – строка, до которой производим вырезание;
- выражение3 – строка, из которой производим вырезание
Нельзя использовать следующие символы: %, _ , [ ] , ^
F.SUBSTRBETW (',', ',', 'Тюмень, ул.Ленина 100, кв.99')
Возвращает значение 'ул.Ленина 100'
F.SUBSTRBETW ('ATM', ',', 'банкомат ATM2345, отделение №1')
Возвращает значение '2345'
Функции для вычисления значений показателей
Функция F.AVG вычисляет среднее значение переменной за период в шаге периода (сумма за период, деленная на количество значений в этом периоде)
F.AVG(<показатель>)
или
F.AVG(<показатель>, int <дата начала>, int<дата конца>, REP.EVERY*)
- показатель – код переменной или выражение
- дата начала и дата конца - длюбое синтаксически верное выражение возвращающее дату начала и конца периода за который производится расчет.
- REP.EVERY*- константа соответствующего шага периода (по умолчанию используется шаг периода отчета)
F.AVG(А) или F.AVG( A , F.ToDay(0, rep.bystart ), F.ToDay(0, rep.byend ), F.ReportStep( A ))
Возвращает среднее значение за текущий период (сумма за текущий период, деленная на количество значений за этот период).
Равнозначно F.SUM(А) / F.Count(А)
Функция F.AVGPERIOD вычисляет среднее значение переменной за период (сумму на текущий период от начального периода, деленную на количество периодов)
F.AVGPERIOD(<показатель>, {int <смещение>,)
или
F.AVGPERIOD(<показатель>, {int <смещение>, {int <дата начала>, int<дата конца>, REP.EVERY*, {int <смещение дат периода>}, {<фильтр>, {bool <выражение>} } }})
- показатель – код переменной или выражение
- смещение переменной по периоду для вычисления
- дата начала - дата, от которой производится вычисление (по умолчанию используется период отчета)
- дата конца - дата, до которой производится вычисление (по умолчанию используется период отчета).
- REP.EVERY*- константа соответствующего шага периода (по умолчанию используется шаг периода отчета).
- смещение дат периода - количество шагов периода для смещения данных расчета среднего значения по времени (по умолчанию значение равно нулю).
- необязательный фильтр на справочники
F.AVGPERIOD(А) или F.AVGPERIOD(А, 1)
Возвращает сумму на текущий период от начального периода, деленную на количество периодов
F.AVGPERIOD(А, 2)
Возвращает сумму и номер периода, которые увеличиваются по каждому второму периоду отчета, т.е. если задан период год с шагом периода в отчете «Месяц», то:
-
для первого месяца получим сумму за Первый месяц/1
-
для второго месяца получим сумму за Второй месяц/1
-
для третьего месяца получим (сумму за Первый + Третий месяц)/2
-
для четвертого месяца получим (сумму за Второй + Четвертый месяц)/2
-
для пятого месяца получим (сумму за Первый + Третий + Пятый месяц)/3
-
для шестого месяца получим (сумму за Второй + Четвертый + Шестой месяц)/3
и т.д.
F.AVGPERIOD(А,12)
При параметрах отчета с шагом периода «Месяц» за период 2 года, среднее значение будет вычисляться для каждого месяца погодично, т.е.:
-
для первого месяца первого года получим Январь2010/1
-
для первого месяца второго года получим (Январь2010+Январь2011)/2
-
для второго месяца первого года получим Февраль2010/1
-
для второго месяца второго года получим (Февраль2010+Февраль2011)/2
F.AVGPERIOD(A, 12, 20130101, 20141231, rep.everymonth, 12)
В данной функции определяется помесячное среднее значение переменной «А» с учетом значений за 2 указанных в функции года. Средний результат, полученный за 13-й и 14-й года, будет отображен в 15-м году. Для 2014 года среднее значение будет равно значению за 2013 год
F.AVGPERIOD(A, 0, F.TODAY(0, rep.bystart), F.TODAY (0, rep.byend), rep.everymonth )
В данной функции определяется помесячное среднее значение переменной «А» за текущий период.
Для вычисления периода расчета среднего значения использована функция F.TODAY, рассмотренная выше.
При построении показателя с шагом «Квартал» будет вычисляться среднее помесячное значение показателя для каждого квартала периода отчета.
При построении показателя с шагом «Полугодие» будет вычисляться среднее помесячное значение показателя для каждого полугодия периода отчета
и т.д.
F.AVGPERIOD(A, 0, F.TODAY (0, rep.bystart), F.TODAY (0, rep.byend), rep.everyday )
В данной функции определяется среднее для каждого месяца значение переменной «А» за период отчета с шагом месяц.
F.AVGPERIOD(A, 4, F.DATE (1, 1, F.YEAR (F.REPORTDATE (rep.byend))-3) , F.DATE (31, 12, F.YEAR (F.REPORTDATE (rep.byend)) -1), rep.everyquarter, 4 )
В данной функции по Показателю с шагом «Квартал» и периодом с 1 квартала 2015 по 4 квартал 2015 рассчитывает среднее квартальное значение по соответствующему кварталу за три предшествующих года, где:
А- переменная
4 - смещение шага суммирования для расчета среднего значения, т.е. суммироваться будут не все значения показателя А, а согласно указанному смещению (1 квартал 2012 года +1 квартал 2013 и 1кв. 2014). Полученное значение при расчете будет поделено на количество шагов суммирования (в данном случае количество первых кварталов = 3).
Функция F.DATE (1, 1, F.YEAR (F.REPORTDATE (rep.byend)) -3) - определяет дату начала для вычисления среднего значения. День и месяц заданы (1 января), а год вычисляем исходя из года даты окончания отчета и указанного смещения. В данном случае смещение «-3» = 2015 - 3= 2012.
Аналогично вычисляем дату конца для вычисления среднего значения: задаем день и месяц (31 декабря), а год вычисляем от даты окончания отчета со смещением. В данном случае смещение «-1» = 2015 - 1= 2014.
rep.everyquarter - шаг вычисления среднего значения – Квартал
4 - смещение полученных данных в шаге вычисления среднего значения (на 4 периода вперед), т.е. значением за 1 кв. 2015 года будет результат - (1 кв.2012+1кв.2013+1кв.2014) /3
значением за 2 кв. 2015 года будет результат - (2 кв.2012+2кв.2013+2кв.2014) /3 и т.д.
Если количество шагов периода для смещения данных расчета среднего значения по времени не указывать, то полученный результат отобразится в 2014 году.
F.AVGPERIOD(A, 12, F.DATE (1, 1, F.YEAR (F.REPORTDATE (rep.byreport)) -2), F.DATE (31, 12, F.YEAR (F.REPORTDATE (rep.byreport) ) -1), rep.everymonth , 12)
В данной функции определяется дата отчета и ежемесячное среднее значение переменной «А» за 2 предыдущих года.
Среднее значение за 2011 и 2012 года будет отображено в 2013,
Среднее значение за 2012 и 2013 года будет отображено в 2014,
Среднее значение за 2013 и 2014 года, будет отображено в 2015 году
и т.д.
Функция F.AVGTAB для вычисления среднего значения показателя, расщепленного по справочнику
F.AVGTAB (<показатель>, '<код справочника>')
- показатель - переменная показателя, среднее значение которого необходимо найти
- код справочника - код справочника, по которому производится расщепление при вычислении среднего значения
F. AVGTAB(А, 'Сотрудник')
Показатель, соответствующий переменной A, расщепляется по справочнику «Сотрудник» а в получившемся списке <Значение справочника>=<значение показателя> берется сумма значений показателя и делиться на количество значений справочника. Для суммы и количества учитывается не проставленная аналитика.
Примечание:
На первый взгляд может показаться, что
F. AVGTAB(А, 'Сотрудник') соответствует
F. SUMTAB(A, 'Сотрудник') / F.ANALITCOUNT(A, 'Сотрудник'), но в общем случае, это не так.
F. ANALITCOUNT() Не учитывает не проставленную аналитику.
Допустим, расщепление по справочнику Сотрудник для показателя дало следующий список значений:
'Иванов' = 15
'Петров' = 5
'Сидоров' = 10
'не задано значение' = 7,
Тогда:
F.SUMTAB(A, 'Сотрудник') = 37
F. ANALITCOUNT(A, 'Сотрудник') = 3
F. SUMTAB(A, 'Сотрудник') / F.ANALITCOUNT(A, 'Сотрудник') = 37 / 3 = 12,(3)
F. AVGTAB(А, 'Сотрудник') = 37 / 4 = 9,25
Функция F.SUM вычисляет сумму показателя за период в заданном шаге периода или сумму от массива
F.SUM(<показатель>, int <дата начала>, int <дата конца>, REP.EVERY*, {<фильтр>},{bool <выражение>})
F.SUM(<показатель>) равнозначен F.SUM(<показатель>, F.ToDay(0, Rep.ByStart), F.ToDay(0, Rep.ByEnd), F.ReportStep(<показатель>))
F.SUM ([<выражение>{,<выражение>}])
- показатель – код переменной или выражение
- дата начала - дата, от которой производится вычисление (по умолчанию используется период отчета)
- дата конца - дата, до которой производится вычисление (по умолчанию используется период отчета).
- REP.EVERY*- константа соответствующего шага периода (по умолчанию используется шаг периода отчета).
- необязательный фильтр на справочники показателя
- выражение – любое синтаксически верное выражение, результат которого число
F.SUM(А, 20140101, 20141231, rep.everymonth)
Возвращает сумму месячных значений Показателя «А» за 2014 год.
F. SUM(А, 20140101, 20141231, rep.everymonth, 'фил' = 'Московский филиал')
Возвращает годовую сумму месячных значений Показателя «А» с аналитикой «Московский филиал» по справочнику «Филиалы» (код справочника «фил»)
F.SUM(А, F.TODAY (-1, rep.bystart), F.TODAY (0, rep.byend), rep.everymonth)
Возвращает сумму показателя A за период от начала предыдущего расчетного месяца до конца текущего расчетного месяца.
Для вычисления даты начала и даты конца используется функция F.TODAY со смещением
F.TODAY (-1, rep.bycurrent) -- при шаге отчета месяц текущая дата минус 1 месяц
F.TODAY (0, rep.byend) -- при шаге отчета месяц при расчете показателя на ноябрь --- конец ноября
F. SUM(A, F.REPORTDATE(rep.bystart), F.TODAY(0, rep.byend) , rep.everymonth )
Возвращает сумму за период нарастающим итогом.
F.REPORTDATE(rep.bystart) – возвращает дату начала отчета
F.TODAY(0, rep.byend) - возвращает дату столбца
За период с января по декабрь 2014 года сумма будет рассчитываться помесячно нарастающим итогом до текущего столбца отчета:
-
за январь возвращается значение января,
-
за февраль - январь+февраль,
-
за март- январь+февраль+март
и т.д.
F.SUM(A, F.TODAY(f.if(F.REPORTSTEP=rep.everymonth,-12,f.if (F.REPORTSTEP =rep.everyquarter, -4, f.if(F.REPORTSTEP=rep.everyhalf,-2,-1))),rep.bystart), F.TODAY(f.if ( F.REPORTSTEP=rep.everymonth, -12, f.if(F.REPORTSTEP=rep.everyquarter,-4, f.if(F.REPORTSTEP=rep.everyhalf,-2,-1))),rep.byend), rep.bycurrent )
Возвращает сумму по показателю «A» за текущий период со смещением на год вперед.
При построении отчета за 2015 год с шагом «Квартал» отобразится сумма:
-
в первом квартале 2015 года - за первый квартал 2014 года.
-
во втором квартале 2015 года - за второй квартал 2014 годы
и т.д.
При построении отчета за 2015 год с шагом «Полугодие»
- в первом полугодии 2015 года отобразится сумма значений за первое полугодие 2014 года.
При построении отчета за 2015 год с шагом год отобразится сумма значений за 2014 год.
F.SUM(A, F.DATE ( 01, f.if (F.QUARTER (F.REPORTDATE (rep.byreport))=1, 01, f.if (F.QUARTER (F.REPORTDATE (rep.byreport))=2, 04, f.if (F.QUARTER (F.REPORTDATE (rep.byreport))=3, 07, 10 ) ) ), F.YEAR (F.REPORTDATE (rep.byreport))) , F.TODAY (0, rep.byend), rep.everyweek)
Возвращает нарастающий по неделям итог по каждому кварталу года отчета.
F. SUM(А, F.DATE (01, 01,F.YEAR(F.REPORTDATE(rep.byreport)) ), F.TODAY (0, rep.byend), rep.everymonth)
Возвращает нарастающий помесячный итог по каждому году отчета. Для ускорения расчета нарастающего итога также можно воспользоваться формулой:
f.if(F.Month(F.REPORTDATE(rep.byreport)) = 1, A,
f.if( f.periodnumber(rep.ByCurrent) <= 0, 0, f.if( f.periodnumber(rep.ByCurrent) = 1,
F.SUM( A , F.DATE (01, 01,F.YEAR(F.REPORTDATE(rep.byreport)) ), F.ToDay(0, rep.byend), rep.everymonth),
f.prevvaluethis(1) + A)))
F.SUM( [A , B])
Возвращает сумму переменных в массиве эффективнее чем А+В
Функция F.PROGRESSIVESUM вычисляет сумму данных показателя, сгруппированных в шаге периода показателя, нарастающим итогом в одном из указанных периодов
F.PROGRESSIVESUM(<показатель>,rep.everyyear|rep.everyhalf|rep.everyquarter |rep.everymonth)
- показатель – переменная показателя, для которой нужно рассчитать сумму данных в шаге периода показателя нарастающим итогом за указанный период
- rep.everyyear – нарастающий итог считается с начала каждого года
- rep.everyhalf – нарастающий итог считается с начала каждого полугодия
- rep.everyquarter – нарастающий итог считается с начала каждого квартала
- rep.everymonth – нарастающий итог считается с начала каждого месяца
F.PROGRESSIVESUM (A, Rep.EveryYear)
За период с января по декабрь одного или нескольких лет будет рассчитываться помесячно нарастающим итогом в рамках каждого года:
-
за январь возвращается значение января,
-
за февраль - январь+февраль,
-
за март- январь+февраль+март
и т.д.
Функция F.SUMTAB вычисляет сумму показателя, расщепленного по справочнику
F.SUMTAB(<показатель>, <справочник>)
- показатель – код переменной или выражение
- справочник – код справочника, по которому значениям которого производится расщепление при суммировании
F.SUMTAB(X, 'филиал')
Возвращает итоговую сумму переменной Х за отчетный период в шаге периода отчета с расщеплением по справочнику «филиал»
X - расчетный показатель, равный произведению двух базовых показателей А*В, каждый из которых имеет аналитику по справочнику 'филиал':
| Филиал | A | B |
|---|---|---|
| филиал 1 | 1,00 | 7,00 |
| филиал 2 | 2,00 | 8,00 |
| филиал 3 | 3,00 | 9,00 |
| Итого: | 6,00 | 24,00 |
Функция F.SUMTAB подсчитает итоговую сумму произведений А*В в разрезе справочника 'филиал' (как в табличном отчете) за период отчета:
F.SUMTAB (Х, 'фил') = 7+16+27=50
Функция F.SUM в этом случае подсчитает за указанный период сумму по показателю «А» и умножит ее на сумму по показателю «В» за этот период:
F.SUM (Х, 20140101, 20143112, rep.everymonth) = 6+24=30
Функция F.COUNT вычисляет количество значений в показателе за период в заданном шаге периода или количество элементов в массиве
F.COUNT(<показатель>, int <дата начала>, int <дата конца>, REP.EVERY*, {<фильтр>})
или
F.COUNT(<показатель>),
что равнозначно
F.COUNT(<показатель>, F.ToDay(0, Rep.BySart), F.ToDay(0, Rep.ByEnd), F.ReportStep(<показатель>))
F.COUNT ([<выражение>{, <выражение>}])
- показатель – код переменной или выражение
- дата начала - дата, от которой производится вычисление (по умолчанию используется период отчета)
- дата конца - дата, до которой производится вычисление (по умолчанию используется период отчета)
- REP.EVERY*- константа соответствующего шага периода (по умолчанию используется шаг периода отчета)
- необязательный фильтр на справочники показателя
- выражение – любое синтаксически верное выражение, результат которого число
F.COUNT(А)
Возвращает количество записей показателя «А» за период отчета.
F.COUNT(А, 20140101, 20141231, rep.everymonth)
Возвращает количество записей показателя «А» за указанный период.
F.COUNT(А, F.TODAY (0, rep.bystart), F.TODAY (0, rep.byend), rep.byreport)
Возвращает количество записей показателя «А» за указанный период
F.COUNT(А, 20140101, F.TODAY, rep.everymonth, 'фил' = 'Московский филиал' AND 'фил' = 'Тверь')
Возвращает количество записей показателя «А» по Московскому и Тверскому филиалам в шаге периода месяц за период начиная с 01 января 2014
F.COUNT([А, B])
Возвращает количество элементов в массиве - 2
Функция F.ANALITCOUNT возвращает количество значений справочника показателя
Функция F.ANALITCOUNTBASE возвращает количество значений справочника в базовом показателе
Ограничения функции ANALITCOUNTBASE:
-
в случае использования этой функции, формула не должна содержать другие функции
-
в расчётном показателе может быть всего одна переменная, являющаяся базовым показателем
-
переменная данной функции отдельно не рассчитывается (в плане расчёта отображается, но без данных)
F.ANALITCOUNT(<показатель>, <справочник>), F.ANALITCOUNTBASE(<показатель>, <справочник>)
- показатель – код переменной
- справочник – код справочника, по которому подсчитывается количество значений справочника в данных показателя
F.ANALITCOUNT (А, 'Сотрудники')
Возвращает количество сотрудников по показателю «А» за период отчета.
Функция F.PERIODNUMBER возвращает номер рассчитываемого в данный момент шага
F.PERIODNUMBER(REP.BYREPORT | REP.BYCURRENT)
- REP.BYCURRENT - возвращает номер шага в шаге периода рассчитываемого показателя,
- REP.BYREPORT - возвращает номер шага в шаге периода отчета.
F.PERIODNUMBER(rep.byreport)
Для отчета за год с шагом периода квартал по расчетному показателю с шагом периода месяц будет возвращать последовательно 1, 2, 3, 4
F.PERIODNUMBER (rep.bycurrent)
Для отчета за год с шагом периода квартал по расчетному показателю с шагом периода месяц1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
Функция F.REPORTSTEP возвращает одно из значений констант REP.EVERY*, которое соответствует текущему шагу периода показателя или отчета
F.REPORTSTEP({<показатель>})
- показатель – код переменной
f.if (F.REPORTSTEP(А) = rep.everymonth, 1, 2)
Возвращает для показателя «А» с шагом месяц - 1, для показателя с другим шагом - 2.
F.REPORTSTEP(А)
Возвращает шаг показателя «А»
день – 4
неделя – 5
месяц – 6,
квартал – 7
полугодие – 8
год – 9
F.REPORTSTEP
Возвращает шаг отчета (4 – 9)
Функция F.PREVVALUE возвращает значение показателя, взятое в шаге периода показателя на заданное число шагов назад
F.PREVVALUE(<показатель>, int <выражение>)
- показатель – переменная, для которой возвращается значение за предыдущий период
- выражение – количество шагов в шаге периода показателя
F.PREVVALUE (А, 1)
Возвращает значение, равное переменной «A» за предыдущий период.
F.PREVVALUE (А, 2)
Возвращает значение, равное переменной «A» за период, предшествующий предыдущему.
Функция F.PREVVALUETHIS возвращает значение текущего показателя, взятое в шаге периода показателя на заданное число шагов назад
F.PREVVALUETHIS(int <выражение>)
- выражение – количество шагов в шаге периода показателя
А + F.PREVVALUETHIS (1)
Возвращает сумму значений показателя «A» за текущий и предыдущий период.
А + F.PREVVALUETHIS (2)
Возвращает сумму значений показателя «A» за текущий период и период, предшествующий предыдущему.
f.if (F.MONTH (F.REPORTDATE (rep.byreport)) = 1, A, f.if ( F.PERIODNUMBER (rep.bycurrent) <= 0, 0, f.if ( F.PERIODNUMBER (rep. bycurrent) = 1, F.SUM( A , F.DATE (01, 01,F.YEAR(F.REPORTDATE (rep.byreport)) ), F.TODAY(0, rep.byend), rep.everymonth), A + F.PREVVALUETHIS (1))))
Возвращает значение, равное переменной «A» за предыдущий период для расчета суммы нарастающим итогом с начала года.
Функция F. VALPOSTAB возвращает значение показателя по номеру отсортированного списка в разрезе аналитического справочника
F. VALPOSTAB (<показатель>, ‘<код справочника>', <позиция>, <направление сортировки>)
- показатель - переменная показателя, значение которой необходимо вернуть из позиции отсортированного по значению и расщепленное по справочнику
- код справочника - код справочника, по которому производится расщепление
- позиция - номер позиции, из которой необходимо вернуть значение, расщепленное по справочнику.
Любое синтаксически верное выражение, которое возвращает число в диапазоне от 1 до количества элементов, попавших под расщепление по справочнику, т.е. от 1 до F.AnalitCount() по тому же справочнику.
При любых других значениях функция возвращает 0.
Если при расщеплении по справочнику список значений пуст, т.е. F.AnalitCount() = 0, то функция также возвращает 0. Позиция - номер позиции, из которой необходимо вернуть значение, расщепленное по справочнику
- направление сортировки - true (или 1) - сортировать по возрастанию значений, false (или 0) - сортировать по убыванию значений
F. VALPOSTAB (A, ‘ОргСтруктура', 3, 1)
Для Базового показателя, связанного с переменной А, у которого есть значения по справочнику «ОргСтруктура»:
15 - Энергоблок 1
20 - Энергоблок 2
10 - Энергоблок 3
указанная функция вернет значение позиции 3 отсортированного списка значений:
10 - Энергоблок 3
15 - Энергоблок 1
20 - Энергоблок 2
Т.е. результат работы функции будет равен 20.
Функция F.GETREFVALUE осуществляет поиск элемента в справочнике по образцу в первом указанном поле. В случае успеха возвращает значение из второго поля иначе 0.
F.GetRefValue (<справочник>, <поле справочника>, <образец>, <поле справочника>)
- справочник – строка с кодом справочника
- поле справочника – строка с идентификатором поля справочника
- образец – образец для поиска
- поле справочника – строка с идентификатором поля справочника
F.GetRefValue ('БюджетныйСрез', 'Code', '5206463403', 'DocID')
Записывает в ссылочное поле на справочник «БюджетныйСрез» в данных показателя ссылку на значение справочника '5206463403'
F.GetRefValue ('Распорядитель', 'DocID', Затраты.Распорядитель, 'DocID')
Вычисляет значение ссылочного поля на справочник «Распорядитель» Базового показателя по значению ссылочного поля на этот же справочник «Распорядитель» в справочнике «Затраты»
F. GetRefValue ('Распорядитель', 'Code', Затраты.Распорядитель, 'DocID')
Вычисляет значение справочника «Распорядитель» Базового показателя по строковому полю «Распорядитель» справочника «Затраты»
F.GetRefValue ('Проценты','DocID', f.matrixrefvalue ('ДСС') , 'Name')
Записывает в строковое поле Базового показателя наименование значения справочника «Проценты», вычисленного с помощью Динамического списка\Справочник с кодом "ДСС"
F.GetRefValue ('Период', 'Code', F.Str(F.Year(DateOper)) +'.'+ F.Str(f.if(F.Month(DateOper)> 6, 2, 1)) +'.'+ F.Str(f.if(F.Month(DateOper)< 4, 1, f.if(F.Month(DateOper)< 7, 2, f.if(F.Month(DateOper)< 10, 3, 4)))) +'.'+ F.Str(F.Month(DateOper)) , 'DocID')
Вычисляет значение ссылочного поля на системный справочник «Период» в данных показателя по дате значения показателя.
Функция F.MATRIXREFVALUE возвращает значения справочника, вычисленного по аналитическому ключу из версии матриц типов «Динамический список\Справочник» и «Динамический список\Число» на дату.
F.MATRIXREFVALUE (<матрица>{, <дата>})
- матрица – строка с кодом матрицы преобразования типа «Динамический список \Справочник» или «Динамический список\Число»
- дата – необязательное поле с датой, на которую берется версия матрицы (если не задано, то берется значение даты из поля DateOper)
F.MatrixRefValue ('БюджетныйСрез') или F.MatrixRefValue ('БюджетныйСрез', DateOper)
Записывает в данные показателя в ссылочное поле на справочник «Бюджетный срез» ссылку на значение справочника, которое будет вычислено по матрице преобразования с кодом «БюджетныйСрез» на дату значения показателя
Мастер настройки сценариев импорта
Функция F.STR возвращает строковое представление числа
F.STR(float <выражение>)
- выражение – выражение, которое необходимо преобразовать в строку
Функция F.STRDATE возвращает строковое представление даты.
F.STR(float <выражение>)
- выражение – выражение, которое необходимо преобразовать в строку
Функция F.LTRIM удаляет в строке пробелы слева
F.LTRIM(string <выражение>)
- выражение – строка, в которой необходимо обрезать пробелы слева
Функция F.RTRIM удаляет в строке пробелы справа
F.RTRIM (string <выражение>)
- выражение – строка, в которой необходимо обрезать пробелы справа
Функция F.TRIM удаляет в строке пробелы слева и справа
F.TRIM(string <выражение>)
- выражение – строка, в которой необходимо обрезать пробелы слева и справа
Функция F.HI переводит значение строки в верхний регистр
F. HI (string <выражение>)
- выражение – строка, значения которой необходимо перевести в верхний регистр
Функция F.LO переводит значение строки в нижний регистр
F.LO (string <выражение>)
- выражение – строка, значения которой необходимо перевести в нижний регистр
Функция F.REPLACE заменяет в строке (параметр 1) первое значение (параметр 2) на второе значение (параметр 3)
F.REPLACE(string < выражение1>, string < выражение2>, string < выражение3>)
- выражение1 – строка, в которой происходит замена
- выражение2 – заменяемая строка/значение
- выражение3 – строка/значение, на которое производится замена
Функция F.GROUPSUM осуществляет суммирование значений указанного числового поля по указанной группировке полей. Указание группировки полей является необязательным, в этом случае будет взята сумма по всему набору данных
F.GROUPSUM(float <выражение>, { <аргумент1>, ..., <аргументN>})
- выражение1 – числовое поле, значения которого суммируются
- необязательный параметр группировки полей, по которой осуществляется суммирование
Для суммирования значений поля «Сумма» с группировкой по полям «Параметр1» и «Параметр2» функция будет иметь следующий вид:
| Сумма | Параметр1 | Параметр2 | F.GROUPSUM (Сумма, Параметр1) | F.GROUPSUM (Сумма, Параметр1, Параметр2) |
|---|---|---|---|---|
| 15 | П1 | П21 | 25 | 45 |
| 20 | П1 | П22 | 20 | 45 |
| 10 | П1 | П21 | 25 | 45 |
Функция F.TSUM осуществляет суммирование значений указанного числового поля по указанному условию. Указание условия не является необязательным, в этом случае будет взята сумма всех значений перечисленных полей.
F.TSUM(float <выражение>{,float <выражение1>, ..., float <выражениеN>})
- выражение - числовое поле, значения которого суммируются или формула по которой производится расчет числа для суммирования
Для суммирования:
-
значений поля «А» (4),
-
значений полей «А» и «В» (5)
-
значений поля «А», параметр которого «П1» (6)
| A | B | Параметр | F. TSUM (A) | F. TSUM (A, B) | F. SUM ( F.IF (Параметр = 'П1' , А, 0) |
|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 |
| 15,00 | 1,00 | П1 | 45,00 | 51,00 | 25,00 |
| 20.00 | 2,00 | П | 45,00 | 51,00 | 25,00 |
| 10,00 | 3,00 | П1 | 45,00 | 51,00 | 25,00 |
Функция F.DIST распределения с указанной точностью (параметр 1) для заданной суммы (параметр 2) по значению веса (параметр 3)
F.DIST (int <выражение1>, float <выражение2>, float <выражение3>)
- выражение1 – целое число от 0 до 16 - количество знаков после запятой для дельты (погрешности) между значением параметра 2 и суммой произведения параметра 3 (коэффициент распределения для строки данных) на значение параметра 2 (общая сумма для всех строк данных
- выражение2 – число или параметр (переменная), задающие общее число (сумму) к распределению
- выражение3 – переменная или формула, по которой рассчитывается коэффициент для строки данных
В вычислимом поле (4) рассчитывается доля кол-ва сотрудников каждого отдела (1) в общем количестве сотрудников компании (3).
Сумма всех значений столбца (4) должна быть равна 1, но из-за большого количества строк со значениями и малыми суммами (1) из-за округлений мы можем получить сумму не равную 1.
Необходимо вычислить дельту между 1 и полученной суммой (4) и распределить ее пропорционально на каждое построчное значение (4).
| А | Параметр | F. TSUM (A) | А/B | F.DIST(5, 1, А/B ) | |
|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | |
| 20,00 | Отдел 1 | 11 565,00 | 0,00177746178… | 0,00177746178… | |
| 5,00 | Отдел 2 | 11 565,00 | 0,00177746178… | 0,00044436544… | |
| ... | Отдел N | 11 565,00 | ... | ... | |
| Сумма | 11 565,00 | 0,99... | 1,00000 |
Функция F.DIST(5, 1, А/B ) вычислит сумму значений А/B сравнит ее с 1 и недостающую разницу пропорционально распределит по строкам (5). Сумму значений (5) сравнит с 1. Если полученная сумма (5) с точностью 5 знаков после запятой не достигнет нужной 1, то вычислит разницу и снова пропорционально распределит ее построчно. И т.д. пока полученная сумма значений (5) не будет равна 1
Функции Карт KPI
Функция F.VARISENABLED возвращает ИСТИНА, если указанная переменная из строчки, включенной в расчет карты KPI. Иначе - ЛОЖЬ
F.VARISENABLED(<переменная>)
- переменная – переменная ячейки Карты KPI
F.VARISENABLED(<H1>)
Возвращает 1 (истина), если переменная из строки, участвующей в расчете.
Иначе, возвращает 0 (ложь).
Параметры
– шаг периода час
– шаг периода год
– текущий шаг периода
– шаг периода день
– начало периода
– конец периода
– шаг периода отчета
– шаг периода неделя
– шаг периода полугодие
– шаг периода квартал
– шаг периода минута
– неизвестный шаг периода
– шаг периода секунда
– шаг периода месяц