1С Предприятие 8.0. Описание встроенного языка

         

Логические выражения в языке запросов


В языке запросов в операциях выбора и в условиях отборов ис­пользуются логические выражения:

<Логическое выражение>

<Выражение> |

    <Выражение> <Операция сравнения> <Выражение> |

    <Выражение> [НЕ] В [ИЕРАРХИИ] (<Список значений>)

<Выражение> [НЕ] В [ИЕРАРХИИ] <Описание запроса> |

    <Выражение> [НЕ] МЕЖДУ <Выражение> И <Выражение> |

    <Выражение> ЕСТЬ [НЕ] NULL |

    <Выражение> ССЫЛКА <Имя таблицы> |

    <Выражение> [НЕ] ПОДОБНО <Литерал типа СТРОКА> [СПЕЦСИМВОЛ <Литерал типа СТРОКА>]

<Операция сравнения>

> | < | = | >= | <= | <>

<Список значений>



<Выражение> [, <Выражение> [, ...] ]

Логическим выражением может быть:

• обычное <Выражение> языка запросов, если его результат имеет логический тип;

• <Операция сравнения> двух выражений языка запросов; выполняются в соответствии с правилами сравнения значений описанными на стр. 360;

• оператор проверки совпадения / не совпадения значения выражения с одним из перечисленных или со значениями, со­держащимися в результате другого запроса;

• оператор проверки вхождения значения выражения в диапа­зон;

• оператор проверки значения выражения на NULL;

• оператор проверки ссылочного значения выражения на ссыл­ку на определенную таблицу;

• оператор проверки строкового значения на подобие шаблону.

При сравнении значений используются правила сравнения значе­ний, описанные на стр. 360.

Правила сравнения значений

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

• сравнения значений в операторах сравнения;

• определения максимального и минимального значений в агре­гатных функциях МИНИМУМ и МАКСИМУМ;

• упорядочивания записей результата запроса в соответствии с порядком, заданным в предложении УПОРЯДОЧИТЬ ПО.




Если типы значений отличаются друг от друга, то отношения ме­жду значениями определяются на основании приоритета типов:

• тип NULL (самый низший);

• тип булево;

• тип число;

• тип дата;

• тип строка;

• ссылочные типы.

Отношения между различными ссылочными типами определяют­ся на основе ссылочных номеров таблиц, соответствующих тому или иному типу.

Если типы данных совпадают, то производится сравнение значе­ний по следующим правилам:

• у типа булево значение ИСТИНА больше значения ЛОЖЬ;

• у типа число обычные правила сравнения для чисел;

• у типа дата более ранние даты меньше более поздних;

• у типа строка сравнения производится в соответствии с ус­тановленными национальными особенностями базы данных;

• ссылочные типы сравниваются на основе своих значений (номера записи и т. п.).

Важно!

Любая операция сравнения двух значений, в которой участвует хотя бы одно значение NULL, дает результат, аналогич­ный значению ЛОЖЬ.

Оператор проверки совпадения значения с одним из перечисленных

Оператор В

позволяет проверить, совпадает ли значение выраже­ния, указанного справа от него, с одним из значений, описанных слева. Если совпадает хотя бы с одним - результатом оператора будет ИСТИНА, иначе - ЛОЖЬ. Применение НЕ изменяет дейст­вие оператора на обратное. Сравнение значений производится по правилам, описанным на стр. 360.

Пример:

Выбрать

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

Где

    Справочник.Номенклатура.Родитель.Наименование В ("Бытовая техника", "Оргтехника")

Для справочников проверка может осуществляться и на принад­лежность по иерархии. Результатом оператора В ИЕРАРХИИ бу­дет ИСТИНА, если значение выражения слева является ссылкой на элемент справочника и входит во множество значений справа или иерархически принадлежит какой-нибудь группе, содержа­щейся в этом множестве.

Пример:

//В качестве параметра Группа в запрос передается ссылка

//на какую-либо группу справочника Номенклатура.



Выбрать

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

Где

    Справочник.Номенклатура.Ссылка В ИЕРАРХИИ (&Группа)

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

Пример:

Выбрать

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

Где

    Справочник.Номенклатура.Ссылка В ИЕРАРХИИ

        (ВЫБРАТЬ

            Справочник.Номенклатура.Ссылка

        ГДЕ

            Справочник.Номенклатура.Наименование = "Одежда" )

Оператор проверки вхождения значения в диапазон

Оператор МЕЖДУ позволяет проверить, входит ли значение выра­жения, указанного справа от него, в диапазон, указанный слева. Если входит - результатом оператора будет ИСТИНА, иначе -ЛОЖЬ Применение НЕ изменяет действие оператора на обратное. Сравнение значений производится по правилам, описанным на стр. 360.

Пример:

Выбрать

    Справочник.Номенклатура.Наименование,

    Справочник.Номенклатура.ЗакупочнаяЦена

Где

    Справочник.Номенклатура.ЗакупочнаяЦена МЕЖДУ 100 И 1000

Оператор проверки значения на NULL

Оператор ЕСТЬ NULL позволяет проверить значение выражения слева от него на NULL. Если значение равно NULL результатом оператора будет ИСТИНА, иначе - ЛОЖЬ. Применение НЕ изме­няет действие оператора на обратное.

Пример:

Выбрать

Справочник.Номенклатура.Наименование,

Справочник.Номенклатура.ЗакупочнаяЦена

Где

Справочник.Номенклатура.ЗакупочнаяЦена Есть NULL

Оператор проверки ссылочного значения

Оператор ССЫЛКА позволяет проверить, является ли значение выражения, указанного справа от него, ссылкой на таблицу, ука­занную слева Если да - результатом оператора будет ИСТИНА, иначе - ЛОЖЬ. Разыменование таблиц описано на стр. 345.



Пример:

ВЫБРАТЬ

    Справочник.Номенклатура.Наименование,

    Справочник.Номенклатура.ЕдиницаИзмерения

ГДЕ

    Справочник.Номенклатура.ЕдиницаИзмерения ССЫЛКА Справочник.ЕдиницыИзмерения

Оператор проверки строки на подобие шаблону

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

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

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

• _ (подчеркивание): один произвольный символ.

• [...] (в квадратных скобках один или несколько символов): любой одиночный символ из перечисленных внутри квадрат­ных скобок. В перечислении могут встречаться диапазоны, на­пример a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона.

• [^...] (в квадратных скобках значок отрицания, за которым следует один или несколько символов): любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания.

Любой другой символ означает сам себя и не несет никакой до­полнительной нагрузки.

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

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

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

«««««««««« 1С:Предприятие 8.0 »»»»»»»»»»

Содержание раздела