1С символы: Специальные символы в 1С (ВК, ПС, НПП, ВТаб, ПС, ПФ, Таб) – работа со строками в 1С

Содержание

работа со строками в 1С

Внимание! Перед вами ознакомительная версия урока, материалы которого могут быть неполными.

Войдите на сайт как ученик

Войдите как ученик, чтобы получить доступ к материалам школы

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

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

Друзья, сегодня будет интереснейший урок. Мы научимся выполнять операции со строками (мы проходили их здесь).

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

И 1с в этом смысле не исключение. Я, как обычно, прошу вас повторять и проверять у себя весь код, который мы будем писать в этом уроке.

Откуда в программе появляются строки

Сам программист может закодировать определенное значение строки прямо в коде, используя двойные кавычки …

ИмяПеременной = "Привет, Мир!";

… и далее использовать его по своему усмотрению:

// Выводим значение строки пользователю в отдельном диалоге.
ОткрытьЗначение(ИмяПеременной);

Бывает и так, что значение строки должен ввести сам пользователь. Это делается при помощи команды ВвестиСтроку:

// Определим переменную с пустым значением строки.
ИмяПеременной = "";
 
// Попросим пользователя ввести новое значение строки.
ВвестиСтроку(ИмяПеременной);
 
// Сообщим пользователю его же строку.
ОткрытьЗначение(ИмяПеременной);

Из чего состоит строка

Любая строка состоит из символов.

К примеру, строка «привет» состоит из символов ‘п’, ‘р’, ‘и’, ‘в’, ‘е’, ‘т’.

К этим символам можно обращаться по их порядковому номеру. При этом нумерация символов в строке (в отличие от коллекций) начинается не с 0, а с 1.

Узнать общее количество символов в строке можно при помощи функции СтрДлина.  Она принимает на вход строку и возвращает нам число символов в этой строке.

Таким образом, цикл обхода строки будет таким:

ИмяПеременной = "привет";
 
Для НомерСимвола = 1 По СтрДлина(ИмяПеременной) Цикл
    Сообщить(НомерСимвола);
КонецЦикла;

Если мы запустим эту программу на компьютере, то увидим такой результат:

Мы научились получать номера символов в строке, но как получать сами символы?

За получение нужного символа (или даже группы символов) из строки отвечает функция Сред (сокращение от слов «средина», «средний»).

Она принимает три параметра:

  • Саму строку.
  • Номер символа в строке, который нужно получить.
  • Количество символов, которое нужно получить.

В нашем случае мы будем получать по одному символу, поэтому третий параметр у нас всегда будет равен 1.

Итак, перепишем наш код вот так:

ИмяПеременной = "привет";
 
Для НомерСимвола = 1 По СтрДлина(ИмяПеременной) Цикл
    Сообщить(Сред(ИмяПеременной, НомерСимвола, 1));
КонецЦикла;

Теперь вывод будет совсем другим:

Что представляет из себя символ

Мне иногда кажется, что всё в этом мире есть числа … :) И символы строки, кстати, не исключение.

И это на самом деле так, ведь каждому значению символа соответствует определенное число, его код.

Зачем вообще может понадобиться переводить символ в числовой код и обратно? Например, если мы захотим написать программу для шифрования и дешифрования текстов. А мы захотим и сделаем это в следующем модуле школы.

За перевод символа в числовой код отвечает функция КодСимвола. Она принимает строку и порядковый номер символа в ней, а возвращает числовой код этого символа.

Давайте выведем числовой код каждого символа нашей строки:

ИмяПеременной = "привет";
 
Для НомерСимвола = 1 По СтрДлина(ИмяПеременной) Цикл
    Сообщить(КодСимвола(ИмяПеременной, НомерСимвола));
КонецЦикла;

Запустим эту программу, вывод будет таким:

1087
1088
1080
1074
1077
1090

Получается, что, к примеру, символу ‘п’ соответствует числовой код 1087? Да, это действительно так. Проверим это.

Для этого я сообщу вам способ для обратного перевода: из числового кода в символ. За такой перевод отвечает функция Символ. Она принимает на вход числовой код, а возвращает символ.

Сообщить(Символ(1087)); // выведет п

Объединение строк

Давайте представим, что у нас есть две вот такие строки …

Строка1 = "Привет";
Строка2 = "Вова";

… и мы хотим сложить (ещё говорят «склеить», «объединить») эти строки вместе, чтобы за значением первой строки сразу следовало значение второй.

