Перейти к содержимому

7.11 Создание соединения таблиц-источников данных в конструкторе запросов допускает

Опубликовано: Обновлено:

Telegram → Просто о платформе 1С

❓ 7.11 Создание соединения таблиц-источников данных в конструкторе запросов допускает:

  • ИТС: Язык запросов «1С:Предприятия 8» — Как получить данные из разных таблиц, связанных несколькими соединениями.

    https://its.1c.ru/db/pubqlang/content/48/hdoc


В конструкторе запроса на закладке «Связи» отдельное соединение задается между двумя конкретными таблицами-источниками.

Для такого соединения указывается условие связи — выражение, определяющее, как сопоставляются записи этих источников.

При этом в одном запросе можно задать несколько таких соединений.

В тексте запроса каждое соединение задается отдельно:

ВЫБРАТЬ
Номенклатура.Наименование КАК Номенклатура,
Склады.Наименование КАК Склад,
Продажи.Количество
ИЗ
Справочник.Номенклатура КАК Номенклатура
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи КАК Продажи
ПО Номенклатура.Ссылка = Продажи.Номенклатура
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
ПО Продажи.Склад = Склады.Ссылка

Здесь заданы два соединения:

  1. Номенклатура соединяется с Продажи:

    Номенклатура.Ссылка = Продажи.Номенклатура
  2. Продажи соединяется со Склады:

    Продажи.Склад = Склады.Ссылка

Посмотрим на данных:

Номенклатура.СсылкаНоменклатура.Наименование
Н1Монитор
Н2Клавиатура
Продажи.НоменклатураПродажи.СкладПродажи.Количество
Н1С12
Н2С25
Склады.СсылкаСклады.Наименование
С1Основной
С2Резервный

Условие первого соединения связывает Номенклатура и Продажи по номенклатуре:

Н1 = Н1  →  Монитор    + С1 + 2
Н2 = Н2  →  Клавиатура + С2 + 5

Условие второго соединения связывает Продажи и Склады по складу:

С1 = С1  →  Основной
С2 = С2  →  Резервный

В результате запрос возвращает:

НоменклатураСкладКоличество
МониторОсновной2
КлавиатураРезервный5

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

На закладке «Связи» конструктора запроса для связанных таблиц доступны флажки «Все».

Этот флажок относится к виду соединения.

Флажки «Все»Формируемое соединение
Не установленыВнутреннее соединение
Установлен у левой таблицыЛевое внешнее соединение
Установлен у правой таблицыПравое внешнее соединение
Установлен у обеих таблицПолное соединение

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

Например:

ВЫБРАТЬ
Товары.Номенклатура,
Товары.Номенклатура.Наименование
ИЗ
РегистрСведений.Товары КАК Товары

Поле Номенклатура содержит ссылку, а конструкция:

Товары.Номенклатура.Наименование

обращается через нее к полю Наименование.

При выполнении такого запроса язык запросов может создать неявное соединение с таблицей, на которую ссылается поле:

Товары.Номенклатура
        │
        │ обращение через точку
        ↓
Номенклатура.Наименование

        ↓
в запросе возникает неявное соединение

Такое соединение не требуется вручную описывать конструкцией СОЕДИНЕНИЕ ... ПО.


Одно явно заданное соединение описывает связь двух источников по условию соединения, при этом в запросе может быть несколько таблиц и несколько соединений между ними. Флажок «Все» определяет вид соединения, а получение полей через точку может приводить к созданию неявного соединения.