Приложение 1. Язык выражений системы компоновки данных
страницаПриложение 1. Язык выражений системы компоновки данных
Язык выражений системы компоновки данных предназначен для записи выражений, используемых в различных частях системы, например, в настройках компоновки данных, для описания выражений пользовательских полей.
Литералы
В выражении могут присутствовать литералы. Возможны литералы следующих типов:
● Строка,
● Число,
● Дата,
● Булево.
Строка
Строковый литерал записывается в символах «"».
"Строковый литерал"
При необходимости использования внутри строкового литерала символа «"» следует использовать два таких символа.
"Литерал ""в кавычках"""
Число
Число записывается без пробелов, в десятичном формате. Дробная часть отделяется при помощи символа «.».
10.5 200
Дата
Литерал типа Дата записывается при помощи ключевого литерала ДАТАВРЕМЯ (DATETIME). После данного ключевого слова в скобках, через запятую, перечисляются год, месяц, день, часы, минуты, секунды. Указание времени необязательно.
ДАТАВРЕМЯ(1975, 1, 06) - Шестое января 1975 года ДАТАВРЕМЯ(2006, 12, 2, 23, 56, 57) - Второе декабря 2006 года, 23 часа 56 минут 57 секунд
Булево
Булевы значения могут быть записаны при помощи литералов Истина (True), Ложь (False).
Значение
Для указания литералов других типов (системных перечислений, предопределенных данных) используется ключевое слово ЗНАЧЕНИЕ, после которого в скобках идет указание имени литерала.
ЗНАЧЕНИЕ(ВидСчета.Активный)
Поля
В выражениях могут использоваться поля наборов данных. Поле идентифицируется путем к данным. Части пути к данным отделяются друг от друга символом «.». Имя поля не является чувствительным к регистру.
Номенклатура.Артикул Продажи.СуммаОборот
Параметры
Выражения могут использовать параметры. Для использования в выражении параметра достаточно написать его имя, которому будет предшествовать символ &.
&Контрагент &ДатаНачала
1.1. Операции над числами
Унарный –
Данная операция предназначена для изменения знака числа на обратный.
-Продажи.Количество
Унарный +
Данная операция не выполняет над числом никаких действий.
+Продажи.Количество
Бинарный –
Данная операция предназначена для вычисления разности двух чисел.
ОстаткиИОбороты.НачальныйОстаток - ОстаткиИОбороты.КонечныйОстаток ОстаткиИОбороты.НачальныйОстаток - 100 400 - 357
Бинарный +
Данная операция предназначена для вычисления суммы двух чисел.
ОстаткиИОбороты.НачальныйОстаток + ОстаткиИОбороты.Оборот ОстаткиИОбороты.НачальныйОстаток + 100 400 + 357
Произведение
Данная операция предназначена для вычисления произведения двух чисел.
Номенклатура.Цена * 1.2 2 * 3.14
Деление
Данная операция предназначена для получения результата деления одного операнда на другой.
Номенклатура.Цена / 1.2 2 / 3.14
Остаток от деления
Данная операция предназначена для получения остатка от деления одного операнда на другой.
Номенклатура.Цена % 1.2 2 % 3.14
1.2. Операции над строками
Конкатенация (Бинарный +)
Данная операция предназначена для конкатенации двух строк. Использование строк неограниченной длины не поддерживается. Строка длиной более 1024 символов считается строкой неограниченной длины.
Номенклатура.Артикул + ": "+ Номенклатура.Наименование
ПОДОБНО (LIKE)
Данная операция проверяет соответствие строки переданному шаблону.
Значением оператора ПОДОБНО является Истина, если значение выражения удовлетворяет шаблону, и Ложь в противном случае.
Следующие символы в строке шаблона имеют смысл, отличный от просто очередного символа строки:
● % – процент: последовательность, содержащая ноль и более произвольных символов;
● _ – подчеркивание: один произвольный символ;
● […] – один или несколько символов в квадратных скобках: один символ, любой из перечисленных внутри квадратных скобок. В перечислении могут встречаться диапазоны, например a–z, означающие произвольный символ, входящий в диапазон, включая концы диапазона;
● [^…] – в квадратных скобках значок отрицания, за которым следует один или несколько символов: любой символ, кроме тех, которые перечислены следом за значком отрицания.
Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки. Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать спецсимвол, указанный после ключевого слова СПЕЦСИМВОЛ (ESCAPE).
Например, приведенный ниже шаблон означает подстроку, состоящую из последовательности символов: буквы А; буквы Б; буквы В; одной цифры; одной из букв а, б, в или г; символа подчеркивания; буквы а; буквы б; буквы в. Причем эта последовательность может располагаться начиная с произвольной позиции в строке.
"%АБВ[0-9][абвг]_абв%" СПЕЦСИМВОЛ ""
1.3. Операции сравнения
РАВНО
Данная операция предназначена для сравнения двух операндов на равенство.
Продажи.Контрагент = Продажи.НоменклатураОсновнойПоставщик
НЕ РАВНО
Данная операция предназначена для сравнения двух операндов на неравенство.
Продажи.Контрагент <> Продажи.НоменклатураОсновнойПоставщик
МЕНЬШЕ
Данная операция предназначена для проверки того, что первый операнд меньше второго.
ПродажиТекущие.Сумма < ПродажиПрошлые.Сумма
БОЛЬШЕ
Данная операция предназначена для проверки того, что первый операнд больше второго.
ПродажиТекущие.Сумма > ПродажиПрошлые.Сумма
МЕНЬШЕ ИЛИ РАВНО
Данная операция предназначена для проверки того, что первый операнд меньше либо равен второму.
ПродажиТекущие.Сумма <= ПродажиПрошлые.Сумма
БОЛЬШЕ ИЛИ РАВНО
Данная операция предназначена для проверки того, что первый операнд больше либо равен второму.
ПродажиТекущие.Сумма >= ПродажиПрошлые.Сумма
Операция «В» (IN)
Данная операция осуществляет проверку наличия значения в переданном списке значений. Результатом операции будет Истина, если значение найдено, или Ложь – в противном случае.
Номенклатура В (&Товар1, &Товар2)
Операция проверки наличия значения в наборе данных
Операция осуществляет проверку наличия значения в указанном наборе данных. Набор данных для проверки должен содержать одно поле.
Продажи.Контрагент В Контрагенты
Операция проверки значения на NULL ЕСТЬ NULL (IS NULL)
Данная операция возвращает значение Истина, если оно является значением NULL.
Продажи.Контрагент ЕСТЬ NULL
Операция проверки значения на неравенство NULL ЕСТЬ НЕ NULL (IS NOT NULL)
Данная операция возвращает значение Истина, если оно не является значением NULL.
Продажи.Контрагент ЕСТЬ НЕ NULL
1.4. Логические операции
Логические операции принимают в качестве операндов выражения, имеющие тип Булево.
Операция «НЕ» (NOT)
Операция НЕ возвращает значение Истина, если ее операнд имеет значение Ложь, и Ложь, если ее операнд имеет значение Истина.
НЕ Документ.Грузополучатель = Документ.Грузоотправитель
Операция «И» (AND)
Операция И возвращает значение Истина, если оба операнда имеют значение Истина, и Ложь, если один из операндов имеет значение Ложь.
Документ.Грузополучатель = Документ.Грузоотправитель И Документ.Грузополучатель = &Контрагент
Операция «ИЛИ» (OR)
Операция ИЛИ возвращает значение Истина, если один из операндов имеет значение Истина, и Ложь, если оба операнда имеют значение Ложь.
Документ.Грузополучатель = Документ.Грузоотправитель ИЛИ Документ.Грузополучатель = &Контрагент
1.5. Агрегатные функции
Агрегатные функции осуществляют некоторое действие над набором данных.
СУММА (SUM)
Агрегатная функция СУММА рассчитывает сумму значений выражений, переданных ей в качестве аргумента для всех детальных записей. В качестве параметра может быть использован результат функции Массив.
СУММА(Продажи.СуммаОборот)
КОЛИЧЕСТВО (COUNT)
Функция КОЛИЧЕСТВО рассчитывает количество значений, отличных от значения NULL. В качестве параметра может быть использован результат функции Массив. Например:
КОЛИЧЕСТВО(Продажи.Контрагент)
КОЛИЧЕСТВО (РАЗЛИЧНЫЕ) (COUNT (DISTINCT))
Эта функция рассчитывает количество различных значений. В качестве параметра может быть использован результат функции Массив.
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Продажи.Контрагент)
МАКСИМУМ (MAX)
Функция получает максимальное значение. В качестве параметра может быть использован результат функции Массив.
МАКСИМУМ(Остатки.Количество)
МИНИМУМ (MIN)
Функция получает минимальное значение. В качестве параметра может быть использован результат функции Массив.
МИНИМУМ(Остатки.Количество)
СРЕДНЕЕ (AVG)
Функция получает среднее значение для значений, отличных от NULL. В качестве параметра может быть использован результат функции Массив.
СРЕДНЕЕ(Остатки.Количество)
МАССИВ (ARRAY)
Функция возвращает массив, содержащий для каждой детальной записи значение параметра. Если выражение, указанное в параметре, содержит функцию Массив, то считается, что данное выражение является агрегатным. В качестве параметра для функции указывается выражение произвольного типа.
В качестве параметра может быть указано выражение, возвращающее таблицу значений. При этом результатом работы функции Массив будет массив, содержащий значения первой колонки таблицы значений, переданной в качестве параметра.
МАССИВ(КоличествоПредложений)
ТАБЛИЦАЗНАЧЕНИЙ (VALUETABLE)
Функция возвращает таблицу значений, содержащую столько колонок, сколько параметров у функции. Детальные записи получаются из наборов данных, которые нужны для получения всех полей, участвующих в выражениях параметров функции. Если выражение содержит функцию ТаблицаЗначений, то считается, что данное выражение является агрегатным.
У функции может быть один или несколько параметров произвольного типа. После каждого параметра может располагаться необязательное ключевое слово КАК и имя, которое будет назначено колонке таблицы значений.
ТаблицаЗначений(Различные Номенклатура, ХарактеристикаНоменклатуры КАК Характеристика)
ГРУППОВАЯОБРАБОТКА (GROUPPROCESSING)
Функция возвращает объект ДанныеГрупповойОбработкиКомпоновкиДанных(DataCompositionGroupProcessingData), который имеет следующие свойства:
● Данные (Data). Тип – таблица значений. В это свойство функция помещает таблицу значений, содержащую результаты вычисления выражения, указанного в первом параметре функции для каждой групповой записи группировки. Если группировка иерархическая, то каждый уровень иерархии обрабатывается функцией отдельно, при этом значения для иерархических записей также помещаются в данные.
● ТекущийЭлемент (CurrentItem) – строка таблицы значений, являющихся текущими. При вызове для общего итога ТекущийЭлемент содержит значение Неопределено. В данное свойство функция помещает строку таблицы значений, для которой в настоящий момент вычисляется функция.
● ВременныеДанныеОбработки (ProcessingTempData) – структура, в которую могут быть помещены данные промежуточных результатов. Рекомендуется в различных функциях давать свойствам уникальные имена, т. к. возможна ситуация, когда один и тот же объект ДанныеГрупповойОбоработкиКомпоновкиДанных будет передан в несколько различных функций.
Функция имеет следующие параметры:
● Выражения – строка, в которой через запятую перечислены выражения, которые нужно вычислить. После каждого выражения возможно наличие необязательного ключевого слова КАК и имени колонки результирующей таблицы значений.
● ВыраженияИерархии – выражения, которые нужно вычислить для иерархических записей. Аналогично параметру Выражения с тем отличием, что параметр Выражения используется для неиерархических записей, а параметр ВыраженияИерархии используется для иерархических записей. Если параметр не указан, то для вычисления значений для иерархических записей используются выражения, указанные в параметре Выражение.
● ИмяГруппировки – имя группировки, в которой нужно вычислять группировку обработки. Тип Строка. Если не указано, то вычисление происходит в текущей группировке. Если вычисление идет в таблице и параметр содержит пустую строку или не указан, то значение вычисляется для группировки-строки. Компоновщик макета при генерации макета компоновки данных заменяет данное имя именем группировки в результирующем макете. Если группировка недоступна, то функция будет заменена на значение NULL.
ГрупповаяОбработка("Сумма(СуммаОборот)")
СВЕРНУТЬ (GROUPBY)
Функция предназначена для удаления дубликатов из массива. Возвращает массив или таблицу значений, в которой отсутствуют дублирующиеся элементы.
Параметры:
● Массив или таблица значений;
● номера или имена колонок таблицы значений, среди которых нужно искать дубликаты. По умолчанию все колонки (через запятую).
ПОЛУЧИТЬЧАСТЬ(GETPART)
Функция возвращает таблицу значений, содержащую определенные колонки из исходной таблицы значений.
Параметры:
● таблица значений, из которой нужно получить колонки;
● номера или имена колонок, которые нужно получить, разделенные запятой.
Возвращаемое значение: таблица значений, включающая только колонки, которые указаны в параметре Номера/имена колонок.
УПОРЯДОЧИТЬ(ORDER)
Предназначена для упорядочивания элементов массива.
Параметры:
● Массив или ТаблицаЗначений;
● номер или имя колонки таблицы значений, по которой нужно упорядочить. Для массива номер можно не указывать. Направление упорядочивания Необходимость автоупорядочивания. Убыв/Возр + Автоупорядочивание.
Возвращаемое значение: массив или таблица значений с упорядоченными элементами.
СОЕДИНИТЬСТРОКИ (JOINSTRINGS)
Агрегатная функция, позволяющая объединять строки в одну строку.
Параметры:
● Значения, которые нужно объединить в одну строку. Если является массивом, то в строку будут объединяться элементы массива. Если является таблицей значений, то в строку будут объединяться все колонки и строки таблицы.
● Разделитель элементов. Строка, содержащая текст, который нужно использовать в качестве разделителя между элементами массива и строками таблицы значений. По умолчанию символ перевода строк.
● Разделители колонок. Строка, содержащая текст, который нужно использовать в качестве разделителя между колонками таблицы значений. По умолчанию «;».
Каждый (Every)
Если хоть одна запись имеет значение Ложь, то функция возвращает Ложь. Иначе – Истина.
Синтаксис:
Каждый(Выражение)
Параметр:
Выражение – тип Булево.
Пример:
Каждый()
Любой (Any)
Если хоть одна запись имеет значение Истина, то результат – Истина. Иначе – Ложь.
Синтаксис:
Любой(Выражение)
Параметр:
Выражение – тип Булево.
Пример:
Любой()
СтандартноеОтклонениеГенеральнойСовокупности (Stddev_Pop)
Вычисляет стандартное отклонение совокупности. Используется формула: SQRT(ДисперсияГенеральнойСовокупности(X))
Синтаксис: СтандартноеОтклонениеГенеральнойСовокупности(Выражение)
Параметр:
Выражение – тип Число.
Тип возвращаемого значения – Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ ДисперсияВыборки(Y, X) ИЗ Таблица
Результат:
805.694444
СтандартноеОтклонениеВыборки (Stddev_Samp)
Функция вычисляет совокупное типовое стандартное отклонение. Используется формула: SQRT(ДисперсияВыборки(X))
Синтаксис:
СтандартноеОтклонениеВыборки(Выражение)
Параметр:
Выражение – тип Число.
Тип возвращаемого значения – Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ СтандартноеОтклонениеВыборки(Y) ИЗ Таблица
Результат:
28.3847573
ДисперсияВыборки (Var_Samp)
Функция вычисляет типовое различие ряда чисел без учета значений NULL в этом наборе. Используется формула: (Сумма(X^2) - Сумма(X)^2 / Количество(X)) / (Количество(X) - 1).
Если Количество(X) = 1, то возвращается значение NULL.
Синтаксис:
ДисперсияВыборки(Выражение)
Параметр:
Выражение – тип Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ ДисперсияВыборки(Y, X) ИЗ Таблица
Результат:
805.694444
ДисперсияГенеральнойСовокупности (Var_Pop)
Функция вычисляет различие совокупности ряда чисел без учета значений NULL в этом наборе. Используется формула: (Сумма(X ^2) - Сумма(X)^2 / Количество(X)) / Количество``(X).
Синтаксис:
ДисперсияГенеральнойСовокупности(Выражение)
Параметр:
Выражение – тип Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ ДисперсияГенеральнойСовокупности(Y, X) ИЗ Таблица
Результат:
716.17284
КовариацияГенеральнойСовокупности (Covar_Pop)
Вычисляет ковариацию ряда числовых пар. Используется формула: (Сумма(Y * X) - Сумма(X) * Сумма(Y) / n) / n, где nчисло пар (Y, X), в которых ни Y ни X не являются NULL.
Синтаксис:
КовариацияГенеральнойСовокупности(Y, X)
Параметры:
● Y – тип Число;
● X – тип Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ КовариацияГенеральнойСовокупности(Y, X) ИЗ Таблица
Результат:
59.4444444
КовариацияВыборки (Covar_Samp)
Вычисляет типовое различие ряда чисел без учета значений NULL в этом наборе. Используется формула: (Сумма(Y * X) - Сумма(Y) * Сумма(X) / n) / (n-1), где n число пар (Y, X) в которых ни Y, ни X не являются NULL.
Синтаксис:
КовариацияВыборки(Y, X)
Параметры:
● Y – тип Число;
● X – тип Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ КовариацияВыборки(Y, X) ИЗ Таблица
Результат:
66.875
Корреляция (Corr)
Функция вычисляет коэффициент корреляции ряда числовых пар. Используется формула: КовариацияГенеральнойСовокупности(Y, X) / (СтандартноеОтклонениеГенеральнойСовокупности(Y) * СтандартноеОтклонениеГенеральнойСовокупности(X)). Не учитываются пары, в которых Y или X – NULL.
Синтаксис:
Корреляция(Y, X)
Параметры:
● Y – тип Число;
● X – тип Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ Корреляция(X, Y) ИЗ Таблица
Результат:
0.860296149
РегрессияНаклон (Regr_Slope)
Функция вычисляет наклон линии. Используется формула: КовариацияГенеральнойСовокупности(Y, X) / ДисперсияГенеральнойСовокупности(X). Вычисляется без учета пар, содержащих NULL.
Синтаксис:
РегрессияНаклон(Y, X)
Параметры:
● Y – тип Число;
● X – тип Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ РегрессияНаклон(Y, X) ИЗ Таблица
Результат:
8.91666667
РегрессияОтрезок (Regr_Intercept)
Функция вычисляет Y-точку пересечения линии регресса. Используется формула: Среднее(Y) - РегрессияНаклон(Y, X) * Среднее(X). При вычислении не учитываются пары, содержащие NULL.
Синтаксис:
РегрессияОтрезок(Y, X)
Параметры:
● Y – тип Число;
● X – тип Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ РегрессияОтрезок(Y, X) ИЗ Таблица
Результат:
-20.361111
РегрессияКоличество (Regr_Count)
Вычисляет количество пар, не содержащих NULL.
Синтаксис:
РегрессияКоличество(Y, X)
Параметры:
● Y – тип Число;
● X – тип Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ РегрессияКоличество(Y, X) ИЗ Таблица
Результат:
9
РегрессияR2 (Regr_R2)
Вычисляет коэффициент детерминации. Вычисляется без учета пар, содержащих NULL.
Синтаксис:
РегрессияR2(Y, X)
Параметры:
● Y – тип Число;
● X – тип Число.
Возвращаемое значение:
NULL – если ДисперсияГенеральнойСовокупности(X)=0; 1 – если ДисперсияГенеральнойСовокупности(Y)=0 и ДисперсияГенеральнойСовокупности(X)<>0; POW(Корреляция(Y,X),2) – если ДисперсияГенеральнойСовокупности(Y)>0 и ДисперсияГенеральнойСовокупности(X)<>0.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ РегрессияR2(Y, X) ИЗ Таблица
Результат:
0.740109464
РегрессияСреднееX (Regr_AvgX)
Вычисляет среднее число Y после исключения X и Y пар, где или X, или Y являются пустыми. Среднее (X) вычисляется без учета пар, содержащих NULL.
Синтаксис:
РегрессияСреднееX(Y, X)
Параметры:
● Y – тип Число;
● X – тип Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ РегрессияСреднееX(Y, X) ИЗ Таблица
Результат:
5
РегрессияСреднееY (Regr_AvgY)
Функция вычисляет среднее число X после исключения X и Y пар, где или X, или Y являются пустыми. Среднее (Y) вычисляется без учета пар, содержащих NULL.
Синтаксис:
РегрессияСреднееY (Y, X)
Параметры:
● Y – тип Число;
● X```– тип Число`.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ РегрессияСреднееY(Y, X) ИЗ Таблица
Результат:
24.2222222
РегрессияSXX (Regr_SXX)
Функция возвращает сумму квадратов независимых выражений, используемых в линейной модели регресса. Функция может использоваться, чтобы оценить статистическую обоснованность модели регресса.
Значение вычисляется по формуле: РегрессияКоличество(Y, X) * ДисперсияГенеральнойСовокупности(X). При этом пары, содержащие NULL, не учитываются.
Синтаксис:
РегрессияSXX (Y, X)
Параметры:
● Y – тип Число;
● X – тип Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ РегрессияSXX(Y, X) ИЗ Таблица
Результат:
60
РегрессияSYY (Regr_SYY)
Функция вычисляет значение по формуле: РегрессияКоличество(Y, X) * ДисперсияГенеральнойСовокупности(Y).
Значение вычисляется без учета пар, содержащих NULL.
Синтаксис:
РегрессияSYY (Y, X)
Параметры:
● Y – тип Число;
● X – тип Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ РегрессияSYY(Y, X) ИЗ Таблица
Результат:
6445.55556
РегрессияSXY (Regr_SXY)
Функция вычисляет значение по формуле: РегрессияКоличество(Y, X) * КовариацияГенеральнойСовокупности(Y, X). Вычисляется без учета пар, содержащих NULL.
Синтаксис:
РегрессияSXY (Y, X)
Параметры:
● Y – тип Число;
● X – тип Число.
Пример:
|
X |
Y |
|
1 |
7 |
|
2 |
1 |
|
3 |
2 |
|
4 |
5 |
|
5 |
7 |
|
6 |
34 |
|
7 |
32 |
|
8 |
43 |
|
9 |
87 |
ВЫБРАТЬ РегрессияSXY(Y, X) ИЗ Таблица
Результат:
535
МестоВПорядке (Rank)
Синтаксис:
МестоВПорядке(Порядок, ПорядокИерархии, ИмяГруппировки)
Параметры:
● Порядок – тип Строка. Содержит выражения, в последовательности которых нужно расположить групповые записи, разделенные через запятую. Направление упорядочивания управляется при помощи слов Возр, Убыв. После поля также можно указать строку Автоупорядочивание, что обозначает, что при упорядочивании ссылок нужно использовать поля упорядочивания, определенные для объекта, на который ссылка. Если последовательность не указана, то значение рассчитывается в последовательности группировки;
● ПорядокИерархии – тип Строка. Содержит выражения упорядочивания для иерархических записей;
● ИмяГруппировки – тип Строка. Имя группировки, в которой нужно вычислить функцию.. Если не указано, то вычисление происходит в текущей группировке. Если вычисление идет в таблице и параметр содержит пустую строку или не указан, то значение вычисляется для группировки-строки. Компоновщик макета при генерации макета компоновки данных заменяет данное имя на имя группировки в результирующем макете. Если группировка не доступна, то функция будет заменена на значение NULL.
Пример:
МестоВПорядке("[Количество Оборот]")
КлассификацияABC (ClassificationABC)
Функция возвращает номер класса, начиная с 1, который соответствует классу А.
Синтаксис:
КлассификацияABC(Значение, КоличествоГрупп, ПроцентыДляГрупп, ИмяГруппировки)
Параметры:
● Значение – тип Строка. Указывает выражение, для которого следует рассчитывать классификацию;
● КоличествоГрупп – тип Число. Задает количество групп, на которое нужно разбить набор значений;
● ПроцентыДляГрупп – тип Число. Объем, в %, каждой группы разбиения, кроме последней группы. Перечисляются в строке через запятую.
● ИмяГруппировки– тип Строка. Имя группировки, в которой нужно вычислять группировку обработки. Если не указано, то вычисление происходит в текущей группировке. Если вычисление выполняется в таблице и параметр содержит пустую строку или не указан, то значение вычисляется для группировки-строки. Данное имя будет заменено на имя группировки в результирующем макете. Если группировка не доступна, то функция будет заменена на значение NULL.
Пример:
КлассификацияABC(СуммаОборот, 3, "15, 25")
1.6. Другие операции
Операция «ВЫБОР»
Операция ВЫБОР предназначена для осуществления выбора одного из нескольких значений при выполнении некоторых условий.
ВЫБОР Когда Сумма > 1000 Тогда Сумма Иначе 0 Конец
Правила сравнения двух значений
Если типы сравниваемых значений отличаются друг от друга, то отношения между значениями определяются на основании приоритета типов:
● NULL (самый низший),
● Булево,
● Число,
● Дата,
● Строка,
● ссылочные типы.
Отношения между различными ссылочными типами определяются на основе ссылочных номеров таблиц, соответствующих тому или иному типу.
Если типы данных совпадают, то производится сравнение значений по следующим правилам:
● у типа Булево значение ИСТИНА больше значения ЛОЖЬ;
● у типа Число обычные правила сравнения для чисел;
● у типа Дата более ранние даты меньше более поздних;
● у типа Строка строки сравниваются в соответствии с установленными национальными особенностями базы данных;
● ссылочные типы сравниваются на основе своих значений (номера записи и т. п.).
Работа со значением NULL
Любая операция, в которой значение одного из операндов NULL, будет давать результат NULL.
Есть исключения:
● операция И будет возвращать NULL только в случае, если ни один из операндов не имеет значения Ложь;
● операция ИЛИ будет возвращать NULL только в случае, если ни один из операндов не имеет значение Истина.
Приоритеты операций
Операции имеют следующие приоритеты (первая строка имеет низший приоритет):
● ИЛИ;
● И;
● НЕ;
● В, ЕСТЬ NULL, ЕСТЬ НЕ NULL;
● =, <>, <=, <, >=, >;
● Бинарный +, Бинарный –;
●``*, /, %;
● Унарный +, Унарный –.
1.7. Функции
1.7.1. Работа с выражениями
ВЫЧИСЛИТЬ (EVAL)
Функция ВЫЧИСЛИТЬ предназначена для вычисления выражения в контексте некоторой группировки. Функция используется для совместимости с предыдущими версиями платформы. Вместо неё рекомендуется использовать функцию ВычислитьВыражение.
Функция имеет следующие параметры:
● Выражение– строка, содержащая вычисляемое выражение.
● Группировка– строка, содержащая имя группировки, в контексте которой необходимо вычислить выражение. Если в качестве имени группировки используется пустая строка, вычисление будет выполнено в контексте текущей группировки. Если в качестве имени группировки будет использована строка ОбщийИтог, вычисление будет выполнено в контексте общего итога. В остальных случаях вычисление будет выполняться в контексте родительской группировки с таким именем.
● Тип расчета – строка, содержащая тип расчета. Если данный параметр имеет значение ОбщийИтог, выражение будет вычисляться для всех записей группировки. Если значение параметра – Группировка, значения будут вычисляться для текущей групповой записи группировки.
СУММА(Продажи.СуммаОборот) / ВЫЧИСЛИТЬ("Сумма(Продажи.СуммаОборот)", "ОбщийИтог")
В данном примере в результате получится отношение суммы по полю Продажи.СуммаОборот записи группировки к сумме того же поля во всей компоновке.
ВЫЧИСЛИТЬВЫРАЖЕНИЕ (EVALEXPRESSION)
Функция возвращает выражение для записи указанной группировки. Имеет следующие параметры:
● Вычисляемое выражение. Строка, содержащая выражение, которое требуется вычислить.
● Группировка. Строка, содержащая имя группировки, в которой требуется вычислить выражение. Если в качестве имени группировки используется пустая строка, то вычисление будет выполнено для текущей группировки. Если указана строка ОбщийИтог, то вычисление будет выполнено для общего итога. Если в параметре указано имя группировки-строки, то при вычислении в таблице вычисление будет выполнено для группировки, полученной на пересечении требуемой области вычисления (см. описание третьего параметра) и текущей строки группировки колонки. Если в параметре указано имя группировки-колонки, то вычисление выполняется для группировки, полученной на пересечении области вычисления группировки-колонки и текущей записи группировки-строки.
● Область вычисления. Строка, содержащая область вычисления. Если параметр не указан, вычисление будет выполнено для текущей записи группировки, указанной в первом параметре. Параметр может принимать следующие значения:
● ОбщийИтог – выражение будет вычисляться для всех записей группировки.
● Иерархия – выражение будет вычисляться для родительской иерархической записи, если таковая имеется, и для всей группировки, если родительской иерархической записи не имеется.
● Группировка‑ выражение будет вычисляться для текущей групповой записи группировки.
● ГруппировкаНеРесурса – при вычислении функции для групповой записи по ресурсам выражение будет вычислено для первой групповой записи исходной группировки.
При вычислении функции ВычислитьВыражение со значением ГруппировкаНеРесурса для групповых записей, не являющихся группировками по ресурсам, функция вычисляется так же, как бы она вычислялась со значением параметра Группировка.
Компоновщик макета компоновки данных при генерации макета компоновки данных, при выводе в макет поля-ресурса, по которому выполняется группировка, выдает в макет выражение, вычисляемое при помощи функции ВычислитьВыражение с указанным параметром ГруппировкаНеРесурса. Для остальных ресурсов в группировке по ресурсу выдаются обычные выражения ресурсов.
Компоновщик макета при генерации выражения для поля % в группе иерархии генерирует выражение, содержащее отношение выражения ресурса к функции ВычислитьВыражение для выражения ресурса, вычисляемого для текущей группировки с типом вычисления Иерархия.
● Начало. Указывает, с какой записи нужно начинать фрагмент, в котором рассчитывать агрегатные функции выражения и из какой записи получать значения полей вне агрегатных функций. Строка, содержащая одно из значений:
● Первая (First). Необходимо получать первую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от начала группировки. Получаемое значение должно быть целым числом больше нуля. Например, Первая(3) – получение третьей записи от начала группировки. Если первая запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3, а требуется получить Первая(4), то считается, что записей нет.
● Последняя (Last). Необходимо получить последнюю запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от конца группировки. Получаемое значение должно быть целым числом больше нуля. Например, Последняя(3) – получение третьей записи от конца группировки.
Если последняя запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3, а требуется получить Последняя(4), то считается, что записей нет.
● Предыдущая (Previous). Необходимо получить предыдущую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение назад от текущей записи группировки. Например, Предыдущая(2) – получение предыдущей от предыдущей записи.
Если предыдущая запись выходит за пределы группировки (например, для второй записи группировки требуется получить Предыдущая(3)), то получается первая запись группировки.
При получении предыдущей записи для итога по группировке получается первая запись.
● Следующая (Next). Необходимо получить следующую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение вперед от текущей записи группировки. Например, Следующая(2) – получение следующей от следующей записи.
Если следующая запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3 и для третьей записи получают Следующая, то считается, что записей нет.
При получении следующей записи для итога по группировке считается, что записи нет.
● Текущая (Current). Необходимо получить текущую запись.
При получении для итога по группировке получается первая запись.
● ОграничивающееЗначение (BoundaryValue). Необходимость получить запись по указанному значению. После слова ОграничивающееЗначение в скобках нужно указать выражение, со значения которого нужно начинать фрагмент, первого поля упорядочивания.
В качестве записи будет получаться первая запись, значение поля упорядочивания у которой больше или равно указанному значению. Например, если в качестве поля упорядочивания используется поле Период, оно имеет значения 01.01.2010, 01.02.2010, 01.03.2010 и требуется получить ОграничивающееЗначение(ДатаВремя(2010, 1, 15)), то будет получена запись с датой 01.02.2010.
● Конец. Указывает, до какой записи нужно продолжать фрагмент, в котором рассчитывать агрегатное выражение. Строка, содержащая одно из значений:
● Первая (First). Необходимо получать первую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от начала группировки. Получаемое значение должно быть целым числом больше нуля. Например, Первая(3) – получение третьей записи от начала группировки.
Если первая запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3, а требуется получить Первая(4), то считается, что записей нет.
● Последняя (Last). Необходимо получить последнюю запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение от конца группировки. Получаемое значение должно быть целым числом больше нуля. Например, Последняя(3) – получение третьей записи от конца группировки.
Если последняя запись выходит за пределы группировки, то считается, что записей нет. Например, если записей 3, а требуется получить Последняя(4), то считается, что записей нет.
● Предыдущая (Previous). Необходимо получить предыдущую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение назад от текущей записи группировки. Например, Предыдущая(2) – получение предыдущей от предыдущей записи.
Если предыдущая запись выходит за пределы группировки (например, для второй записи группировки требуется получить Предыдущая(3)), то считается, что записей нет.
При получении предыдущей записи для итога по группировке считается последняя запись.
● Следующая (Next). Необходимо получить следующую запись группировки. После слова в скобках можно указывать выражение, результат которого будет использоваться как смещение вперед от текущей записи группировки. Например, Следующая(2) – получение следующей от следующей записи.
Если следующая запись выходит за пределы группировки, получается последняя запись. Например, если записей 3 и для третьей записи получают Следующая, то получается третья запись.
При получении следующей записи для итога по группировке считается, что записи нет.
● Текущая (Current). Необходимо получить текущую запись.
При получении для итога по группировке получается первая запись.
● ОграничивающееЗначение (BoundaryValue). Необходимость получить запись по указанному значению. После слова ОграничивающееЗначение в скобках следует указать выражение, со значения которого нужно начинать фрагмент, первого поля упорядочивания.
В качестве записи будет получаться последняя запись, значение поля упорядочивания у которой меньше или равно указанному значению. Например, если в качестве поля упорядочивания используется поле Период, оно имеет значения 01.01.2010, 01.02.2010, 01.03.2010, требуется получить ОграничивающееЗначение(ДатаВремя(2010, 1, 15)), то будет получена запись с датой 01.01.2010.
● Сортировка. Строка, в которой перечисляются выражения, разделенные запятыми, в направлении которых нужно упорядочивать последовательность. Если не указана, то упорядочивание выполняется так же, как и у группировки, для которой вычисляется выражение. После каждого выражения можно указать ключевое слово Возр для упорядочивания по возрастанию, Убыв для упорядочивания по убывания, Автоупорядочивание для упорядочивания ссылочных полей по полям, по которым нужно упорядочивать объект, на который выполняется ссылка. Слово Автоупорядочивание может использоваться как со словом Возр, так и со словом Убыв.
● ИерархическаяСортировка. Строка, в которой перечисляются выражения, разделенные запятыми, в направлении которых нужно упорядочивать последовательность. Применяется для упорядочивания иерархических записей. Если не указано, то упорядочивание будет выполнено в соответствии с упорядочиванием, указанным в параметре Сортировка.
● ОбработкаОдинаковыхЗначенийПорядка. Строка, содержащая одно из значений:
● Вместе (Together) обозначает, что предыдущая и следующие записи определяются на основании значений выражений упорядочивания.
● Отдельно (Separately) обозначает, что для определения предыдущей и следующей записей используется последовательность упорядоченных записей.
Например, если полученная последовательность упорядочена по дате:
- 01 января 2001 Иванов М. 10
- 02 января 2001 Петров С. 20
- 02 января 2001 Сидоров Р. 30
- 03 января 2001 Петров С. 40
При использовании в обработке одинаковых значений порядка Отдельно предыдущей к записи 3 будет запись 2, а при использовании Вместе – запись 1. А фрагментом для текущей записи к записи 2 для Отдельно будет запись 2, а для Вместе – записи 2 и 3. Таким образом, сумма по текущей записи для Отдельно составит 20, а для Вместе – 50.
При указанном Вместе в параметрах Начало и Конец нельзя указывать смещение для позиций Первая, Последняя, Предыдущая, Следующая.
По умолчанию Отдельно.
Пример использования параметров
Если требуется рассчитать сумму с накоплением, то можно использовать следующее выражение:
ВычислитьВыражение("Сумма(СуммаОборот)", , , "Первая", "Текущая")
Если требуется получить значение группировки в предыдущей строке, то можно использовать следующее выражение:
ВычислитьВыражение("Курс", , , "Предыдущая")
Функция ВычислитьВыражение учитывает отбор группировок, но не учитывает иерархические отборы.
Функция ВычислитьВыражение не может применяться к группировке в групповом отборе этой группировки. Например, в отборе группировки Номенклатура нельзя использовать выражение ВычислитьВыражение("Сумма(СуммаОборот)", , "ОбщийИтог") > 1000. Но такое выражение можно использовать в иерархическом отборе.
Если конечная запись предшествует начальной, то считается, что записи для расчета детальных данных и расчета агрегатных функций отсутствуют.
При расчете интервальных выражений для общего итога (второй параметр функции ВычислитьВыражение имеет значение "ОбщийИтог") считается, что записи для расчета детальных данных и расчета агрегатных функций отсутствуют.
ВЫЧИСЛИТЬВЫРАЖЕНИЕСГРУППИРОВКОЙМАССИВ (EvalExpressionWithGroupArray)
Функция возвращает массив, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю.
Синтаксис:
ВычислитьВыражениеСГруппировкойМассив (Выражение, ВыраженияПолейГруппировки, ОтборЗаписей, ОтборГруппировок)
Параметры:
● Выражение – тип Строка.Выражение, которое нужно вычислить. Например, Сумма(СуммаОборот);
● ВыраженияПолейГруппировки – выражения полей группировки, перечисленные через запятую. Например, "Контрагент, Партия";
●``ОтборЗаписей –выражение, применяемое к детальным записям. Например, ПометкаУдаления = Ложь. Если в данном параметре используется агрегатная функция, то при выполнении компоновки данных возникнет ошибка;
● ОтборЗаписей –отбор, применяемый к групповым записям. Например: Сумма(СуммаОборот) > &Параметр1.
Пример:
Максимум(ВычислитьВыражениеСГруппировкойМассив ("Сумма(СуммаОборот)", "Контрагент"));
Компоновщик макета при генерации макета преобразовывает параметры функции в термины полей макета компоновки данных. Например, поле Контрагент будет конвертировано в НаборДанных.Контрагент.
Компоновщик макета при генерации выражений для вывода пользовательского поля, в выражении которого присутствует только функция ВычислитьМассивСГруппировкой генерирует выводимое выражение таким образом, чтобы данные выводить представления и данные были упорядочены.
Например, для пользовательского поля с выражением:
ВычислитьВыражениеСГруппировкойМассив("Сумма(СуммаОборот)", "Контрагент")
компоновщик макета сгенерирует для вывода следующее выражение:
СоединитьСтроки(Массив(Упорядочить(ВычислитьВыражениеСГруппировкойТаблицаЗначений ("Представление(Сумма(НаборДанных.СуммаОборот)), Сумма(НаборДанных.СуммаОборот)", "НаборДанных.Контрагент"), "2")))
ВЫЧИСЛИТЬВЫРАЖЕНИЕСГРУППИРОВКОЙТАБЛИЦАЗНАЧЕНИЙ(EvalExpressionWithGroupValueTable)
Функция возвращает таблицу значений, каждый элемент которого содержит результат вычисления выражения для группировки по указанному полю.
Синтаксис:
ВычислитьВыражениеСГруппировкойТаблицаЗначений (Выражение, ВыраженияПолейГруппировки, ОтборЗаписей, ОтборГруппировок)
Параметры:
● Выражение – тип Строка; выражение, которое нужно вычислить. В строке может быть перечислено несколько выражений через запятую. После каждого выражения может быть необязательное ключевое слово КАК и имя колонки таблицы значений. Например: Контрагент, Сумма(СуммаОборот) Как ОбъемПродаж;
● ВыраженияПолейГруппировки – выражения полей группировки, перечисленные через запятую. Например, Контрагент, Партия;
● ОтборЗаписей – выражение, применяемое к детальным записям. Например, ПометкаУдаления = Ложь. Если в данном параметре используется агрегатная функция, то при выполнении компоновки данных возникнет ошибка;
●``ОтборГруппировок – отбор, применяемый к групповым записям. Например: Сумма(СуммаОборот) > &Параметр1.
Пример:
ВычислитьВыражениеСГруппировкойТаблицаЗначений ("Контрагент КАК Контрагент, Сумма(СуммаОборот) Как ОбъемПродаж", "Контрагент")
Результатом работы данной функции будет таблица значений с колонками Контрагент и ОбъемПродаж, в которых будут находиться контрагенты с их объемами продаж.
Компоновщик макета при генерации макета преобразовывает параметры функции в термины полей макета компоновки данных. Например, поле Контрагент будет конвертировано в НаборДанных.Контрагент.
Например, для пользовательского поля с выражением:
ВычислитьВыражениеСГруппировкойТаблицаЗначений ("Контрагент, Сумма(СуммаОборот)", "Контрагент")
Компоновщик макета сгенерирует для вывода следующее выражение:
СоединитьСтроки(ПолучитьЧасть(Упорядочить(ВычислитьВыражениеСГруппировкойТаблицаЗначений ("НаборДанных.Контрагент, НаборДанных.КонтрагентПредставление, Сумма(НаборДанных.СуммаОборот), Представление(НаборДанных.СуммаОборот), НаборДанных.ПолеУпорядочивание", "НаборДанных.Контрагент"), "5, 1, 3"), "2, 4"))
1.7.2. Работа с датами и временем
ГОД (YEAR)
Данная функция предназначена для выделения года из значения типа Дата. Единственный параметр – это выражение, имеющее тип Дата.
ГОД(РасхНакл.Дата)
ДЕНЬ (DAY)
Данная функция предназначена для получения дня месяца из значения типа Дата. День месяца в норме находится в диапазоне от 1 до 31. Единственный параметр функции – это выражение, имеющее тип Дата.
ДЕНЬ(РасхНакл.Дата)
ДЕНЬГОДА (DAYOFYEAR)
Данная функция предназначена для получения дня года из значения типа Дата. День года в норме находится в диапазоне от 1 до 365 (366). Единственный параметр функции – это выражение, имеющее тип Дата.
ДЕНЬГОДА(РасхНакл.Дата)
ДЕНЬНЕДЕЛИ (WEEKDAY)
Данная функция предназначена для получения дня недели из значения типа Дата. День недели в норме находится в диапазоне от 1 (понедельник) до 7 (воскресенье). Единственный параметр функции – это выражение, имеющее тип Дата.
ДЕНЬНЕДЕЛИ(РасхНакл.Дата)
ДОБАВИТЬКДАТЕ (DATEADD)
Функция предназначена для прибавления к дате некоторой величины. Параметры:
● Выражение типа Дата;
● Тип увеличения – строка, содержащая одно из значений:
● Секунда,
● Минута,
● Час,
● День,
● Неделя,
● Месяц,
● Квартал,
● Год,
● Декада– к исходной дате будет добавлено или вычтено количество дней, умноженное на 10,
● Полугодие.
● Величина – на сколько необходимо увеличить дату. Тип Число. Дробная часть игнорируется.
ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(2009, 10, 12, 10, 15, 34), "Месяц", 1)
Результат:
12.11.2009 10:15:34
КВАРТАЛ (QUARTER)
Данная функция предназначена для выделения номера квартала из значения типа Дата. Номер квартала в норме находится в диапазоне от 1 до 4. Единственный параметр функции – это выражение, имеющее тип Дата.
КВАРТАЛ(РасхНакл.Дата)
КОНЕЦПЕРИОДА (ENDOFPERIOD)
Функция предназначена для выделения определенной даты из заданной даты.
Параметры:
● Выражениетипа```Дата`;
● Тип периода – строка, содержащая одно из значений:
● Минута,
● Час,
● День,
● Неделя,
● Месяц,
● Квартал,
● Год,
● Декада,
● Полугодие.
КОНЕЦПЕРИОДА(ДАТАВРЕМЯ(2009, 10, 12, 10, 15, 34), "Неделя")
Результат:
13.10.2009 23:59:59.
МЕСЯЦ (MONTH)
Данная функция предназначена для выделения номера месяца из значения типа Дата. Номер месяца в норме находится в диапазоне от 1 до 12. Единственный параметр функции – это выражение, имеющее тип Дата.
МЕСЯЦ(РасхНакл.Дата)
МИНУТА (MINUTE)
Данная функция предназначена для получения минуты часа из значения типа Дата. Минута часа находится в диапазоне от 0 до 59. Единственный параметр функции – это выражение, имеющее тип Дата.
МИНУТА(РасхНакл.Дата)
НАЧАЛОПЕРИОДА (BEGINOFPERIOD)
Функция предназначена для выделения определенной даты из заданной даты.
Параметры:
● Выражениетипа```Дата`;
● Тип периода– строка, содержащая одно из значений:
● Минута,
● Час,
● День,
● Неделя,
● Месяц,
● Квартал,
● Год,
● Декада,
● Полугодие.
НАЧАЛОПЕРИОДА(ДАТАВРЕМЯ(2009, 10, 12, 10, 15, 34), "Месяц")
Результат:
01.10.2009 0:00:00
НЕДЕЛЯ (WEEK)
Данная функция предназначена для получения номера недели года из значения типа Дата. Недели года нумеруются, начиная с 1. Единственный параметр функции – это выражение, имеющее тип Дата.
РАЗНОСТЬДАТ (DATEDIFF)
Функция предназначена для получения разницы между двумя датами. Параметры:
● Выражение типа Дата;
● Выражение типа Дата;
● Тип разности – одно из значений:
● Секунда,
● Минута,
● Час,
● День,
● Месяц,
● Квартал,
● Год.
РАЗНОСТЬДАТ(ДАТАВРЕМЯ(2009, 10, 12, 10, 15, 34), ДАТАВРЕМЯ(2009, 10, 14, 9, 18, 06), "День")
Результат:
2
ТЕКУЩАЯДАТА (CURRENTDATE)
Возвращает системную дату. При компоновке макета компоновки во всех выражениях, которые присутствуют в компоновке, функция ТЕКУЩАЯДАТА заменяется значением текущей даты.
ТЕКУЩАЯДАТА()
СЕКУНДА (SECOND)
Данная функция предназначена для получения секунды минуты из значения типа Дата. Секунда минуты находится в диапазоне от 0 до 59. Единственный параметр функции – это выражение, имеющее тип Дата.
СЕКУНДА(РасхНакл.Дата)
ЧАС (HOUR)
Данная функция предназначена для получения часа суток из значения типа Дата. Час суток находится в диапазоне от 0 до 23. Единственный параметр функции – это выражение, имеющее тип Дата.
ЧАС(РасхНакл.Дата)
1.7.3. Положение записи
НОМЕРПОПОРЯДКУ (SERIALNUMBER)
Получить следующий порядковый номер.
НОМЕРПОПОРЯДКУ()
НОМЕРПОПОРЯДКУВГРУППИРОВКЕ (GROUPSERIALNUMBER)
Возвращает следующий порядковый номер в текущей группировке.
НОМЕРПОПОРЯДКУВГРУППИРОВКЕ()
УРОВЕНЬ (LEVEL)
Функция предназначена для получения текущего уровня записи.
УРОВЕНЬ()
УРОВЕНЬВГРУППИРОВКЕ (LEVELINGROUP)
Функция предназначена для получения уровня записи относительно корня группировки.
УРОВЕНЬВГРУППИРОВКЕ()
1.7.4. Представление значения
ЗНАЧЕНИЕЗАПОЛНЕНО (VALUEISFILLED)
Возвращает Истину, если значение отлично от значения данного типа по умолчанию, отлично от значения NULL, отлично от пустой ссылки, отлично от значения Неопределено. Для логических значений осуществляется проверка на значение NULL. Для строк осуществляется проверка на отсутствие непробельных символов.
ФОРМАТ (FORMAT)
Получить отформатированную строку переданного значения. Форматная строка задается в соответствии с форматной строкой «1С:Предприятия».
Параметры:
● Значение,
● Форматная строка.
ФОРМАТ(РасходныеНакладные.СуммаДок, "ЧДЦ=2")
1.7.5. Работа с числами
ACos
Вычисляет арккосинус в радианах.
Синтаксис:
ACos(Выражение)
Параметр:
Выражение – тип Число. Значение косинуса (в диапазоне -1 ... 1), по которому определяется угол.
ASin
Вычисляет арксинус в радианах.
Синтаксис:
ASin(Выражение)
Параметр:
Выражение – тип Число. Аргумент функции. Определен в диапазоне -1 ... 1.
ATan
Вычисляет арктангенс в радианах.
Синтаксис:
ATan(Выражение)
Параметр:
Выражение – тип Число. Аргумент функции.
Cos
Вычисляет косинус.
Синтаксис:
Cos(Выражение).
Параметр:
Выражение – тип Число. Задается в радианах.
Exp
Возведение числа e в степень.
Синтаксис:
Exp(Выражение)
Параметр:
Выражение – тип Число. Значение степени.
Log
Вычисляет натуральный логарифм.
Синтаксис:
Log(Выражение)
Параметр:
Выражение – тип Число. Исходное число, больше 0.
Log10
Вычисляет логарифм X по основанию 10.
Синтаксис:
Log10(Выражение)
Параметр:
Выражение – тип Число. Исходное число, больше 0.
Pow
Возведение в степень.
Синтаксис:
Pow(Основание, Показатель)
Параметры:
● Основание – тип Число. Основание операции возведения в степень.
● Показатель – тип Число. Показатель степени.
Sin
Вычисляет синус.
Синтаксис:
Sin(Выражение)
Параметр:
Выражение – тип Число. Задается в радианах.
Sqrt
Вычисляет квадратный корень.
Синтаксис:
Sqrt(Выражение)
Параметр:
Выражение – тип Число. Неотрицательное число.
Tan
Вычисляет тангенс.
Синтаксис:
Tan(Выражение)
Параметр:
Выражение – тип Число. Аргумент функции.
Окр (Round)
Округляет исходное число до требуемой разрядности. Режим округления стандартный (1,5 как 2).
Синтаксис:
Окр(Выражение, Разрядность)
Параметры:
Выражение – тип Число. Исходное число. Разрядность – тип Число. Число знаков дробной части, до которых производится округление.
Цел (Int)
Отсекает дробную часть числа.
Синтаксис:
Цел(Выражение)
Параметр:
Выражение – тип Число. Дробное число.
1.7.6. Работа со строками
Врег(Upper)
Данная функция преобразует все символы строки в верхний регистр.
Синтаксис:
ВРег(<Строка>)
Параметр:
Строка – тип Строка. Исходная строка.
ДЛИНАСТРОКИ (STRINGLENGTH)
Функция предназначена для определения длины строки. Параметр – выражение строкового типа.
ДЛИНАСТРОКИ(Контрагенты.Адрес)
Лев (Left)
Данная функция выбирает первые слева символы строки.
Синтаксис:
Лев(<Строка>,<ЧислоСимволов>)
Параметры:
Строка – тип Строка. Исходная строка.
ЧислоСимволов - тип Число. Количество выбираемых символов. Отрицательные значения считаются нулем. Если в исходной строке меньше символов, чем в параметре, то возвращается исходная строка.
Возвращаемое значение:
Тип Строка. Строка выбранных символов.
НРег (Lower)
Данная функция преобразует все символы строки в нижний регистр.
Синтаксис:
НРег(<Строка>)
Параметр:
Строка – тип Строка. Исходная строка.
НСтр (NStr)
Получает строку на языке текущего пользователя или указанном языке из набора строк на разных языках конфигурации.
Синтаксис:
НСтр(<ИсходнаяСтрока>,<КодЯзыка>)
Параметр:
Строка – тип Строка. Строки на разных языках, разделенные символом ";" (точка с запятой). Строка на одном языке состоит из кода языка, указанного в метаданных, символа "=" (равно) и собственно строки текста на данном языке в одинарных кавычках, двойных кавычках или без кавычек (когда указывается только один язык);
КодЯзыка – тип Строка. Код языка, на котором нужно получить строку. Если значение не указано, то строка будет выдаваться на языке, определенного для текущего пользователя.
Возвращаемое значение:
Тип Строка. Строка, соответствующая указанному языку или языку текущего пользователя.
ПОДСТРОКА (SUBSTRING)
Данная функция предназначена для выделения подстроки из строки. Параметры:
● выражение, имеющее строковый тип. Если в качестве первого параметра фигурирует строка, то результатом функции будет строка (возможно, нулевой длины). Если в качестве первого параметра будет использовано значение NULL, то результатом функции также будет значение NULL. Другие значения считаются недопустимыми и вызывают состояние ошибки;
● позиция символа, с которого начинается выделяемая из строки подстрока;
● длина выделяемой подстроки.
ПОДСТРОКА(Контрагенты.Адрес, 1, 4)
Прав (Right)
Данная функция выбирает первые справа символы строки.
Синтаксис:
Прав(<Строка>,<ЧислоСимволов>)
Параметры:
Строка – тип Строка. Исходная строка.
ЧислоСимволов - тип Число. Количество выбираемых символов. Отрицательные значения считаются нулем. Если в исходной строке меньше символов, чем в параметре, то возвращается исходная строка.
Возвращаемое значение:
Тип Строка. Строка выбранных символов.
СОКРЛ (TrimL)
Данная функция отсекает незначащие символы, стоящие слева от первого значащего символа в строке.
Синтаксис:
СокрЛ(<Строка>)
Параметры:
Строка – тип Строка. Исходная строка.
Возвращаемое значение:
Тип Строка. Строка, полученная в результате отсечения пробелов.
СОКРЛП(TrimAll)
Данная функция отсекает незначащие символы, стоящие слева от первого значащего символа в строке, и пробелы, стоящие справа от последнего значащего символа в строке.
Синтаксис:
СокрЛП(<Строка>)
Параметры:
Строка – тип Строка. Исходная строка.
Возвращаемое значение:
Тип Строка. Строка, полученная в результате отсечения пробелов.
СОКРП (TrimR)
Данная функция отсекает незначащие символы, стоящие справа от последнего значащего символа в строке.
Синтаксис:
СокрП(<Строка>)
Параметры:
Строка – тип Строка. Исходная строка.
Возвращаемое значение:
Тип Строка. Строка, полученная в результате отсечения пробелов.
СтрЗаменить (StrReplace)
Данная функция находит в исходной строке все вхождения подстроки поиска и заменяет ее на подстроку замены.
Синтаксис:
СтрЗаменить(<Строка>,<ПодстрокаПоиска>,<ПодстрокаЗамены>)
Параметры:
Строка – тип Строка. Исходная строка.
ПодстрокаПоиска –
ПодстрокаЗамены
Возвращаемое значение:
Тип Строка. Строка, полученная в результате замены.
Если второй параметр – константа, то длина строки равна:
`<Строка>
- (<Строка> / <ПодстрокаПоиска> с округлением в большую сторону) *
(<ПодстрокаЗамены> - <ПодстрокаПоиска>)
, но не меньше чем длина<Строка>`.
Если второй параметр не константа, то длина строки равна длине `<Строка>
- <ПодстрокаЗамены>`.
Если полученная длина больше 1024, то получается строка неограниченной длины.
СтрНайти (StrFind)
Данная функция находит первое вхождение искомой строки как подстроки в исходной строке. Поиск выполняется без учета регистра.
Синтаксис:
СтрНайти(<Строка>, <ПодстрокаПоиска>)
Параметры:
Строка – тип Строка. Исходная строка.
ПодстрокаПоиска – тип Строка. Искомая подстрока.
Возвращаемое значение:
Тип Число (длина – 12). Найденная позиция, начиная с 1. Если возвращает 0, то строка не найдена.
1.7.7. Прочие функции
ВЫРАЗИТЬ (CAST)
Данная функция предназначена для выделения типа из выражения, которое может содержать составной тип. Если выражение будет содержать тип, отличный от требуемого, будет возвращено значение NULL.
Синтаксис:
Выразить(Выражение, УказаниеТипа)
Параметры:
● Выражение- преобразуемое выражение;
● УказаниеТипа – строка, содержащая строку типа. Например, Число, Строка и т. п. Кроме примитивных типов данная строка может содержать имя таблицы. В таком случае будет осуществлена попытка выразить к ссылке на указанную таблицу.
ВЫРАЗИТЬ(Данные.Реквизит1, "Число(10,3)")
ЕСТЬNULL (ISNULL)
Данная функция возвращает значение второго параметра, если значение первого параметра – NULL. В противном случае будет возвращено значение первого параметра.
Синтаксис:
ЕстьNull(Выражение1, Выражение2)
Параметры:
Выражение1 – проверяемое значение;
Выражение2 – возвращаемое значение, если значение Выражение1 есть NULL.
ЕСТЬNULL(Сумма(Продажи.СуммаОборот), 0)
Представление (Presentation)
Данная функция возвращает строковое представление переданного значения не примитивного типа. Для значений примитивного типа возвращает само значение.
Если в качестве параметра используется массив или таблица значений, то функция возвращает строку, содержащую строковые представление всех элементов массива, разделенных символами ";". Если у какого либо элемента строковое представление пустое, то вместо его представления выводится строка <Пустое значение".
Пример:
Представление(Контрагент)
ПОЛУЧИТЬНАВИГАЦИОННУЮССЫЛКУ (GetURL)
Данная функция получает навигационную ссылку в формате «1С:Предприятия» на объект информационной базы, на его реквизит, или на обсуждение системы взаимодействия.
Примечание. Выполняет обращение к серверу только при получении ссылки на реквизит. При получении ссылки на объект информационной базы или обсуждение системы взаимодействия запрос на сервер не выполняется.
Синтаксис:
ПолучитьНавигационнуюСсылку(Объект, ИмяРеквизита, Индекс)
Параметры:
Объект – Обязательный. Тип Любая ссылка, РегистрСведенийКлючЗаписи.<Имя регистра сведений>, ИдентификаторОбсужденияСистемыВзаимодействия, ОбсуждениеСистемыВзаимодействия. В качестве значения данного параметра могут быть указаны:
● Ссылка на объект информационной базы,
● Ключ записи регистра сведений,
● Идентификатор обсуждения системы взаимодействия,
● Обсуждение системы взаимодействия.
Если в данном параметре передано значение, от которого нельзя получить навигационную ссылку, будет сгенерировано исключение о неверном значении параметра;
ИмяРеквизита - тип Строка. Если требуется получить навигационную ссылку на реквизит объекта, то в данном параметре следует указать имя реквизита. Если требуется получить ссылку на ключ записи регистра сведений, то данный параметр должен содержать имя ресурса регистра сведений.
Если требуется получить ссылку на реквизит табличной части, то он указывается через точку "." после имени табличной части, и в параметре <Индекс> следует указать индекс строки табличной части;
Индекс - тип Число. Индекс строки в табличной части, если требуется получить навигационную ссылку на реквизит табличной части.
Первая строка имеет индекс, равный 0.
Пример:
// Адрес объекта Адрес1 = ПолучитьНавигационнуюСсылку(Объект.Ссылка); // Адрес реквизита объекта Адрес2 = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "Реквизит1"); // Адрес реквизита табличной части объекта Адрес3 = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ТабличнаяЧасть1.Реквизит1", 10);
ТипЗначения(ValueType)
Возвращает значение типа Тип, содержащее тип значения параметра функции.
Синтаксис:
ТипЗначения(Выражение)
Параметр:
Выражение – тип Строка. Строковое значение типа.
УникальныйИдентификатор (UUID)
Возвращает уникальный идентификатор переданной ссылки.
Синтаксис:
УникальныйИдентификатор(Выражение)
Параметры:
Выражение ‑ выражение, результатом вычисления которого является ссылочное значение (кроме ссылки на таблицы внешних источников данных).
Возвращаемое значение:
Зависит от значения параметра функции:
● NULL – NULL.
● Неопределено – пустой уникальный идентификатор (типа УникальныйИдентификатор).
● Для значения с типом ссылки – значение типа УникальныйИдентификатор.
● Для других типов (включая входящие в составной тип) – формируется ошибка времени выполнения.