Язык запросов 1С — одно из основных отличий между версиями 7.7 и 8. Одним из важнейших пунктов в изучении 1С-программирования является язык запросов. В 1С 8.3 запросы — самый мощный и эффективный инструмент получения данных. Язык запросов позволяет в удобном виде получать информацию из базы данных.
Сам синтаксис очень сильно напоминает классический T-SQL, за исключением того, что в 1С с помощью языка запросов можно только получать данные, используя конструкцию Выбрать(select). Язык поддерживает и более сложные конструкции, например, (запрос в запросе). Запросы в 1С 8 можно составлять как на кириллице, так и на латинице.
В статье я постараюсь рассказать про основные ключевые слова в языке запросов 1С:
- выбрать
- разрешенные
- различные
- выразить
- первые
- для изменения
- значение
- тип значения (и оператор ССЫЛКА)
- выбор
- сгруппировать по
- имеющие
- ЕСТЬNULL
- Есть NULL
- соединения — правые, левые, внутренние, полные .
А так же небольшие хитрости языка 1С, применяя которые вы сможете оптимально построить текст запроса.
Для отладки запросов в системе 1С 8.2 предусмотрен специальный инструмент — консоль запросов. Увидеть описание и скачать его можно по ссылке — .
Рассмотрим самые важные и интересные операторы языка запросов 1С.
ВЫБРАТЬ (SELECT)
В языке запросов 1С предприятия 8 любой запрос начинается с ключевого слова ВЫБРАТЬ . В языке 1С нет конструкций UPDATE, DELETE, CREATE TABLE, INSERT, эти манипуляции производятся в объектной технике. Предназначение его — только чтение данных.
Например:
ВЫБРАТЬ
ТекущийСправочник.Наименование
ИЗ
Справочник.Номенклатура КАК ТекущийСправочник
Запрос вернёт таблицу с наименованиями номенклатуры.
Рядом с конструкцией ВЫБРАТЬ можно встретить ключевые слова ДЛЯ ИЗМЕНЕНИЯ , РАЗРЕШЕННЫЕ , РАЗЛИЧНЫЕ , ПЕРВЫЕ …
РАЗРЕШЕННЫЕ — выбирает только записи из таблицы, на которые есть права у текущего пользователя.
РАЗЛИЧНЫЕ — означает, что в результат не попадет дублирующих строк.
ВЫБОР (CASE)
Очень часто данная конструкция недооценивается программистами. Пример её использования:
ТекущийСправочник.Наименование,
КОГДА ТекущийСправочник.Услуга ТОГДА
«Услуга»
КОНЕЦ КАК ВидНоменклатуры
Справочник.Номенклатура КАК ТекущийСправочник
Пример возвратит в поле «ВидНоменклатуры» текстовое значение — «Товар» или «Услуга».
ГДЕ (WHERE)
Конструкция языка запросов 1C, позволяющая наложить отбор на получаемые данные. Учтите, что от сервера система получает все данные, а только потом они отбираются по данному параметру.
ВЫБРАТЬ
Справочник.Наименование
ИЗ
ТекущийСправочник.Номенклатура КАК ТекущийСправочник
ГДЕ ТекущийСправочник.Услуга = ИСТИНА
В примере мы отбираем записи, у которых значение реквизита «Услуга» установлено в положение «Истина». В данном примере можно было бы обойтись и таким условием:
«ГДЕ Услуга»
По сути, мы отбираем строки, у которых выражение после ключевого слова равно «Истина».
В выражениях можно использовать прямые условия:
ГДЕ Код = «005215»
С помощью оператора «ЗНАЧЕНИЕ()» в условиях использовать обращение к предопределенным элементам и перечислениям в запросе 1С:
ГДЕ ТипНоменклатуры= Значение(Перечисление.ТипыНоменклатуры.Товар)
Значения времени могут указываться следующим образом:
ГДЕ ДатаПоступления > ДАТАВРЕМЯ(2012,01,01):
Чаще всего условия указываются в виде параметров, передаваемых в запрос:
Получите 267 видеоуроков по 1С бесплатно:
ГДЕ НоменклатурнаяГруппа= &НоменклатурнаяГруппа
Условие можно наложить на тип реквизита, если он составного типа:
Если необходимо ограничивать отбор из списка значений или массива, можно поступить следующим образом:
ГДЕ РегистрНакопления.Регистратор В (&СписокДокументовДляОтбора)
Условие может быть и сложное, состоящее из нескольких условий:
ГДЕ ДатаПоступления > ДАТАВРЕМЯ(2012,01,01) И НоменклатурнаяГруппа= &НоменклатурнаяГруппа И НЕ Услуга
СГРУППИРОВАТЬ ПО (GROUP BY)
Конструкция языка запросов 1С 8.2, используемая для группировки результата.
Например:
ВЫБРАТЬ
ПоступлениеТоваровУслугTовары.Товар,
СУММА(ПоступлениеТоваровУслугTовары.Количество) КАК Количество,
СУММА(ПоступлениеТоваровУслугTовары.Сумма) КАК Сумма
ИЗ
Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугTоварыСГРУППИРОВАТЬ ПО
ПоступлениеТоваровУслугTовары.Товар
Данный запрос просуммирует все поступления по сумме и количеству в разрезе номенклатуры.
Помимо ключевого слова СУММА можно использовать другие агрегатные функции: КОЛИЧЕСТВО , КОЛИЧЕСТВО РАЗНЫХ , МАКСИМУМ , МИНИМУМ , СРЕДНЕЕ .
ИМЕЮЩИЕ (HAVING)
Конструкция, о которой часто забывают, но она очень важна и полезна. Она позволяет указать отбор в виде агрегатной функции, этого нельзя сделать в конструкции ГДЕ .
Пример использования ИМЕЮЩИЕ в запросе 1С:
ВЫБРАТЬ
ПоступлениеТоваровУслугТовары.Товар,
СУММА(ПоступлениеТоваровУслугТовары.Количество) КАК Количество,
СУММА(ПоступлениеТоваровУслугТовары.Сумма) КАК Сумма
ИЗ
Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТоварыСГРУППИРОВАТЬ ПО
ПоступлениеТоваровУслугТовары.товарСУММА(ПоступлениеТоваровУслугТовары.Количество) > 5
Так мы отберем количество товаров, которых поступило более 5 штук.
ЗНАЧЕНИЕ()
Например:
ГДЕ Банк = Значение(Справочник.Банки.ПустаяСсылка)
ГДЕ ВидНоменклатуры = Значение(Справочник.ВидыНоменклатуры.Товар)
ГДЕ ТипНоменклатуры= Значение(Перечисление.ТипыНоменклатуры.Услуга)
ТИП в запросе
Тип данных можно проверить следующим образом: с помощью функций ТИП() и ТИПЗНАЧЕНИЯ() или с помощью логического оператора ССЫЛКА.
ВЫРАЗИТЬ()
Оператор Выразить в запросах 1С служит для преобразования типов данных.
Синтаксис: ВЫРАЗИТЬ(<Выражение> КАК <Тип значения>)
С помощью него можно преобразовать строковые значения в дату или ссылочные в строковые данные и так далее.
В практическом применении оператор Выразить() очень часто используется для преобразования полей неограниченной длины, потому что поля неограниченной длины нельзя отбирать, группировать и тд. Если такие поля не преобразовывать, Вы получите ошибку Нельзя сравнивать поля неограниченной длины и поля несовместимых типов .
ВЫБРАТЬ
КонтактнаяИнформация.Объект,
ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(150)) КАК Представление
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформацияСГРУППИРОВАТЬ ПО
ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(150)),
КонтактнаяИнформация.Объект
ЕСТЬNULL (ISNULL)
Достаточно полезная функция языка запросов 1С, которая проверяет значение в записи, и если оно равно NULL, то позволяет заменить на своё значение. Чаще всего используется при получении виртуальных таблиц остатков и оборотов, чтобы скрыть NULL и поставить понятный 0 (ноль).
ЕСТЬNULL(НалогиПредМесяца.ПримененнаяЛьготаФСС, 0)
Такая функция языка запросов 1С ЕСТЬNULL при отсутствии значения вернет ноль, что позволит избежать ошибки.
СОЕДИНЕНИЕ (JOIN)
Соединения бывают 4 типов: ЛЕВОЕ , ПРАВОЕ , ПОЛНОЕ, ВНУТРЕННЕЕ .
ЛЕВОЕ и ПРАВОЕ СОЕДИНЕНИЕ
Соединения используются для связи двух таблиц по определенному условию. Особенность при ЛЕВОМ СОЕДИНЕНИИ в том, что мы берём первую указанную таблицу полностью и привязываем по условию вторую таблицу. Поля второй таблицы, которые не удалось привязать по условию, заполняются значением NULL .
Пример левого соединения в запросе 1С:
Вернет всю таблицу и заполнит поле «Банк» лишь в тех местах, где будет соблюдаться условие «Контрагенты.Наименование = Банки.Наименование». Если условие не соблюдается, в поле Банк будет установлено NULL .
ПРАВОЕ СОЕДИНЕНИЕ в языке 1С 8.3 абсолютно аналогично ЛЕВОМУ соединению , за исключением одного отличия: в ПРАВОМ СОЕДИНЕНИИ «главная» таблица — вторая, а не первая.
ПОЛНОЕ СОЕДИНЕНИЕ
ПОЛНОЕ СОЕДИНЕНИЕ отличается от левого и правого тем, что выводит все записи из двух таблиц, соединяет лишь те, которые может соединить по условию.
Например:
ПОЛНОЕ СОЕДИНЕНИЕ
Справочник.Банки КАК БанкиПО
Язык запросов вернет обе таблицы полностью лишь по выполненному условию Соединить записи. В отличие от левого/правого соединения возможно появления NULL в двух полях.
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
ВНУТРЕННЕЕ СОЕДИНЕНИЕ отличается от полного тем, что выводит только те записи, которые смогли соединить по заданному условию.
Например:
ИЗ
Справочник.Контрагенты КАК КлиентыВНУТРЕННЕЕ СОЕДИНЕНИЕ
Справочник.Банки КАК БанкиПО
Клиенты.Наименование = Банки.Наименование
Данный запрос вернет только строки, в которых у банка и контрагента будет одинаковое наименование.
Заключение
Это лишь небольшая часть синтаксиса из языка запросов 1С 8, в дальнейшем я попробую рассмотреть более подробно некоторые моменты, показать и многое другое!
Остальные рассмотрим сейчас.
Функции работы со строками в запросах 1С
Функций и операторов для работы со строковыми данными в запросах 1С немного.
Во-первых, строки в запросах можно складывать. Для этого используется оператор «+»:
Запрос.
Текст=
"ВЫБРАТЬ
"
"Строка: "
" + Источник.Наименование
;
Во-вторых, можно выделить часть строки. Для этого используется функция ПОДСТРОКА. Функция аналогична встроенного языка 1С. У нее три параметра:
- Строка-источник.
- Номер символа, с которого должна начинаться выделяемая строка.
- Количество символов.
Запрос.
Текст=
"ВЫБРАТЬ
ПОДСТРОКА("
"Строка: "
", 4, 3) КАК Результат"
;
// Результат: ока
Функция ЕСТЬNULL
NULL — особый тип данных на платформе 1С:Предприятие. Он же является единственным возможным значением этого типа. NULL может возникать в запросах в нескольких случаях: при соединениях источников запроса, если не было найдено соответствующего значения в одной из таблиц; при обращении к реквизитам несуществующего объекта; если NULL был указан в списке полей запроса (например при объединении результатов выборки из нескольких таблиц) и т.д.
Поскольку NULL не является ни нулем, ни пустой строкой, ни даже значением Неопределено, его часто бывает полезно заменять на какой-то более полезный тип данных. Для этого и предназначена функция ЕСТЬNULL.
Она имеет два параметра:
- Проверяемое значение.
- Значение, на которое нужно заменить первый параметр, если он оказался равен NULL.
Запрос.
Текст=
"ВЫБРАТЬ
ЕСТЬNULL(Источник.Остаток, 0) КАК Остаток"
;
// Если в результате запроса поле остаток=NULL,
// то оно заменится на 0, и с ним можно будет выполнять математические действия
Функции ПРЕДСТАВЛЕНИЕ и ПРЕДСТАВЛЕНИЕССЫЛКИ
Эти функции предназначены для получения строковых представлений различных значений. То есть, они преобразуют ссылки, числа, булево и т.д. в обычный текст. Разница между ними в том, что функция ПРЕДСТАВЛЕНИЕ преобразует в текст (строку) любые типы данных, а функция ПРЕДСТАВЛЕНИЕССЫЛКИ — только ссылки, а остальные значения возвращает как есть, не преобразованными.
Запрос.
Текст=
"ВЫБРАТЬ
ПРЕДСТАВЛЕНИЕ (ИСТИНА) КАК Булево,
ПРЕДСТАВЛЕНИЕ (4) КАК Число,
ПРЕДСТАВЛЕНИЕ (Источник.Ссылка) КАК Ссылка,
ПРЕДСТАВЛЕНИЕ(ДАТАВРЕМЯ(2016,10,07)) КАК Дата"
;
// Булево = "Да", Число = "4", Ссылка = "Документ Расходный кассовый ордер №... от..."
// Дата="07.10.2016 0:00:00"
Запрос.
Текст=
"ВЫБРАТЬ
ПРЕДСТАВЛЕНИЕССЫЛКИ (ИСТИНА) КАК Булево,
ПРЕДСТАВЛЕНИЕССЫЛКИ (4) КАК Число,
ПРЕДСТАВЛЕНИЕССЫЛКИ (Источник.Ссылка) КАК Ссылка,
ПРЕДСТАВЛЕНИЕССЫЛКИ (ДАТАВРЕМЯ(2016,10,07)) КАК Дата"
;
// Булево = ИСТИНА, Число = 4, Ссылка = "Документ Расходный кассовый ордер №... от..."
// Дата=07.10.2016 0:00:00
Функции ТИП и ТИПЗНАЧЕНИЯ
Функция ТИП возвращает тип данных платформы 1С:Предприятие.
Запрос.
Текст=
"ВЫБРАТЬ
ТИП (Число) ,
ТИП (Строка),
ТИП (Документ.РасходныйКассовыйОрдер)"
;
Функция ТИПЗНАЧЕНИЯ возвращает тип переданного в нее значения.
Запрос.
Текст=
"ВЫБРАТЬ
ТИПЗНАЧЕНИЯ (5) КАК Число,
ТИП ("
"Строчка"
") КАК Строка,
ТИП (Источник.Ссылка) КАК Справочник
Из Справочник.Источник КАК Источник"
;
//Число=Число, Строка=Строка, Справочник = СправочникСсылка.Источник
Эти функции удобно применять, например, когда нужно выяснить является ли полученное в запросе поле значением какого-то типа. Например, получим контактную информацию контрагентов из регистра сведений КонтактнаяИнформация (там хранятся контакты не только контрагентов, но и организаций, физических лиц и т.д.):
Запрос.
Текст=
"ВЫБРАТЬ
ИЗ
ГДЕ
ТИПЗНАЧЕНИЯ(КонтактнаяИнформация.Объект) = ТИП(Справочник.Контрагенты)"
;
Функция ЗНАЧЕНИЕ
Функция Значение позволяет использовать в запросе объекты конфигурации 1С напрямую, без применения .
Дополним предыдущий пример еще одним условием. Необходимо получить только телефоны контрагентов.
Запрос.
Текст=
"ВЫБРАТЬ
КонтактнаяИнформация.Представление
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
ТИПЗНАЧЕНИЯ(КонтактнаяИнформация.Объект) = ТИП(Справочник.Контрагенты)
И КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)"
;
Следует отметить, что эту функцию можно использовать только с предопределенными значениями, т.е. со значениями, к которым можно обратиться напрямую из конфигуратора. То есть функция ЗНАЧЕНИЕ не можно использоваться с элементами справочников, созданными пользователями, но может работать с перечислениями, с предопределенными элементами справочников, со значениями ПустаяСсылка .
Оператор ССЫЛКА
Оператор ССЫЛКА предназначен для проверки значений, получаемых запросом, на принадлежность к определенному ссылочному типу. Эту же задачу можно выполнить с помощью функций ТИП и ТИПЗНАЧЕНИЯ (которые имеют более широкую область применения и были рассмотрены выше).
Например, задачу выбора контактной информации контрагентов можно было решить и так:
Запрос.
Текст=
"ВЫБРАТЬ
КонтактнаяИнформация.Представление
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
КонтактнаяИнформация.Объект ССЫЛКА Справочник.Контрагенты"
;
Оператор ВЫРАЗИТЬ
Оператор ВЫРАЗИТЬ используется в запросах 1С в двух случаях:
- когда нужно изменить характеристики примитивного типа;
- когда нужно из поля с составным типом данных сделать поле с одиночным типом.
К примитивным типам данных относятся: число, строка, дата, булево. Некоторые из этих типов данных имеют дополнительные характеристики. Тип Число имеет длину и точность, тип Строка — длину или неограниченность.
Оператор ВЫРАЗИТЬ позволяет изменять не тип данных, а именно дополнительные характеристики. Например, он может из строки с неограниченной длиной сделать строку с длиной ограниченной. Это бывает полезно, если нужно сгруппировать результаты запроса по такому полю. Выполнять группировку по полям с неограниченной длиной нельзя, поэтому мы его преобразуем в строку с длиной 200 символов.
Запрос.
Текст=
"ВЫБРАТЬ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПоступлениеТоваровУслуг.Ссылка) КАК Ссылка
ИЗ
Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
СГРУППИРОВАТЬ ПО
ВЫРАЗИТЬ(ПоступлениеТоваровУслуг.Комментарий КАК СТРОКА(200))"
;
В ряде случаев, запросы к полям с составным типом данных могут обрабатываться платформой 1С неоптимально. Это приводит к увеличению времени выполнения запросов, поэтому бывает полезно заранее преобразовать составной тип в одиночный.
Запрос.
Текст=
"ВЫБРАТЬ
ВЫРАЗИТЬ(ДвижениеТоваровОбороты.Распоряжение КАК Документ.ЗаказКлиента).Дата КАК ДатаЗаказа,
ДвижениеТоваровОбороты.Номенклатура
ИЗ
РегистрНакопления.ДвижениеТоваров.Обороты КАК ДвижениеТоваровОбороты
ГДЕ
ДвижениеТоваровОбороты.Распоряжение ССЫЛКА Документ.ЗаказКлиента"
;
Операторы ВЫБОР и ЕСТЬ NULL
Оператор ВЫБОР аналогичен оператору ЕСЛИ во встроенном языке 1С, но имеет несколько урезанный функционал.
Допустим мы хотим получить контактные данные из регистра сведений КонтактнаяИнформация и при этом в отдельном поле запроса указать, принадлежат ли они контрагенту или физическому лицу.
Запрос.
Текст=
"ВЫБРАТЬ
КонтактнаяИнформация.Представление,
ВЫБОР
КОГДА ТИПЗНАЧЕНИЯ(КонтактнаяИнформация.Объект) = ТИП(Справочник.Контрагенты)
ТОГДА "
Контрагент"
ИНАЧЕ ВЫБОР
КОГДА ТИПЗНАЧЕНИЯ(КонтактнаяИнформация.Объект) = ТИП(Справочник.ФизическиеЛица)
ТОГДА "
ФизЛицо"
ИНАЧЕ "
Кто-
то другой"
КОНЕЦ
КОНЕЦ КАК Владелец
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация"
;
Как видно из примера, в конструкции ВЫБОР всегда присутствует условие после слова КОГДА; значение, применяемое, если условие выполняется, после слова ТОГДА и значение, применяемое, если условие не выполняется, после слова ИНАЧЕ. Все три элемента конструкции ВЫБОР являются обязательными. Опустить элемент ИНАЧЕ , так же, как это делается при использовании оператора ЕСЛИ во встроенном языке 1С, нельзя. Также у оператора ВЫБОР отсутствует аналог конструкции ИНАЧЕЕСЛИ , зато можно вложить один ВЫБОР в другой, как и было сделано в нашем примере.
Оператор ЕСТЬ NULL используется в конструкции ВЫБОР для сравнения поля запроса с типом NULL.
Запрос.
Текст=
"ВЫБРАТЬ
ВЫБОР
КОГДА Значение ЕСТЬ NULL ТОГДА 0
ИНАЧЕ Значение
КОНЕЦ"
;
Кроме того, оператор ЕСТЬ NULL можно использовать в условиях запроса, например в предложении ГДЕ.
1С позволяет значительно упростить ведение бухгалтерии или просто управление любой организацией, будь то маленький магазинчик или крупное предприятие. Программа представляет собой крупную систему по управлению базами данных . Чтобы не запутаться во всём этом, необходимо уметь выполнять различные простейшие действия и понимать суть. Далее вы поймёте, как в 1С проверить тип значения в запросе, а также какие они, вообще, бывают, а также как их различать.
Типы значений
1С: Предприятие включило в новые версии специальную функцию (платформа 8.2). С помощью неё можно к любым наименованиям, элементам системы данных добавлять какие-либо особые параметры. Сделано это для того, чтобы систему было легче редактировать и добавлять туда новые элементы. Функция эта как раз и называется «Тип значения».
На самом деле это одно из базовых понятий, которое содержит большинство языков программирования. При помощи его можно проводить классификацию различных данных. Например: даты, числа, строки, ссылки. Это лишь базовые классификации. Их может быть гораздо больше. Скажем, если вы заносите в вашу систему информацию о городах, можно использовать: материк, страна, район и т. п.
Проверка
Проверить то или иное поле можно при помощи языка запросов. А точнее его функции: ТИПЗНАЧЕНИЯ. То есть, если мы хотим узнать, информацию какого вида содержит интересующая ячейка, мы должны воспользоваться командой.
ТИПЗНАЧЕНИЯ(Значение) = ТИП(Строка)
На примере выше мы определили, воспользовавшись командой, простейший вид. Другой пример проверки запроса:
Документы
Самих видов довольно много, пользователи могут обходиться как начальными, так и вводить свои, чтобы совершенствовать информационную базу. Вот некоторые из них.
- ДокументСсылка. Применяется для удобного хранения ссылок на различные объекты внутри других частей системы.
- ДокументОбъект - редактирование документов.
- ДокументВыборка - переборка объектов из базы данных.
Кроме того, есть специальные термины, характеризующие любые данные:
- форма;
- строка;
- булево;
- число;
- дата;
- массив;
- флажок;
- картинка.
Это лишь часть из них. Любой объект может являться только чем-то из этого списка. Булево - специальный параметр, который принимает два значения: правда или ложь. Также есть специальные теги, позволяющие корректировать запрос: когда, где, как, иначе и т. п. Они задают алгоритм поведения программы. 1С отличает то, что эти слова здесь, как и всё остальное, можно вписывать на русском языке.
Важно понимать, что все это будет восприниматься новичками и непрофессионалами как китайская грамота. Чтобы понимать, о чём идёт речь и эффективно использовать 1С, необходимо знать основы программирования. В целом, проверить тип в запросе в программе 1С будет достаточно легко, в сравнении с другими действиями.
43
NULL – отсутствующие значения.
Не путать с нулевым значением! NULL – это не число, не равно пробелу, пустой ссылке, Неопределено.
NULL – типообразующее значение, т.е. есть тип NULL и единственное значение этого типа.
NULL...
26
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос. Создается этот объект вызовом конструкции Новый Запрос. Запрос удобно...
18
В статье приведены полезные приемы при работе с запросами 1С v.8.2, а также сведения, которые не так хорошо известны о языке запросов. Я не стремлюсь дать полное описание языка запросов, а хочу остановиться лишь на...
13
ПОДОБНО - Оператор проверки строки на подобие шаблону. Аналог LIKE в SQL.
Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения...