Условия в запросе 1с на примерах

Привет всем! Продолжаем делать заметки для ‘Джуниор1с’: сегодня рассмотрим условия в запросе 1с, с помощью которых мы сможем отбирать необходимые нам данные.

Итак, начнем с самого просто – это условие ‘ГДЕ’. Это самое основное и простое условие для таблиц в которых необходимо отсеять ненужные записи. Находится на закладке ‘Условия’ в конструкторе запроса:

Закладка "Условия в конструкторе запроса".
Закладка “Условия в конструкторе запроса”.

Здесь мы можем используя доступные операторы отфильтровать необходимые значения, а так же сгруппировать некоторые условия. Через ‘Произвольное выражения’ и дополнительные функции языка запросов мы можем накладывать более сложные условия. Если копнуть чуть глубже, то стоит разобраться с тем, какие из условий будут не оптимальными и лишь только будут тормозить ваш запрос. С набором этой информации можно ознакомиться по это ссылке. Вот лишь несколько примеров:

  • Использование ‘ИЛИ’ в секции ГДЕ запроса;
  • Условия через точку;
  • Условия на поля составного типа и т.д.

В конструкторе условий есть интересная фишка с оператором ‘В’: в него можно передавать не только коллекцию значений, а и выборку из временной таблицы по нужному нам полю. И сделать этом можно не только написав код, а еще и используя конструктор. Для этого между скобочками ставим пробел, выделяем его и вызываем через контекстное меню конструктор нового запроса:

Конструктор запрос В
Конструктор запрос В

После чего создаем новый запрос к нашей временной таблицы и выбираем поле, по которому хотим воспроизвести выборку:

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

В результате чего получим нужное для нас условие (‘В’), используя временную таблицу:

Условие выборки из временной таблицы.
Условие выборки из временной таблицы.

Не стоит этим злоупотреблять, иногда это условие лучше сделать через левое соединение – необходимо анализировать объем данные и время выполнения запроса.

Как раз на этом перейдем к следующему виду условий: условия в запросе ‘ПО’. Находится на закладке ‘Связи’ и используется тогда, когда необходимо задать условие для связей таблиц:

Условия связи в запросе.
Условия связи в запросе.

Можно задавать как простые условия связи так и более сложные через произвольное выражение. Так же можете ознакомиться с моей заметкой о соединениях таблиц в запросах. Пример запроса в коде:

Так же не менее интересным условием отбора является конструкция ‘ИМЕЮЩИЕ’. Её используют в запросе для наложения условий на значения агрегатных функций (СУММА, СРЕДНЕЕ, МИНИМУМ и т.д.). Допустим мы хотим в запросе отобрать исполнителей, на которых висит более 1 невыполненной задачи:

В конструкторе запроса программа сама подставит условие ‘Имеющие’ если в произвольном условии указать агрегатную функцию:

Имеющие в запросе.
Имеющие в запросе.

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

Параметры виртуальной таблицы в запросе.
Параметры виртуальной таблицы в запросе.
Условия для параметров виртуальной таблицы.
Условия для параметров виртуальной таблицы.

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

Еще одним интересным вариантом для условия является конструкция ‘Выбор’ – используется для наложения более сложных условий (не всегда оправдано), либо для заполнения значений полей выборки в зависимости от того или иного значения. Доступен из произвольных выражений для условия:

Прочие операторы: ВЫБОР.
Прочие операторы: ВЫБОР.

Так же стоит забыть и о дополнительных возможностях работы с условиями. К примеру при соединениях таблиц у нас могут образоваться отсутствующие значения, и для их проверки и замены на другое значения можно использовать функцию ‘ЕСТЬNULL’:

ЕСТЬNULL в запросе.
ЕСТЬNULL в запросе.

Так же есть еще отдельная закладка в конструкторе запросов ‘Построитель/Условия’:

Условия в построителе запросов.
Условия в построителе запросов.

Часто данные функционал используется в запросах системы компоновки данных. Об этой возможности нужно будет написать отдельную статью. Но если вы в коде запроса видите фигурные скобки ‘}’ ‘{‘ – то знайте, это условия построителя запроса:

Фигурные скобки условия.
Фигурные скобки условия.

Вот такая вот получилась краткая заметка об использовании условий в языке запросов 1с. Краткая потому, что здесь есть еще масса нюансов, понимание которых приходит с опытом. И оно к вам придет! Больше программируйте и всегда изучайте новые возможности! Всем удач!

5+

3 комментария

  1. Admin (Автор записи)

    Норм статья! Проверка комментария!

    2+
  2. Аноним

    Да, отлично все работает!

    1+
  3. Admin (Автор записи)

    Корректировка: в условии “В” мы можем использовать не только временную таблицу,а и любую другую (Справочники, Документы и т.д.)

    3+

Оставить комментарий

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