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

5.6.2 Вложенный запрос

← К оглавлению Вложенный запрос — это запрос на выборку, который используется внутри другой инструкции «ВЫБРАТЬ», или внутри другого вложенного запроса, или в условии «В». Следует учитывать, что в большинстве случаев вложенные запросы в 1С бесполезны без соединения их результата с другими таблицами. Но такое соединение практически в любом случае приведет к сильному замедлению выполнения запроса в целом. Именно поэтому фирма 1С крайне не рекомендует использовать вложенные запросы, а вместо них разработала временные таблицы. Пример Создадим запрос, который вернет наименования товаров с наименьшей ценой реализации: 1. Т.к. все товары содержаться в справочнике «Номенклатура», выбираем его, а также выбираем из него поле «Наименование»: 2. Теперь создадим вложенный запрос, который будет возвращать наименьшую цену реализации. Нажимаем кнопку «Создать вложенный запрос» и, в дополнительно открывшемся окне конструктора запросов, снова выбираем справочник «Номенклатура», но на этот раз возьмем из

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

Вложенный запрос — это запрос на выборку, который используется внутри другой инструкции «ВЫБРАТЬ», или внутри другого вложенного запроса, или в условии «В».

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

Пример

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

1. Т.к. все товары содержаться в справочнике «Номенклатура», выбираем его, а также выбираем из него поле «Наименование»:

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

2. Теперь создадим вложенный запрос, который будет возвращать наименьшую цену реализации. Нажимаем кнопку «Создать вложенный запрос» и, в дополнительно открывшемся окне конструктора запросов, снова выбираем справочник «Номенклатура», но на этот раз возьмем из него поле «ЦенаРеализации»:

Рисунок 2: Создание вложенного запроса и выбор для него источника данных
Рисунок 2: Создание вложенного запроса и выбор для него источника данных

3. В конструкторе вложенного запроса перейдем на вкладку «Группировка» и установим суммируемым полем цену реализации, выбрав функцию «Минимум»:

Рисунок 3: Настройка группировки во вложенном запросе
Рисунок 3: Настройка группировки во вложенном запросе

4. Теперь перейдем на вкладку «Условия» и укажем, чтобы выборка шла только по указанному виду номенклатуры (в нашем случае это будут товары):

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

5. Вложенный запрос готов, нажимаем в его конструкторе «ОК». Теперь в конструкторе основного запроса появилась новая таблица «ВложенныйЗапрос», а также появилась новая вкладка «Связи»:

Рисунок 5: Вложенный запрос в списке источников данных
Рисунок 5: Вложенный запрос в списке источников данных

6. Настроим соответствующую связь между обеими таблицами. Тема связывания таблиц будет подробно рассмотрена в следующем уроке, здесь поясню только, что связываем обе таблицы так, чтобы получить все данные из вложенного запроса и только те данные из справочника номенклатуры, которые совпадают с вложенным запросом по цене реализации:

Рисунок 6: Настройка связей между основным источником и вложенным запросом
Рисунок 6: Настройка связей между основным источником и вложенным запросом

7. На этом построение запроса, содержащего вложенный запрос завершено. Нажимаем «ОК» и переходим в консоль запросов, где будет отображен сам текст нашего запроса:

Листинг 1: Текст запроса с использованием вложенности
Листинг 1: Текст запроса с использованием вложенности

8. Как мы помним, во вложенном запросе был определен параметр «ВидНоменклатуры», поэтому откроем окно параметров и установим его значение:

Рисунок 7: Вызов окна установки параметров
Рисунок 7: Вызов окна установки параметров
Рисунок 8: Установка параметров запроса
Рисунок 8: Установка параметров запроса

9. Выполним запрос:

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

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

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