Профессия — 1С

Рукопашный бой Карташ

Категории

Вложенные запросы в конструкторе

рубрики: Конструктор запросов | Дата: 11 Ноябрь, 2017

В цикле статей о языке запросов 1С было рассмотрено как создавать вложенные запросы. Сегодня поговорим о том как делать вложенные запросы с использованием конструктора запросов. Перейдем сразу к примеру.




Допустим у нас есть вот такой простейший регистр сведений, где хранятся цены в разрезе товаров и поставщиков:

Мы хотим запросом получить все товары у которых количество поставщиков больше одного. Это можно реализовать с помощью вот такого запроса:


ВЫБРАТЬ
	КоличествоПоставщиков.Товар КАК Товар
ИЗ
	(ВЫБРАТЬ
		Цена.Товар КАК Товар,
		КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Цена.Поставщик) КАК Поставщики
	ИЗ
		РегистрСведений.Цена КАК Цена

	СГРУППИРОВАТЬ ПО
		Цена.Товар) КАК КоличествоПоставщиков
ГДЕ
	КоличествоПоставщиков.Поставщики > 1

Формируем вложенный запрос в конструкторе

Сформируем вышеприведенный запрос с помощью конструктора.




Для этого в командной панели над полем Таблицы нажимаем кнопку Создать вложенный запрос:

После чего у нас откроется окно с еще одним экземпляром конструктора запросов:

И в этом новом окне конструируем вложенный запрос:


Нажав на кнопку Запрос в нижнем левом углу мы можем посмотреть текст вложенного запроса:

После нажатия на кнопку ОК во вспомогательном конструкторе, получаем в основном окне следующую картину:

Поскольку словосочетание ВложенныйЗапрос не очень удобно для восприятия, давайте с помощью клика правой кнопкой мыши переименуем таблицу в КоличествоПоставщиков, выберем из нее поле Товар и на закладке Условия пропишем нужное условие:


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

Как из обычного запроса сделать вложенный в конструкторе

Очень часто возникает ситуация, когда начинаешь делать запрос в конструкторе и в какой то момент понимаешь, что он должен быть вложенным. Конечно в нашем примере никакой проблемы нет — можно просто все удалить и накидать запрос заново. Но на практике встречаются гораздо более сложные примеры, например, с несколькими уровнями вложенности, когда на то чтобы сделать запрос было потрачено несколько часов. И в этом случае есть достаточно простой выход. Можно воспользоваться встроенным в конструктор текстовым редактором запросов. Надо с помощью кнопки Запрос получить текст запроса (см. картинку выше) и скопировать его в буфер. Далее создаем новый вложенный запрос опять нажимаем кнопку Запрос, вставляем текст из буфера, жмем ОК. Соответственно старый запрос на верхнем уровне зачищаем. Таким образом мы при необходимости можем легко на лету создавать многоуровневые вложенные запросы.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

   

2017г. Профессия — 1С. Обмен опытом по программированию в 1С