Это делается при помощи оператора плюс (+), вот так:

Строка1 = "Привет";
Строка2 = "Вова"; // используйте ваше имя, Вова - моё имя ;)
Строка3 = Строка1 + Строка2;

Выведем эту строку пользователю:

Сообщить(Строка3); // ПриветВова

Выглядит не очень, правда?

Давайте усложним задачу — требуется объединить эти строки, но между ними вставить пробел, а в конце добавить восклицательный знак.

Строка1 = "Привет";
Строка2 = "Вова";
Строка3 = Строка1 + " " + Строка2 + "!";
Сообщить(Строка3); // Привет Вова!

Вот так гораздо лучше! :)

Поиск в строке

Давайте рассмотрим такую интересную задачу. Попросим пользователя ввести любой текст, но чтобы в нём встречалось (или нет) слово «счастье».

А в ответ мы будем говорить пользователю в какой позиции в строке находится это слово.

К примеру, если пользователь введёт строку «высыпаться по утрам — счастье», то программа должна ему сказать, что слово «счастье» есть в строке и оно находится в позиции 23.

Будем писать программу по частям.

Сначала напишем ввод строки от пользователя:

Текст = "";
ВвестиСтроку(Текст);

За поиск в строке отвечает функция Найти.

На вход она принимает 2 параметра:

  • Строку, в которой надо искать.
  • Часть строки (её ещё называют «подстрока»), которую надо найти.

Функция возвращает 0, если вхождение не найдено и позицию в строке, если вхождение найдено. Функция ищет только первое вхождение подстроки в строку.

С учётом этого продолжим написание программы вот так:

ПозицияВхождения = Найти(Текст, "счастье");
Если ПозицияВхождения = 0 Тогда
    ОткрытьЗначение("Слово счастье в строке не найдено!");
Иначе
    ОткрытьЗначение("Слово счастье находится в " + ПозицияВхождения + " позиции!");
КонецЕсли;

Замена в строке

А давайте подшутим над пользователем? :)

Пусть он введёт строку со словом «счастье», а мы выведем его же строку, в которой заменим слово «счастье», например, на «удовольствие».

За замену одной части строки на другую отвечает функция СтрЗаменить.

На вход она принимает 3 параметра:

  • Строку, в которой нужно сделать замену.
  • Подстроку, которую надо найти и заменить.
  • Подстроку, на которую нужно заменить.

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

Итак, поехали:

Текст = "";
ВвестиСтроку(Текст);
НовыйТекст = СтрЗаменить(Текст, "счастье", "удовольствие");
ОткрытьЗначение(НовыйТекст);

Верхний и нижний регистры

А вы заметили, что один и тот же символ может иметь два варианта, например: ‘п’ и ‘П’. Первый вариант называется «нижний регистр», а второй — «верхний регистр».

И для компьютера это разные буквы. Мы можем легко в этом убедиться, если выведем числовые коды этих букв:

Сообщить(КодСимвола("п", 1)); // 1087
Сообщить(КодСимвола("П", 1)); // 1055

Именно поэтому для компьютера, к примеру, строка «привет» будет не равна строке «Привет»:

// Кстати, сравнение строк на равенство делается
// при помощи знака равно (точно также как с числами).
Сообщить("привет" = "Привет"); // нет

Компьютер при сравнении строк сравнивает числовой код каждого символа одной строки с соответствующим ему (по порядку) числовым кодом символа другой строки. И если есть хотя бы одно неравенство — строки считаются различными.

Но у нас есть замечательная возможность менять регистр строк: из верхнего в нижний и наоборот. За это отвечают функции

НРег (сокращение от «нижний регистр») и ВРег (сокращение от «верхний регистр»).

Текст = "оТпУсК";
Сообщить(НРег(Текст)); // отпуск
Сообщить(ВРег(Текст)); // ОТПУСК

Когда это может быть полезно? Вспомните задачу, когда мы заменяли слово «счастье» на «удовольствие».

Функция СтрЗаменить (как и Найти) ищет подстроку с учётом регистра. То есть если пользователь введет вместо «счастье», например, «Счастье», то программа не найдёт этого вхождения.

И чтобы поиск и замена не зависели от того в каком регистре ввёл строку пользователь, мы напишем вот так:

Текст = "";
ВвестиСтроку(Текст);
НовыйТекст = СтрЗаменить(НРег(Текст), "счастье", "удовольствие");
ОткрытьЗначение(НовыйТекст);

Теперь, даже если пользователь введёт «Любимая работа — это СЧАСТЬЕ!» программа сможет найти слово «счастье» и вывести пользователю «любимая работа — это удовольствие!».

Подведём итоги

Мы рассмотрели основные операции над строками, но на самом деле их больше.

Некоторые из них вы можете изучить вместе с примерами в справочнике по языку 1с.

Но наиболее полный перечень представлен в синтакс-помощнике:

:)

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

а) Введите от пользователя строку. Посчитайте сколько раз в этой строке встречается пробел и скажите об этом пользователю.

Строковые функции в 1С

В 1С:Предприятии есть множество встроенных функций для работы со строками. Весь набор методов для работы со строками доступен в самых новых версиях платформы. В старых платформах некоторые методы могут не поддерживаться.

В 1С нет строгой типизации переменных. Типизация переменных означает, что при определении переменной указывается её тип и она может содержать данные только этого типа. Такой синтаксис используется при программировании на C# или С++. В 1С программировании нет типизации, поэтому в одну и туже переменную можно записать как строку так и число или данное любого другого типа.

Переменная = "произвольная строка";
//ИЛИ
Переменная = 123;

Перебор символов строки

Текст = "";
Для НомерСимвола = 1 По СтрДлина(Текст) Цикл
Символ = Сред(Текст, НомерСимвола, 1);
КонецЦикла;

Соединение строк


Переменная = "Строка1" + "Строка2"; 

Определить длину строки


ДлинаСтроки = СтрДлина("Строка");
//ДлинаСтроки = 6;

Удаление незначащих символов
Отсекает символы «Пробел», «Неразрывный пробел (НПП)», «Горизонтальная табулция (Таб)», «Вертикальная табуляция (ВТаб)», «Возврат коретки (ВК)», «Перевод строки (ПС)».

//Удаление незначащих символов слева
Результат = СокрЛ(" Строка");
//Результат = "Строка";

//Удаление незначащих символов справа
Результат = СокрП("Строка ");
//Результат = "Строка";

//Удаление незначащих символов и слева и справа
Результат = СокрЛП(" Строка ");
//Результат = "Строка";

Выбрать слева 2 символа

ПодСтрока = Лев("Строка", 2);
//ПодСтрока = "Ст";

Выбрать справа 2 символа

ПодСтрока = Прав("Строка", 2);
//ПодСтрока = "ка";

Выбрать 2 символа начиная с третьего


ПодСтрока = Сред("Строка", 3, 2);
//ПодСтрока = "ок";

Найти подстроку

ПозицияПервогоСимволаПодстроки = СтрНайти("Строка", "ок");
//ПозицияПервогоСимволаПодстроки = 4;

Все символы строки в верхний регистр

Строка = ВРег("Строка");
//Строка = "СТРОКА";

Все символы строки в нижний регистр

Строка = НРег("Строка");
//Строка = "строка";

Первый символ каждого слова в верхний регистр

Строка = ТРег("строка новая строка");
//Строка = "Строка Новая Строка";

Получить код (Unicode) символа

Код = КодСимвола("Q");
//Код = 81;

Получить символ по коду (Unicode)

Символ = Символ(81);
//Символ = "Q";

Проверка строки на пустоту

Пустая = ПустаяСтрока("");
//Пустая = Истина;

Замена подстроки в строке

Строка = СтрЗаменить("Строка111", "111", "222");
//Строка = "Строка222";

Подсчет количества строк в многострочной строке

ЧислоСтрок = СтрЧислоСтрок("Строка1" + Символы.СП + "Строка2");
//ЧислоСтрок = 2;

Получить подстроку многострочной строки по номеру

Подстрока = СтрПолучитьСтроку("Строка1" + Символы.СП + "Строка2", 2);
//Подстрока = "Строка2";

Число вхождений подстроки в строку

ЧислоВхождений = СтрЧислоВхождений("Новая строка", "а");
//ЧислоВхождений = 2;

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

//Первая строка меньше второй
Сравнение = СтрСравнить("Строка", "Новая строка");
//Сравнение = -1;

//Первая строка больше второй
Сравнение = СтрСравнить("Новая строка", "Строка");
//Сравнение = 1;

//Строки равны
Сравнение = СтрСравнить("Строка", "Строка");
//Сравнение = 0;

Проверка что строка начинается с указанной подстроки

