К статьям

Работа со строками в языке запросов

6 мин


Описание

Существует несколько видов взаимодействия со строками в языке запросов 1С: конкатенация, выбор подстроки и сравнение.

Конкатенация

Конкатенация строк в языке запросов реализована с помощью оператора "+".
Пример:

ВЫБРАТЬ

    "а" + "б" // Результат "аб"

или например сложим две строки, только одну получим из таблицы БД

ВЫБРАТЬ

    "Товар: " + Номеклатура.Наименование  КАК Наименование

Из Справочник.Номенклатура КАК Номеклатура

В результате получим все наименования из справочника Номенклатура, к которым вначале добавилась строка "Товар: ". Например "Товар: Coca-Cola".

или например сложим две строки, только одну строку получим выражением ПРАВ()

ВЫБРАТЬ

     "Товар: " + Выразить(Прав(Номеклатура.Код,1) как строка(1))  КАК Наименование

Из Справочник.Номенклатура КАК Номеклатура

В результате получим сумму строки "Товар: " с последним символом кода номенклатуры.  Например "Товар: 1".

Функции работы со строками

ПОДСТРОКА() 

Функция для работы со строками ПОДСТРОКА позволяет выделить часть строки, указанной длины из исходной строки, начиная с указанной позиции.

Синтаксис функции ПОДСТРОКА:
ПОДСТРОКА(<Строка>, <НачальнаяПозиция>, <Длина>).
Строка - Исходная строка, последовательность символов, слово.
Начальная позиция - Номер первого символа части строки, которую хотим получить в результате. Следует учитывать, что нумерация символов в строке начинается с 1, так же можно использовать и числа меньше 1 для указания начальной позиции, но все они в результате работы функции будут приведены к 1.
Длина - Количество символов после начальной позиции, которые должны попасть в результат.
Пример:

ВЫБРАТЬ

    ПОДСТРОКА("Привет, мир!", 9, 3) // Результат "мир"

В этом примере мы видим строку "Привет, мир!". Если подсчитать количество символов в ней, то мы можем убедиться что их 12

В функцию ПОДСТРОКА первым параметром мы передали наше строковое значение, вторым параметром указали номер символа - 9, с которого хотим начать часть строки, а третьим параметром указали сколько символов после начала так же должно попасть в результирующую подстроку - 3. В результате выполнения функции платформа вернет нам подстроку "мир". 

Строка()

Функция преобразует в строку значения примитивных типов. При попытке преобразования в строку значения не примитивного типа будет выдана ошибка выполнения запроса. Так же при применении к значению NULL, в результате так же будет NULL.
В качестве примера преобразуем к строке число 42

ВЫБРАТЬ

    СТРОКА(42) // Результат строка "42"

ДлинаСтроки()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция ДлинаСтроки возвращает количество символов в переданной строке в качестве значения.

Пример:

ВЫБРАТЬ

    ДлинаСтроки("Привет, мир!") // Результат 12

СокрЛ()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция СокрЛ удаляет незначащие символы, которые находятся слева от первого значащего символа в переданном строковом значении. Под незначащими символами понимаются пробелы(обычный, неразрывный), символы табуляции, перевода каретки и т.д.
Пример, в исходной строке есть пробельные символы вначале:

ВЫБРАТЬ

    СокрЛ("   Привет, мир!") // Результат "Привет, мир!"

СокрП()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция СокрП удаляет незначащие символы, которые находятся справа от первого значащего символа в переданном строковом значении. Под незначащими символами понимаются пробелы(обычный, неразрывный), символы табуляции, перевода каретки и т.д.
Пример, в исходной строке есть пробельные символы в конце:

ВЫБРАТЬ

    СокрП("Привет, мир!     ") // Результат "Привет, мир!"

СокрЛП()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция объединяет в себе две другие функции СокрЛ и СокрП, и удаляет незначащие символы стоящие перед первым значащим символом в строке и незначащие символы стоящие после последнего значащего символа в строке. Под незначащими символами понимаются пробелы(обычный, неразрывный), символы табуляции, перевода каретки и т.д.

Пример: в этой строке есть лишние пробелы вначале, середине и в конце. Пробелы слева и справа удалились, но в середине остались.

