[Alimir_BootModal_Login]

Язык запросов 1С 8.3 для начинающих программистов: функции для работы со строками

Автор уроков и преподаватель школы: Владимир Милькин

Функции для работы со строками в запросе

Прямо скажем механизмов для работы со строками в запросах 1С мало. Во-первых, строки можно складывать. Во-вторых, от строки можно взять подстроку. Во-третьих, строки можно сравнивать, в том числе по шаблону. Вот пожалуй и всё, что можно делать со строками. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.

Когда мы говорим строка в запросе, то имеется в виду либо строковая константа:

ВЫБРАТЬ
    "Жизнь прекрасна!"

либо реквизит таблицы, у которого тип СТРОКА:

ВЫБРАТЬ
    Наименование
ИЗ
    Справочник.Еда

Сложение строк

Для сложения используется операция +

ВЫБРАТЬ
    "Еда: " + Наименование
ИЗ
    Справочник.Еда

04

Функция ПОДСТРОКА

Данная функция предназначена для выделения подстроки из строки.

В качестве параметров принимает:

  • строку, из которой необходимо выделить подстроку;
  • позицию символа, с которого начинается выделяемая из строки подстрока;
  • длину  выделяемой подстроки.
ВЫБРАТЬ
    ПОДСТРОКА("1234567890", 1, 5)

02

ВЫБРАТЬ
    ПОДСТРОКА("1234567890", 3, 4)

03

ВЫБРАТЬ
    Наименование,
    ПОДСТРОКА(Наименование, 1, 2)
ИЗ
    Справочник.Еда

04

Функция ПОДОБНО

Если нужно убедиться, что строковый реквизит соответствует определённым критериям мы его сравниваем. Например, так:

ВЫБРАТЬ
    Наименование
ИЗ
    Справочник.Еда
ГДЕ
    Наименование = "Лимон"

05

А что, если нужно более хитрое сравнение? Не просто на равенство или неравенство, а на подобие определенному шаблону? Вот как раз для этого и создана функция ПОДОБНО.

Если быть совсем точным, то это даже не функция, а оператор, который позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа.

Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ.

Давайте уже рассмотрим пример, чтобы ситуация прояснилась:

ВЫБРАТЬ
    Наименование
ИЗ
    Справочник.Еда
ГДЕ
    Наименование ПОДОБНО "[К]%"

Результатом выполнения данного запроса будет вся еда, наименование которой начинается на букву "К":

06

Думаю вы догадались, что здесь вся "хитрость" сосредоточена в строке шаблона "[К]%". Буква "К" в квадратных скобках в данном случае означает, что первым символом наименования должна быть буква "К". Знак "%", идущий следом означает, что после буквы "К" могут идти (или не идти) любые символы в любом количестве. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.

Конечно, я всё это не из головы придумал. При формировании строки шаблона есть определенные правила, которые нужно соблюдать:

  • % означает любое количество произвольных символов
  • _ означает один произвольный символ
  • [] означает любой одиночный символ, перечисленный внутри скобок
  • [^] означает любой одиночный символ, кроме тех, что перечислены внутри скобок после ^

Примеры шаблонов с пояснениями:

"%" абсолютно любая строка (в том числе пустая):

07

"___" строка из трёх символов (любых):

08

"[ЧЛ]%[ЫН]" строка, начинающаяся с буквы Ч или Л и оканчивающаяся на Ы или Н:

09

"[^К]%" строка, не содержащая в начале букву К:

10

"[А-К]%" строка, начинающаяся с буквы из диапазона с А по К:

11

Обратите внимание на приём, использованный в шаблоне "[А-К]%". Вместо того, чтобы перечислять все буквы от А до К, например так "[АБВГДЕЁЖЗИЙК]%" мы указали диапазон значений через дефис. Квадратные скобки это позволяют делать.

Пройдите тест

Начать тест

Домашнее задание

а) Напишите запрос, который выводит все заказы клиентов (таблица Документ.ЗаказКлиента) и первые три буквы имени клиента в каждом заказе:

12

Эталонное решение. Сначала пишем код сами, проверяем на компьютере (как и все примеры программ из уроков), только потом сверяемся

б) Напишите запрос, который получает цвета (таблица Справочник.Цвета), в названии которых присутствует сочетание букв "ра":

13

Эталонное решение. Сначала пишем код сами, проверяем на компьютере (как и все примеры программ из уроков), только потом сверяемся