В начало

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

 

            Есть справочники «Контрагенты» и документы «ПриходДенег» и «РасходДенег». Необходимо организовать запрос по движению денежных средств для всех контрагентов с использованием вложенного запроса.

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

            Во вложенном запросе выбираем документ «ПриходДенег», а затем поля: Контрагент и Сумма. Переходим на закладку «Объединения/Псевдонимы» и создаем еще один запрос. В котором выбираем документ «РасходДенег», а в нем точно такие же поля. И снова переходим на закладку «Объединения/Псевдонимы». На этой закладке надо разделить суммы на приход и расход, чтобы не было как с мухами и котлетами.

Рис. 1. Закладка «Объединения/Псевдонимы» вложенного запроса

 

            Создав, таким образом, вложенный запрос возвращаемся в конструктор запросов, где выбираем справочник «Контрагенты». Далее выбираем поля, из вложенного запроса: СуммаПриход, СуммаРасход, а из справочника «Контрагенты» выбираем: Код и Наименование. После чего переходим на закладку связи. Далее переходим на закладку «Группировки».

Рис. 2. Закладка «Связи» конструктора запросов

 

            На закладке «Группировки» в групповое поле помещаем поля «Код» и «Наименование». А  в суммируемое поле: СуммаПриход, СуммаРасход. После чего возвращаемся в консоль запросов. Получился не хилый такой запрос.

 

Листинг. Текст запроса

ВЫБРАТЬ

      Контрагенты.Код,

      Контрагенты.Наименование,

      СУММА(ВложенныйЗапрос.СуммаПриход) КАК СуммаПриход,

      СУММА(ВложенныйЗапрос.СуммаРасход) КАК СуммаРасход

ИЗ

      Справочник.Контрагенты КАК Контрагенты

            ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ

                  ПриходДенег.Контрагент КАК Контрагент,

                  ПриходДенег.Сумма КАК СуммаПриход,

                  NULL КАК СуммаРасход

            ИЗ

                  Документ.ПриходДенег КАК ПриходДенег

           

            ОБЪЕДИНИТЬ ВСЕ

           

            ВЫБРАТЬ

                  РасходДенег.Контрагент,

                  NULL,

                  РасходДенег.Сумма

            ИЗ

                  Документ.РасходДенег КАК РасходДенег) КАК ВложенныйЗапрос

            ПО Контрагенты.Ссылка = ВложенныйЗапрос.Контрагент

 

СГРУППИРОВАТЬ ПО

      Контрагенты.Код,

      Контрагенты.Наименование

 

            Результат выполнения данного запроса продемонстрирован ниже.

Рис. 3. Результат вложенного запроса

Рис. 3. Результат вложенного запроса