Новые функции языка запросов и системы компоновки данных
Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле 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!'»).
- КодЯзыка (необязательный) – строка с кодом языка, на котором нужно получать строку. Если не указан — строка получается на языке текущего пользователя.
Сокрлп 1с функция что делает
« Как стать программистом 1С » Язык 1С » 1С СокрЛП, 1С СокрЛ, 1С СокрП – удаление лишних символов
1С СокрЛП, 1С СокрЛ, 1С СокрП – удаление лишних символов
Функции 1С СокрЛП(Строка), 1С СокрЛ(Строка) и 1С СокрП(Строка) удаляют из текста лишние символы.
- Выполняем
СокрЛП(»
| Привет, мир!
| «) - 1С возвращает «Привет, мир!»
- 1С СокрЛ – с начала строки до «значащих символов»
- 1С СокрП – с последнего «значащего символа» до конца строки
- 1С СокрЛП – одновременно слева и справа.
«Лишние символы», которые можно убрать с помощью 1С СокрЛ, 1С СокрП, 1С СокрЛП:
- Пробел
- Перенос строки, страницы
- Табуляция.
Лишние пробелы внутри строки, между словами функции 1С СокрЛ, 1С СокрП, 1С СокрЛП не удаляют.
Строковые реквизиты, например справочнков, имеют обычно определенную длину, например возьмем 50 символов. При вводе пользователи может ввести лишние пробелы в конце, особенно если текст в поле не вводится вручную, а копируется из сторонней программы.
Если пользователь ввел значение с пробелом, то сравнение с заданной строкой не будет работать – ведь сравнение учитывает все символы, включая незначимые.
- Пользователь ввел: «РОССИЯ «
- Мы сравниваем: Если Страна = «РОССИЯ» //не сработает
- Чтобы сработало, пишем: Если СокрЛП(Страна) = «РОССИЯ» //сработает
1С СокрЛП() некоторые программисты используют при переводе чисел в строку, вместо Строка(). Дело в том, что числа форматируются при переводе по настройкам локализации с пробелами между разрядами: 22500 -> «22 500». Однако 1С СокрЛП() не убирает пробелы между словами. Вместо этого можно применять Формат():
Число = 22500;
ЧислоСтрокой = Формат(Число, «ЧГ=0»);
//ЧислоСтрокой будет равно «22500»Добавим в наш анализатор строки программы, позволяющие удалить незначащие символы как слева и справа, так и между словами (про анализатор текста см. выше «Функции работы со строками 1С»).
Только зарегистрированные пользователи VIP группы могут видеть этот контент.
Проголосовать за этот пост:
Функция СокрЛП()
Функция СокрЛП() удаляет пробельные символы в начале (до первого значащего символа) и в конце (после последнего значащего символа) исходной строки.
Примечание: К незначащим символам относятся символы:
- «пробел»,
- «неразрывный пробел» (НПП),
- «табуляция» (горизонтальная Таб и вертикальная ВТаб),
- «возврат каретки» (ВК),
- «перевод строки» (ПС),
- «перевод формы (страницы)» (ПФ).
Доступность
Версия Поддержка 8.1 Сервер, Клиент, Внешнее соединение 8.2 Сервер, Толстый клиент, Тонкий клиент, Веб-клиент, Внешнее соединение 8.3 Сервер, Толстый клиент, Тонкий клиент, Веб-клиент, Внешнее соединение, Мобильный автономный сервер, Мобильный клиент, Мобильное приложение Пример использования
Пример кода с использованием функции СокрЛП() :
ИсходнаяСтрока = " Строка с пробелами "; Сообщить("*" + СокрЛП(ИсходнаяСтрока) + "*"); //Результат: //*Строка с пробелами*
СокрЛП – удаляет незначительные символы справа и слева в строке [Функция 1С]
Удаляет незначащие символы слева начиная с первого значительного символа, и справа начиная с последнего значащего символа.
Синтаксис
Параметры
<ИсходнаяСтрока>— исходная строка. [строка]ИсходнаяСтрока>
Возвращаемое значение:
Строка с удаленными незначительными символами слева и справа. [строка]
Прочее
Доступность (для версии 8.2):
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединениеПример
// Присвоили текст с пробелами слева и справа Текст = " Иванов Иван Иванович " Текст = СокрЛП(Текст); Сообщить (Текст); // В результате получим "Иванов Иван Иванович"