НачинаетсяС = СтрНачинаетсяС("Новая строка", "Новая");
//НачинаетсяС = Истина;

Проверка что строка заканчивается указанной подстрокой

ЗаканчиваетсяНа = СтрЗаканчиваетсяНа("Новая строка", "строка");
//ЗаканчиваетсяНа = Истина;

Разделение строки на подстроки по разделителю

МассивПодстрок = СтрРазделить("Новая строка", " ");
//МассивПодстрок[0] = "Новая";
//МассивПодстрок[1] = "строка";

Соединить массив строк в одну

МассивПодстрок = Новый Массив;
МассивПодстрок[0] = "Новая";
МассивПодстрок[1] = "строка";
Строка = СтрСоединить(МассивПодстрок, " ");
//Строка = "Новая строка";

Функция КодСимвола() в 1с 8 позвволяет получить код символа

Позволяет получить код символа

Синтаксис

Функция КодСимвола() имеет следующий синтаксис:

Число КодСимвола(ИсходнаяСтрока, [НомерСимвола = 1])

А также альтернативный англоязычный синтаксис:

number CharCode(SourceString, [Position = 1])

Параметры

Описание параметров функции КодСимвола():

Имя параметраТипОписание
ИсходнаяСтрокаСтрокаИсходная строка.
НомерСимволаЧислоПорядковый номер символа в строке, код которого необходимо получить. Нумерация символов в строке начинается с 1.

Значение по умолчанию: 1.

Жирным шрифтом выделены обязательные параметры

Возвращаемое значение

Число

Описание

Функция КодСимвола() возвращает числовой код символа, расположенного в переданной строке в позиции с указанным номером. Код возвращается в соответствии с кодировкой Unicode

Доступность

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).

Пример использования

Пример кода с использованием функции КодСимвола():

//в исходной строке представлены буквы и цифры
ИсходнаяСтрока = "абв123";
//необходимо отфильтровать только цифры
ВыходнаяСтрока = "";
Для Инд = 1 По СтрДлина(ИсходнаяСтрока) Цикл
	КодСимв = КодСимвола(ИсходнаяСтрока, Инд);
	Если КодСимв >= 48 И КодСимв <= 57 Тогда
		//это число
		ВыходнаяСтрока = ВыходнаяСтрока + Сред(ИсходнаяСтрока, Инд, 1);
	КонецЕсли;
КонецЦикла;
Сообщить(ВыходнаяСтрока);
//123

Читайте также:

  1. Функция Символ()

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

Символы   Назначение

//

Двумя знаками «косая черта» начинается комментарий. Комментарием считается весь текст от знака «//» до конца текущей строки.

|

Вертикальная черта в начале строки используется только в строковых константах и означает, что данная строка является продолжением предыдущей (перенос строки).

~

Знаком тильда начинается метка оператора.

:

Двоеточием заканчивается метка оператора.

;

Точка с запятой является символом разделения операторов.

( )

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

[ ] 

С помощью оператора «квадратные скобки» производится обращение к свойствам объекта по строковому представлению имени свойства. Также возможно обращение к элементам коллекций по индексу или другому параметру.

,

Запятая разделяет параметры в списке параметров методов, процедур, функций и конструкторов.

» » 

В двойные кавычки заключаются строковые литералы.

‘ ‘

В одинарные кавычки заключаются литералы даты.

.

Десятичная точка в числовых литералах. Разделитель, используемый для обращения к свойствам и методам объектов встроенного языка.

+

Символ «плюс» обозначает операцию сложения и конкатенации.

Символ «минус» обозначает операцию вычитания.

Символ «звездочка» обозначает операцию умножения.

Символ «косая черта» обозначает операцию деления.

%

Получение остатка от деления. Допускается использования дробных значений делимого и делителя.

Правая угловая скобка обозначает логическую операцию «больше».

>=

Логическая операция «больше или равно».

Левая угловая скобка обозначает логическую операцию «меньше».

<= 

Логическая операция «меньше или равно».

Знак равенства обозначает присвоение или логическую операцию «равно».

<> 

Две угловые скобки обозначают логическую операцию «не равно».

Замена HTML кодов символов в тексте средствами 1С

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

Простая функция замены


Если в заранее известно какие символы нужно заменить, то можно воспользоваться стандартной функцией СтрЗаменить().
Функция ЗаменаHTMLКодов(Знач ВходящаяСтрока)