ВЫБРАТЬ

    СокрЛП("   Привет,   мир!    ") // Результат "Привет,   мир!"

Лев()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция позволяет получить часть символов из строки, находящихся слева, по переданному количеству символов. 

Синтаксис
Лев (Значение, ЧислоСимволов)

Пример, получим 6 символов с начала строки: 

ВЫБРАТЬ

    Лев("Привет, мир!", 6) // Результат "Привет"

Прав()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция позволяет получить часть символов из строки, находящихся справа, по переданному количеству символов. 

Синтаксис
Прав(Значение, ЧислоСимволов)

Пример, получим 4 символа с конца строки:

 ВЫБРАТЬ

    Прав("Привет, мир!", 4) // Результат "мир!"

СтрНайти()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция производит поиск в строке и возвращает номер первого символа найденного вхождение искомой строки. Регистр при поиске не учитывается. Если ничего не найдено, то в результате вернется 0

Синтаксис

СтрНайти(СтроковоеЗначение, ИскомаяСтрока)

Пример:

ВЫБРАТЬ

    СтрНайти("125435", "3"), // Результат "5"

    СтрНайти("125435", "6") // Результат "0"

ВРег()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция приводит все буквы содержащиеся в переданной строке в верхний регистр

Пример:

ВЫБРАТЬ

    ВРег("Привет, мир!") // Результат "ПРИВЕТ, МИР!"

НРег()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция приводит все буквы содержащиеся в переданной строке в нижний регистр

Пример:

ВЫБРАТЬ

    НРег("Привет, мир!") // Результат "привет, мир!"

СтрЗаменить()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция находит в переданном строковом значении все вхождения искомой строки и заменяет их на строку замены. Регистр не учитывается.
Синтаксис

СтрЗаменить(Строка, ПодстрокаПоиска, ПодстрокаЗамены)
 

Пример, заменим все буквы "р", на буквы "л":

ВЫБРАТЬ

    СтрЗаменить("Привет, мир!", "р", "л") // Результат "Пливет, мил!"

Сравнение строк

Сравнение строк может производится с помощью оператора "=". При сравнении регистр не учитывается.

Пример, сравним две строки:

ВЫБРАТЬ

    "Привет" = "привет" // Результат Истина

Оператор ПОДОБНО 

Предназначен для сравнения строковых выражений с заданным шаблоном. Результатом такой проверки будет «Ложь» или «Истина». Отличие от оператора "=" заключается в возможности использования спецсимволов. Шаблон оператора ПОДОБНО задается с помощью специальных символов:
%(процент) - символ или последовательность символов, имеющая любое количество произвольных символов
_(подчеркивание) - один произвольный символ
[ ] (квадратные скобки) - позволяют указать один или несколько символов, один из которых может содержаться в искомой строке
СПЕЦСИМВОЛ - Позволяет использовать один из перечисленных спецсимволов, в качестве обычного символа, если такой символ имеется в строке. 

Оператор ПОДОБНО можно использовать:

  • В полях выборки, как на примере выше
  • В условии ГДЕ
  • В конструкции ВЫБОР КОГДА

Синтаксис
<Строковое выражение> ПОДОБНО <"Шаблон">

Пример, определим, что переданное значение является почтовым адресом для хостинга mail.ru, в данной строке первым символом идет нижнее подчеркивание, и потому нам пришлось использовать СПЕЦСИМВОЛ, для того, чтобы иметь возможность описать нашу строку с помощью шаблона: 

ВЫБРАТЬ

    "_test@mail.ru" Подобно "\_%@mail.ru" СПЕЦСИМВОЛ "\" // Результат Истина

Пример, найдем все элементы справочника Номенклатура, содержащие слово "Фрукт" в названии: 

ВЫБРАТЬ

    Номенклатура.Ссылка КАК Товар

Из Справочник.Номенклатура КАК Номенклатура         

ГДЕ Номенклатура.Наименование ПОДОБНО "%фрукт%"

Результатом будет набор элементов:

Товар
Фруктово-ореховая смесь
Фруктовый сок

 

Задачи на эту тему: