Функции
В словаре данных представлена отдельная категория Функции (Functions). В этой категории представлены элементы, при помощи которых можно рассчитать определенный результат или вернуть необходимое значение. Все элементы категории Функции разделены по группам. Кроме этого, в дизайнере отчетов присутствует возможность создания пользовательских функций.
В таблице представлен перечень функций, их описание и краткие примеры.
Информация |
Обратите внимание, при обработке числовых значений в отчетах, тип данных результата зависит от типа данных аргументов. В дашбордах же, все аргументы приводятся к максимальному возможному типу. Как правило, это double или decimal. Соответственно, результат вычисления функции, в большинстве случаев, будет также иметь тип данных decimal или double.
|
Функция |
Описание |
Пример |
Date: |
||
{AddDays(,)} |
Добавляет указанное количество дней к заданной дате. |
{AddDays(DateSerial(2022,1,1), 10)} - результат, в этом случае, будет 11.01.2022 00:00:00, т.е. будет прибавлено 10 дней. |
{AddHours(,)} |
Добавляет указанное количество часов к заданной дате. |
{AddHours(DateSerial(2022,1,1), 5)} - результат, в этом случае, будет 01.01.2022 05:00:00, т.е. будет прибавлено 5 часов. |
{AddMilliseconds(,)} |
Добавляет указанное количество миллисекунд к заданной дате. |
{AddMilliseconds(DateSerial(2022,1,1), 500)} - результат, в этом случае, будет 01.01.2022 12:00:00, т.е. будет прибавлено 500 миллисекунд. |
{AddMinutes(,)} |
Добавляет указанное количество минут к заданной дате. |
{AddMinutes(DateSerial(2022,1,1), 30)} - результат, в этом случае, будет 01.01.2022 00:30:00, т.е. будет прибавлено 30 минут. |
{AddMonths(,)} |
Добавляет указанное количество месяцев к заданной дате. |
{AddMonths(DateSerial(2022,1,1), 2)} - результат, в этом случае, будет 01.03.2022 00:00:00, т.е. к дате будет прибавлено 2 месяца. |
{AddSeconds(,)} |
Добавляет указанное количество секунд к заданной дате. |
{AddSeconds(DateSerial(2022,1,1), 30)} - результат, в этом случае, будет 01.01.2022 00:00:45, т.е. к значению времени будет прибавлено 30 секунд. |
{AddYears(,)} |
Добавляет указанное количество лет к заданной дате. |
{AddYears(DateSerial(2022,1,1), 1)} - результат, в этом случае, будет 01.01.2023 00:00:00, т.е. будет добавлен 1 год. |
Вычисляет интервал между указанными датами. |
{DateDiff(DateSerial(2022,1,30),DateSerial(2022,1,1))} - результат, в этом случае, будет 29.00:00:00, т.е. 29 дней. |
|
Предоставляет возможность указать дату. |
{DateSerial(2022,1,30)} - в этом случае, результат будет 1/30/2022 12:00:00 АМ |
|
Предоставляет возможность отобразить день из указанной даты. |
{Day(DateSerial(2022,1,30))} - в этом случае, результат будет 30, т.к. в аргументах указано тридцатое января 2022 года. |
|
{DayOfWeek()} |
Предоставляет возможность отобразить день недели из указанной даты в текстовом виде.
|
{DayOfWeek(DateSerial(2022,1,30))} - в этом случае, результат будет sunday. |
Предоставляет возможность отобразить день года |
{DayOfYear(DateSerial(2022,2,14))} - в этом случае, результат будет 45, т.к. 14 февраля это 45-ый день года. |
|
Предоставляет возможность отобразить количество дней в месяце: |
{DaysInMonth(DateSerial(2024,2,1))} - в этом случае, результат будет 29, т.к. 2024 год является високосным и в феврале 29 дней. |
|
Предоставляет возможность отобразить количество дней в году: |
{DaysInYear(2024)} - в этом случае, результат будет 366 дней, поскольку 2024 год является високосным годом. |
|
{FromOADate()} |
Преобразует значение OLE Automation Date в DateTime.
|
{FromOADate(45200)} -результат, в этом случае, будет 10.1.2023 12:00:00, т.е. числовое значение будет преобразовано в дату. |
Предоставляет возможность отобразить час из времени: |
{Hour(DataSource.Column)} - в этом случае, из каждого значения будет отображен час. Например, если время 16:22:36, то результатом будет 16. |
|
Предоставляет возможность отобразить минуты из времени: |
{Minute(DataSource.Column)} - в этом случае, из каждого значения будут отображены минуты. Например, если время 16:22:36, то результатом будет 22. |
|
Предоставляет возможность отобразить месяц из даты: |
{Month(DateSerial(2022,12,1))} - в этом случае, результатом будет 12, поскольку установлена дата первое декабря 2016. |
|
{MonthIdent()} |
Позволяет получить название или идентификатор месяца на основе даты.
|
{MonthIdent(DataSource.DocumentDate)} - будет возвращён месяц, соответствующий дате документа. |
Предоставляет возможность отобразить название месяца из указанной даты
|
{MonthName(DateSerial(2022,1,1))} - в этом случае, результатом будет January, поскольку установлена дата первое января 2022 года. |
|
Предоставляет возможность отобразить секунды из времени: |
{Second(DataSource.Column)} - в этом случае, из каждого значения будут отображены секунды. Например, если время 16:22:36, то результатом будет 36. |
|
Предоставляет возможность отобразить время:
|
{TimeSerial(1,14,20)} - в этом случае, результат будет 01:14: 20, т.е. один час, 14 минут, 20 секунд. |
|
{ToJapaneseDateString()} |
Возвращает дату, преобразованную в строку в японском календаре. |
{ToJapaneseDateString(DataSource.Date)} - вернет дату в японском формате. |
{ToOADate()} |
Преобразует DateTime в формат OLE Automation Date. |
{ToOADate(DataSource.Date)} - вернет число, соответствующее дате. |
{WeekOfMonth()} |
Возвращает номер недели месяца для указанной даты. |
{WeekOfMonth(DataSource.SaleDate)} - будет возвращён номер недели в месяце. |
{WeekOfYear()} |
Возвращает номер недели года для указанной даты. |
{WeekOfYear(DataSource.SaleDate)} - будет возвращён номер недели в году. |
Предоставляет возможность отобразить год:
|
{Year(DateSerial(2022,1,2))} - в этом случае, результатом будет 2022, поскольку указана дата второе января 2022 года. |
|
Math: |
||
Предоставляет возможность возратить абсолютно число. |
{Abs(-42)} - в этом случае, результат будет 42 |
|
Предоставляет возможность отобразить угол в радианах. |
{Acos(-1)} - в этом случае, будет вычислен угол в радианх для значения cos = -1, т.е. угл будет равен ~ 3.14. |
|
Предоставляет возможность отобразить угол в радианах. |
{Asin(0)} - в этом случае, будет вычислен угол в радианх для значения sin = 0, т.е. угл будет равен 0. |
|
Предоставляет возможность отобразить угол в радианах. |
{Atan(-1)} - в этом случае, будет вычислен угол в радианх для значения tan = -1, т.е. угл будет равен ~ -0.79 |
|
Предоставляет возможность отобразить максимальное целочисленное значение к указанному числу
|
{Ceiling(25.124)} - в этом случае, результат будет 26. Стоит отметить, что при применении данной функции не происходит округление числа. |
|
Предоставляет возможность вычислить и отобразить значение cos:
|
{Cos(0)} - в этом случае, результат будет 1. |
|
Предоставляет возможность отобразить результат деления одного аргумента на другой:
|
{Div(2,1)} - в этом случае, результат будет 2, т.к. 2 / 1 = 2 |
|
Предоставляет возможность отобразить результат возведения в указанную степень числа e:
|
{Exp(4)} - в этом случае, число е будет возведено в 4-ую степень. |
|
Предоставляет возможность отобразить минимальное целочисленное значение к указанному числу
|
{Floor(123.59)} - в этом случае, результат будет 123, т.к. это ближайшее минимальное целое число. Стоит отметить, что данная функция не производит округление. |
|
Предоставляет возможность вычислить натуральный логарифм:
|
{Log(x)}, где х - это число или выражение, результатом будет вычислеение натурального логарифма. |
|
Предоставляет возможность сравнить два значения и отобразить максимальное:
|
{Maximum(5,9)} - в этом случае, результатом будет число 9.
|
|
Предоставляет возможность сравнить два значения и отобразить минимальное:
|
{Minimum(5,9)} - в этом случае, результатом будет число 5. |
|
Предоставляет возможность округлить значение до целого числа или до определенного количества знаков дробной части:
|
{Round(7.56)} - в этом случае, результат будет 8 |
|
Предоставляет возможность отобразить индикатор со знаком числа. Для положительных чисел 1, 0 - для всех нулевых значений, -1 - для отрицательных значений:
|
{Sign(256)} - в этом случае, результат будет 1. |
|
Предоставляет возможность вычислить sin угла:
|
{Sin(0)} - в этом случае, результат будет 0. |
|
Предоставляет возможность вычислить квадратный корень из числа: |
{Sqrt(4)} - в этом случае, результат будет 2, т.к. квадратный корень из 4 равен 2. |
|
Предоставляет возможность вычислить tg угла:
|
{Tan(90)} - в этом случае, результат будет ~ -1.995 |
|
Предоставляет возможность отобразить только целую часть без округления: |
{Truncate(Sqrt(5))} - в этом случае, результат будет число 2, т.к. квадратный корень из 5 равен ~ 2.236, т.е. целая часть в этом числе и есть 2. {Truncate(DataSource.Column1)} - в этом случае, будет отображена только целая часть от всех значений Column1. |
|
Print State: |
||
Предоставляет возможность выявить значения null в указанной колонке данных. Если будет присутствовать значение null, то результат будет true, иначе - false.
|
{IsNull(DataSource.Column)} - в этом случае, в построенном отчете, вместо значений null будет отображаться значение true, а вместо других значений - false. |
|
Предоставляет возможность отобразить значение из следующей строки. Если значения следующей строки null, то результатом будет 0.
|
Например, колонка данных Column содержит значения 2, 5, 9. Тогда используя функцию {Next(DataSource,"Column")}, в результате первое значение будет 5, второе 9, третье - null. |
|
Предоставляет возможность сравнить значение строки со значением следующей строки. Если значение следующей строки будет 0 или null, то результат будет true, иначе - false.
|
Например, колонка данных Column содержит значения 2, 0, 9. Тогда используя функцию {NextIsNull(DataSource,"Column")}, в результате первое значение будет true, второе - false, третье - true. |
|
Предоставляет возможность отобразить значение из предыдущей строки. Если значения следующей строки null, то результатом будет 0.
|
Например, колонка данных Column содержит значения 2, 5, 9. Тогда используя функцию {Previous(DataSource,"Column")}, в результате первое значение будет null, второе 2, третье - 5. |
|
Предоставляет возможность сравнить значение строки со значением предыдущей строки. Если значение предыдущей строки будет 0 или null, то результат будет true, иначе - false.
|
Например, колонка данных Column содержит значения 2, 9, 0. Тогда используя функцию {PreviousIsNull(DataSource,"Column")}, в результате первое значение будет true, второе - false, третье - false. |
|
Programming Shortcut: |
||
Предоставляет возможность отобразить значение по индексу.
|
Все группы товаров сгруппированы по категориям: дорогие товары, товары средней цены, дешевые товары. Каждой группе присвоен индекс: дорогие - индекс 1, средние - индекс 2, дешевые - индекс 3 . В отчете следует отобразить вместо их индекса - категорию. В этом случае, можно воспользоваться функцией Choose.
{Choose(DataSource.Column1, "expensive", "average", "cheap")} - вместо индекса 1 будет отображаться значение expensive, вместо индекса 2 - average, вместо индекса 3 - cheap. |
|
{Eval()} |
Позволяет вычислить выражение, переданное в виде строки.
|
В отчете необходимо динамически вычислить значение на основе строки, например формулы, полученной из данных. В этом случае можно воспользоваться функцией Eval.
{Eval("10 + 5 * 2")} - результатом будет 20. |
Предоставляет возможность использовать отобразить то или иное значение, в зависимости от условия:
|
В отчете со складскими запасами необходимо отслеживать количество товаров. Задача логиста состоит в том, что когда количество товаров приближается к нулю (меньше 6), необходимо произвести заказ этих товаров. Для того чтобы выделять критические позиции в отчете визуально можно воспользоваться функцией {IIF(,,)}
{IIF(DataSource.Column1 > 6,"Minimum","Normal")}, |
|
{Rand()} |
Возвращает случайное число.
|
В отчете требуется сгенерировать случайное значение, например для тестовых данных или случайной выборки. В этом случае можно воспользоваться функцией Rand. {Rand()} - вернет случайное число, например 0.7345. |
{Runtime()} |
Возвращает текущее время выполнения отчета.
|
В отчете необходимо отобразить время генерации отчета. В этом случае можно воспользоваться функцией Runtime. {Runtime()} - отобразит текущую дату и время выполнения отчета. |
{RuntimeIdentifier()}
|
Возвращает уникальный идентификатор среды выполнения.
|
В отчёте необходимо определить, в какой среде выполняется система (например, для диагностики или логирования). {RuntimeIdentifier()} - вернёт строку с идентификатором среды выполнения, например:
|
{RuntimeName()} |
Возвращает название среды выполнения.
|
В отчёте необходимо отобразить информацию о платформе, на которой выполняется отчёт. {RuntimeName()} - вернёт название среды выполнения, например:
|
{RuntimeOS()} |
Возвращает информацию об операционной системе.
|
В отчёте необходимо вывести операционную систему сервера или клиента. {RuntimeOS()} - вернёт название операционной системы, например:
|
{RuntimeType()} |
Возвращает тип среды выполнения.
|
В отчёте необходимо определить тип среды (например, серверная, клиентская или другая). {RuntimeType()} - вернёт тип среды выполнения, например:
|
{RuntimeVersion()} |
Возвращает версию среды выполнения.
|
В отчёте необходимо отобразить версию используемой платформы для диагностики или аудита. {RuntimeVersion()} - вернёт версию среды выполнения, например:
|
Предоставляет возможность присвоить заданное значение при выполнении определенного условия: |
Например, в отчете отображается список сотрудников, и необходимо отобразить их должность: Nancy - ведущий менеджер проекта, Andrew - главный разработчик, остальные сотрудники (их 6 человек) - Junior. В этом случае, функция Switch будет иметь три пары аргументов "условие-значение": |
|
Strings: |
||
Предоставляет возможность конвертировать указанные цифры в цифры на арабском: |
{Arabic(2)} - в этом случае, цифра 2 будет иметь арабское написание. |
|
Предоставляет возможность сконвертировать дату в текстовое значение: |
{DateToStr(DataSource.Column1)} - в этом случае, все даты из Column1 будут отображаться в текстовом виде. |
|
Предоставляет возможность вставить значение после определенногое символа в другое значение:
|
{Insert("25",2," dollars")} - в этом случае, в значение 25, после второго символа будет вставлено значение dollars, т.е. результат будет 25 dollars. |
|
Предоставляет возможность отобразить указанное количество символов от левой стороны значения: |
{Left("Beverages", 4)} - в этом случае, будет отображено только четыре символа из значения Beverages, т.е. результат будет Beve. |
|
Предоставляет возможность отобразить количество символов для указанного значения:
|
{Length("Beverages")} - в этом случае, результат будет число 9, т.к. значение Beverages состоит из девяти символов. |
|
Предоставляет возможность отобразить символы из значения. При этом можно задать позицию отсчета:
|
{Mid("Beverages",2,3)} - в этом случае, будет отображено три символа, после первых двух, т.е. результат будет ver. |
|
Предоставляет возможность конвертировать указанные цифры в цифры на персидском: |
{Persian(5)} - в этом случае, цифра 2 будет иметь персидское написание. |
|
Предоставляет возможность удалить указанное количество символов с индекса определенной позиции:
|
{Remove("Beverages",2,3)} - в этом случае, после второго символа будет удалено три символа, т.е. результат будет Beages. |
|
Предоставляет возможность заменить определенные символы или их сочетание на другие символы:
|
{Replace("Beverages","ver","NEW")} - в этом случае, в значении Beverages, символы ver будут заменены на символы NEW, т.е. результат будет BeNEWages |
|
Предоставляет возможность отобразить указанное количество символов от правой стороны значения: |
{Right("Beverages",3)} - в этом случае, будет отображено три символа от правой стороны значения. т.е. ges. |
|
Предоставляет возможность сконвертировать арабские цифры в римские: |
{Roman(4)} - в этом случае, цифра 4 будет иметь римское написание. |
|
Предоставляет возможность отобразить определенное число символов с указанной позиции:
|
{Substring("Beverages",6,3)} - в этом случае, первые шесть символов пропускаются и будет отображаться три символа, т.е. результат будет ges. |
|
Предоставляет возможность отобразить валютную стоимость текстом.
Кроме этого, возможно различные комбинации аргументов. Также есть виды этой функции, поддерживающие различные культуры. Обратите внимание, также есть возможность указать ISO код (тип string) валюты. |
{ToCurrencyWords(100)} - по умолчанию, используется валюта dollars of USA, поэтому результат вычисления функции будет: "One hundred dollars and zero cents". {ToCurrencyWords(100, false)} - в этом случае, стоимость будет указана без центов, поскольку параметр отображения центов установлен в значение false. Результат вычисления функции будет: "One hundred dollars".
{ToCurrencyWords(100, false, true)} - в этом случае, стоимость будет указана с центами, но текст будет отображаться со строчной буквы. Поскольку параметр отображения центов установлен в значение true (третий аргумент функции), а параметр отображения с заглавной буквы установлен в значение false (второй аргумент функции). Результат вычисления функции будет: "one hundred dollars and zero cents".
{ToCurrencyWords(125.9,true,true,"currency","cent name")} - в этом случае, стоимость будет указана с центами и текст будет отображаться с заглавной буквы. Поскольку третий и второй аргумент переданы как значение true соответственно. Также, в этом примере мы определили базовую единицу для целой части как "currency", и базовую единицу для дробной как "cent name". Результат вычисления функции будет: "One hundred and twenty-five currency and ninety cent name".
{ToCurrencyWordsEnIn("dollars","cents",1.25M,0,true)} - в этом случается, указана базовая единица для целой части как dollars, для дробной части - cents, число для конвертации 1.25, затем указано колчество знаков после запятой, которое необходимо конвертировать и значение true ознаечает, что текст будет с заглавной буквы. |
|
Предоставляет возможность отобразить значение в нижнем регистре: |
{ToLowerCase("EURO")} - в этом случае, результат будет euro. |
|
Предоставляет возможность преобразовать число в порядковое числительное: |
{ToOrdinal(25)} - - в этом случае, результат будет 25th. |
|
Предоставляет возможность преобразовать текст в формат первый символ заглавный, остальные в нижнем регистре: |
{ToProperCase("dOllars")} - - в этом случае, результат будет Dollars. |
|
Предоставляет возможность отобразить значение в верхнем регистре: |
{ToUpperCase("dollars")} - в этом случае, результат будет DOLLARS. |
|
Предоставляет возможность отобразить число текстом:
|
{ToWords(100)} - в этом случае, результат будет one hundred. |
|
Предоставляет возможность обрезать пробелы в начале или конце строки: |
{Trim(" <1 dollars> ")} - в этом случае результат в этом случае будет "<1 dollars>". |
|
Предоставляют возможность проверить значение для конвертации в тип decimal, double,long : |
{TryParseLong("100")} - в этом случаерезультат будет true, т.е. значение можно будет сконвертировать в long. |
|