Язык запросов 1С 8.3 для начинающих программистов: функции для работы со строками
Автор уроков и преподаватель школы: Владимир Милькин
Функции для работы со строками в запросе
Прямо скажем механизмов для работы со строками в запросах 1С мало. Во-первых, строки можно складывать. Во-вторых, от строки можно взять подстроку. Во-третьих, строки можно сравнивать, в том числе по шаблону. Вот пожалуй и всё, что можно делать со строками. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.
Когда мы говорим строка в запросе, то имеется в виду либо строковая константа:
ВЫБРАТЬ
"Жизнь прекрасна!" |
либо реквизит таблицы, у которого тип СТРОКА:
ВЫБРАТЬ
Наименование
ИЗ
Справочник.Еда |
Сложение строк
Для сложения используется операция +
ВЫБРАТЬ "Еда: " + Наименование ИЗ Справочник.Еда |
Функция ПОДСТРОКА
Данная функция предназначена для выделения подстроки из строки.
В качестве параметров принимает:
- строку, из которой необходимо выделить подстроку;
- позицию символа, с которого начинается выделяемая из строки подстрока;
- длину выделяемой подстроки.
ВЫБРАТЬ ПОДСТРОКА("1234567890", 1, 5) |
ВЫБРАТЬ ПОДСТРОКА("1234567890", 3, 4) |
ВЫБРАТЬ Наименование, ПОДСТРОКА(Наименование, 1, 2) ИЗ Справочник.Еда |
Функция ПОДОБНО
Если нужно убедиться, что строковый реквизит соответствует определённым критериям мы его сравниваем. Например, так:
ВЫБРАТЬ Наименование ИЗ Справочник.Еда ГДЕ Наименование = "Лимон" |
А что, если нужно более хитрое сравнение? Не просто на равенство или неравенство, а на подобие определенному шаблону? Вот как раз для этого и создана функция ПОДОБНО.
Если быть совсем точным, то это даже не функция, а оператор, который позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа.
Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ.
Давайте уже рассмотрим пример, чтобы ситуация прояснилась:
ВЫБРАТЬ Наименование ИЗ Справочник.Еда ГДЕ Наименование ПОДОБНО "[К]%" |
Результатом выполнения данного запроса будет вся еда, наименование которой начинается на букву "К":
Думаю вы догадались, что здесь вся "хитрость" сосредоточена в строке шаблона "[К]%". Буква "К" в квадратных скобках в данном случае означает, что первым символом наименования должна быть буква "К". Знак "%", идущий следом означает, что после буквы "К" могут идти (или не идти) любые символы в любом количестве. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.
Конечно, я всё это не из головы придумал. При формировании строки шаблона есть определенные правила, которые нужно соблюдать:
- % означает любое количество произвольных символов
- _ означает один произвольный символ
- [] означает любой одиночный символ, перечисленный внутри скобок
- [^] означает любой одиночный символ, кроме тех, что перечислены внутри скобок после ^
Примеры шаблонов с пояснениями:
"%" абсолютно любая строка (в том числе пустая):
"___" строка из трёх символов (любых):
"[ЧЛ]%[ЫН]" строка, начинающаяся с буквы Ч или Л и оканчивающаяся на Ы или Н:
"[^К]%" строка, не содержащая в начале букву К:
"[А-К]%" строка, начинающаяся с буквы из диапазона с А по К:
Обратите внимание на приём, использованный в шаблоне "[А-К]%". Вместо того, чтобы перечислять все буквы от А до К, например так "[АБВГДЕЁЖЗИЙК]%" мы указали диапазон значений через дефис. Квадратные скобки это позволяют делать.