СоответствиеКодов = Новый Соответствие();
СоответствиеКодов.Вставить("[", "[");
СоответствиеКодов.Вставить("]", "]");
СоответствиеКодов.Вставить(" ", " ");

Для каждого ЭлементКод Из СоответствиеКодов Цикл
ВходящаяСтрока = СтрЗаменить(ВходящаяСтрока, ЭлементКод.Ключ, ЭлементКод.Значение);
КонецЦикла;

Возврат ВходящаяСтрока;

КонецФункции


Универсальная функция замены HTML кодов на символы

Функция УниверсальнаяЗаменаHTMLКодов(Знач ВходящаяСтрока)

МногострочнаяСтрока = СтрЗаменить(ВходящаяСтрока, "&#", Символы.ПС);
МногострочнаяСтрока = СтрЗаменить(МногострочнаяСтрока, ";", Символы.ПС);

Для НомерСтроки = 1 По СтрЧислоСтрок(МногострочнаяСтрока) Цикл

ПодСтрока = СтрПолучитьСтроку(МногострочнаяСтрока, НомерСтроки);

Если Найти(ПодСтрока, " ") > 0 ИЛИ ПустаяСтрока(ПодСтрока) Тогда
Продолжить;
КонецЕсли;

Попытка
КодСимвола = Число(ПодСтрока);
Исключение
Продолжить;
КонецПопытки;

Символ = Символ(КодСимвола);
ЗаменяемаяПодСтрока = "&#" + ПодСтрока + ";";
ВходящаяСтрока = СтрЗаменить(ВходящаяСтрока, ЗаменяемаяПодСтрока, Символ);

КонецЦикла;

Возврат ВходящаяСтрока;

КонецФункции


Поиск и замену HTML кодов можно организовать с помощью регулярных выражений. В системе 1С, работа с регулярными выражениями осуществляется через COM технологию. Соответственно такой подход требует больших вычислительных ресурсов. В тоже время замена через регулярные выражения — это более универсальный способ.

1c8 разработка на примерах. — 1С8 Запросы. Оператор ПОДОБНО (LIKE) и СПЕЦСИМВОЛ

Оператор ПОДОБНО в запросах на 1С8 — мощный инструмент обработки строковых данных.

Оператор ПОДОБНО вычисляет соответствует ли строка шаблону или нет. Шаблон — строковое выражение использующее набор специальных сочетаний символов. Каждый из них обозначает некий подкласс сочетаний символов, которые могут встречаться в строковых данных Он аналогичен LIKE в SQL.

Как пользоваться Оператором ПОДОБНО:

Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа.

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

Следующие символы в строке шаблона являются служебными и имеют смысл, отличный от символа строки:

  • % (процент): последовательность, содержащая любое количество произвольных символов

    % (процент) — аналог (.*) в регулярных выражениях — любой символ повторенный ноль или больше раз.

    
    // Все адреса содержащие символы "мос" в любом месте
    ВЫБРАТЬ
    	Банки.Адрес
    ИЗ
    	Справочник.Банки КАК Банки
    ГДЕ
    	Банки.Адрес ПОДОБНО "%мос%"
    
  • _ (подчеркивание): один произвольный символ
  • […] (в квадратных скобках один или несколько символов): любой одиночный символ из перечисленных внутри квадратных скобок В перечислении могут встречаться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона.
  • [^…] (в квадратных скобках значок отрицания, за которым следует один или несколько символов): любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки.

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

    Например, шаблон “%АБВ[0-9][абвг]\_абв%” СПЕЦСИМВОЛ “\” означает подстроку, состоящую из последовательности символов:

    буквы А; буквы Б; буквы В; одной цифры; одной из букв а, б, в или г; символа подчеркивания; буквы а; буквы б; буквы в. Причем перед этой последовательностью может располагаться произвольный набор символов.

В приведенном ниже примере — Вывести все наименования содержащие символ «_», СПЕЦСИМВОЛ «\» является экранирующим для символа «_», который означает «один произвольный символ».

Ориентировочная стоимость работ программиста 1С : 500 р. за 1 час работы.

функции для работы со строками

Внимание! Перед вами ознакомительная версия урока, материалы которого могут быть неполными.

Войдите на сайт как ученик

Войдите как ученик, чтобы получить доступ к материалам школы

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

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

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

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

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

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

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

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

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

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

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

04

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

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

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

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

02

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

03

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

04

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

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

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

05

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

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

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

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

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

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

06

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

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

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

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

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

07

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

08

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

09

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

10

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

11

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *