Заметки из Зазеркалья

16.12.2020

Новые функции языка запросов и системы компоновки данных

Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.

Реализовано в версии 8.3.20.1549

Когда мы пишем запросы и создаем отчёты, нередко бывает нужно не просто показать данные в том виде, в котором они лежат в БД, а произвести над ними какие-то операции. Например, посчитать разницу между двумя датами или округлить число до нужной разрядности. Хорошо, если нужная функция есть в языке запросов (или в языке СКД) -  тогда мы можем сделать с данными то, что хотим, на уровне запроса / СКД, а потом просто отобразить результат. Если же нужная функция в языке запросов не реализована – приходится делать постобработку запроса в языке 1С, проходясь в цикле по результатам запроса и выполняя нужные операции. Что приводит к разрастанию кода конфигурации и может снизить производительность.

К нам довольно часто обращаются разработчики с пожеланиями о добавлении дополнительных функций в язык запросов и язык СКД. Мы внимательно проанализировали пожелания и выделили список наиболее востребованных функций, которые планируем реализовать в версии 8.3.20.

Язык запросов

В язык запросов добавляются функции:

  • Строка(String) – преобразует значение в примитивного типа в строку с учетом национальных установок.

  • Тригонометрические функции Sin, Cos, Tan, ASin, ACos, ATan (все вычисления производятся в радианах)

  • Exp - вычисляет результат возведения основания натурального логарифма (числа e) в степень

  • Log - вычисляет натуральный логарифм числа.

  • Log10 - вычисляет десятичный логарифм числа.

  • Pow -  вычисляет возведение в степень.

  • Sqrt – вычисляет квадратный корень.

  • Окр(Round) - округляет исходное число до нужной разрядности

  • Цел(Int) - вычисляет целую часть переданного числа, полностью отсекая дробную часть.

  • ДлинаСтроки(StringLength) – вычисляет длину строки.

  • СокрЛ(TrimL) – отбрасывает незначащие пробелы слева.

  • СокрП(TrimR) – отбрасывает незначащие пробелы справа.

  • СокрЛП(TrimAll) – отбрасывает незначащие пробелы слева и справа.

  • Лев(Left) – получает первые слева символы строки.

  • Прав(Right) – получает первые справа символы строки.

  • СтрНайти(StrFind) – находит первую позицию подстроки в строке (без учета регистра).

  • ВРег(Upper) – преобразует все символы строки в верхний регистр.

  • НРег(Lower) – преобразует все символы строки в нижний регистр.

  • СтрЗаменить(StrReplace) – заменяет все вхождения подстроки на другую подстроку (без учета регистра).

  • РазмерХранимыхДанных(StoredDataSize) – возвращает размер данных в байтах, которые занимают данные параметра.

Система компоновки данных

В язык выражений системы компоновки данных добавлены новые функции:

  • СокрЛ(TrimL) – отбросить незначащие пробелы слева.

  • СокрП(TrimR) – отбросить незначащие пробелы справа.

  • СокрЛП(TrimAll) – отбросить незначащие пробелы слева и справа.

  • Лев(Left) – получить первые слева символы строки.

  • Прав(Right) – получить первые справа символы строки.

  • СтрНайти(StrFind) – найти подстроку в строке (без учета регистра).

  • ВРег(Upper) – преобразует все символы строки в верхний регистр.

  • НРег(Lower) – преобразует все символы строки в нижний регистр.

  • СтрЗаменить(StrReplace) – заменяет все вхождения подстроки на другую подстроку (без учета регистра).

  • НСтр(NStr) – получает строку на языке пользователя (аналогично тому, как работает метод НСтр глобального контекста). Параметры:

    • ИсходнаяСтрока – строка, содержащая строки на разных языках (например, "ru = 'Добрый вечер!'; en = 'Good Evening!'").

    • КодЯзыка (необязательный) – строка с кодом языка, на котором нужно получать строку. Если не указан - строка получается на языке текущего пользователя.

Теги: 8.3.20  запросы  разработка