Найти в Дзене
1С:Конспекты

5.8 Конструктор запросов — вкладка «Условия»

← К оглавлению Данная вкладка предназначена для установки условий на выбранные таблицы базы данных. Это необходимо для того, чтобы отбирать только нужные в данном случае данные, а не все подряд. На данной вкладке есть следующие разделы: Каждое условие — это условие типа «И», для того, чтобы прописать условие типа «ИЛИ», его нужно сделать произвольным и целиком прописать всю его конструкцию. Например, Цена < 100 ИЛИ Цена > 200. При этом имейте в виду, что использование условий «ИЛИ» может привести к тому, что СУБД не сможет использовать индексы таблиц и будет выполнять сканирование, что увеличит время работы запроса и вероятность возникновения блокировок. Вместо этого следует разбить один запрос на несколько и объединить результаты. Для добавления условия нужно перетащить одно из полей в область условий, назначить оператор сравнения и ввести значение или параметр, с которым будет производиться сравнение. Описание всех логических операторов языка запросов можно найти в главе 5.16.7 данно

← К оглавлению

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

На данной вкладке есть следующие разделы:

  • Поля — в данном разделе отображены поля таблиц, выбранных на вкладке «Таблицы и поля». Все эти поля можно использовать для построения условий;
  • Условия — данный раздел предназначен для построения условий, для этого используются поля таблиц из предыдущего раздела, параметры переданные в запрос, функции языка запросов, значения примитивных типов, пустые ссылки и т.д. Раздел условий представляет из себя таблицу со следующими колонками:
    Номер — порядковый номер условия, задается автоматически;
    Произвольное — флаг при помощи которого можно перейти в ручной режим редактирования условия;
    Условие — собственно само условие на языке запросов, представляющее из себя выражение, которое всегда должно возвращать одно из двух значений: Истина или Ложь.

Каждое условие — это условие типа «И», для того, чтобы прописать условие типа «ИЛИ», его нужно сделать произвольным и целиком прописать всю его конструкцию. Например, Цена < 100 ИЛИ Цена > 200. При этом имейте в виду, что использование условий «ИЛИ» может привести к тому, что СУБД не сможет использовать индексы таблиц и будет выполнять сканирование, что увеличит время работы запроса и вероятность возникновения блокировок. Вместо этого следует разбить один запрос на несколько и объединить результаты.

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

Рисунок 1: Области вкладки «Условия»
Рисунок 1: Области вкладки «Условия»

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

Пример

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

  • только элементы, не группы;
  • только товары;
  • с наименованием похожим на заданное в параметре;
  • с ценой закупки меньше нижней границы или большей либо равной верхней границе, которые будут переданы через соответствующие параметры.

Для этого:

1. Выберем справочник «Номенклатура» и следующие пол из него:

Рисунок 2: Выбор источника данных
Рисунок 2: Выбор источника данных

2. Перейдем на вкладку «Условия» и укажем интересующие нас условия отбора:

Рисунок 3: Установка условий отбора
Рисунок 3: Установка условий отбора

Здесь в 1-м условии устанавливаем флаг «Произвольное» и сразу прописываем, условие исключения групп из выборки.

Во 2-м условии так же устанавливаем флаг «Произвольное» и прописываем условие, по которому в выборке должны участвовать только товары.

В 3-м условии указываем, что наименование должно быть похоже на то, которое будет передано через параметр «Наименование».

В 4-м же условии устанавливаем флаг «Произвольное» и указываем, что цена закупки должна быть меньше нижней границы, переданной через параметр «НижняяГраницаЦены» или большей либо равной верхней границы, переданной через параметр «ВерхняяГраницаЦены». Как можно видеть, условия типа «ИЛИ» может быть прописано только как произвольное и целиком в одну строку.

Листинг 1: Запрос с условиями отбора
Листинг 1: Запрос с условиями отбора

3. Установим соответствующие параметры:

Рисунок 4: Установка параметров запроса
Рисунок 4: Установка параметров запроса

Обратите внимание на то, как задано искомое имя. Здесь используется символ шаблона «%», означающие, что на его месте может быть последовательность любых символов. Подробнее о шаблонах можно прочитать в описании оператора «ПОДОБНО» главы 5.16.7.

4. В итоге получим следующий результат:

Рисунок 5: Результат выполнения запроса
Рисунок 5: Результат выполнения запроса

Также в главе 5.11 можно увидеть пример условия, в котором используется подзапрос.

← К оглавлению