Соединение таблиц в запросе 1с может быть нескольких видов: ВНУТРЕННЕЕ, ЛЕВОЕ ,ПРАВОЕ, ПОЛНОЕ СОЕДИНЕНИЕ за котором указывается ПО.
Виды соединений таблиц
Таким образом, при описании связи таблиц к тексту запроса конструктор добавляет
ключевые слова ВНУТРЕННЕЕ / ЛЕВОЕ / ПРАВОЕ / ПОЛНОЕ СОЕДИНЕНИЕ… ПО.
В случае, если в запросе участвуют несколько таблиц, в окне конструктора запроса
становится доступной закладка Связи, на которой задается тип связи и условие связи
между таблицами. В тех случаях, когда это возможно, платформа сама устанавливает
связь между источниками запроса по ссылочным полям.
Рассмотрим различные виды связей на примере 2-х регистров:
- Регистра сведений Цены;
- Регистра накопления Остатки Номенклатуры.
Объект Регистр сведений Цены имеет следующие Измерения и Ресурсы:
Регистр накопления ОстаткиНоменклатуры имеет следующие Измерения и Ресурсы:
Заполним регистры следующим образом:
Регистр накопления ОстакиНоменклатуры содержит данные.
Регистр сведений Цены выглядит так.
Безусловное(декартово произведение)
Таблицы и поля в конструкторе запросов настроим как на рисунке ниже. Связи отсутствуют.
Код запроса:
ВЫБРАТЬ
ЦеныСрезПоследних.Номенклатура КАК Номенклатура,
ЦеныСрезПоследних.Цена КАК Цена,
ОстаткиНоменклатуры.Количество КАК Количество
ИЗ
РегистрСведений.Цены.СрезПоследних КАК ЦеныСрезПоследних,
РегистрНакопления.ОстаткиНоменклатуры КАК ОстаткиНоменклатуры
Результат выполнения запроса сохраним в отчет. Подробно о создании отчетов можно посмотреть в бесплатном уроке Отчеты в 1с : Предприятии. Ссылка для скачивания отчета файл.
Внутреннее соединение таблиц в запросе 1с
Таблицы и поля полностью соответствуют предыдущему заданию. Добавиться связи на вкладке связи
Код запроса:
ВЫБРАТЬ
ЦеныСрезПоследних.Номенклатура КАК Номенклатура,
ЦеныСрезПоследних.Цена КАК Цена,
ОстаткиНоменклатуры.Количество КАК Количество
ИЗ
РегистрСведений.Цены.СрезПоследних КАК ЦеныСрезПоследних
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры КАК ОстаткиНоменклатуры
ПО ЦеныСрезПоследних.Номенклатура = ОстаткиНоменклатуры.Номенклатура
Результат выполнения запроса сохраним в отчет. Ссылка для скачивания отчета файл.
Левое соединение таблиц в запросе 1с
Таблицы и поля полностью соответствуют предыдущему и первому заданию. Изменим связи на вкладке связи
Код запроса:
ВЫБРАТЬ
ЦеныСрезПоследних.Номенклатура КАК Номенклатура,
ЦеныСрезПоследних.Цена КАК Цена,
ОстаткиНоменклатуры.Количество КАК Количество
ИЗ
РегистрСведений.Цены.СрезПоследних КАК ЦеныСрезПоследних
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры КАК ОстаткиНоменклатуры
ПО ЦеныСрезПоследних.Номенклатура = ОстаткиНоменклатуры.Номенклатура
Результат выполнения запроса сохраним в отчет. Ссылка для скачивания отчета файл.
Правое соединение таблиц в запросе
Таблицы и поля в данном случае полностью соответствуют предыдущему и первому заданию. Изменим связи на вкладке связи
Код запроса:
ВЫБРАТЬ
ЦеныСрезПоследних.Номенклатура КАК Номенклатура,
ЦеныСрезПоследних.Цена КАК Цена,
ОстаткиНоменклатуры.Количество КАК Количество
ИЗ
РегистрНакопления.ОстаткиНоменклатуры КАК ОстаткиНоменклатуры
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних КАК ЦеныСрезПоследних
ПО ЦеныСрезПоследних.Номенклатура = ОстаткиНоменклатуры.Номенклатура
Замечание: При установки галочки в конструкторе запроса соединение остается левым но меняется порядок полей. Также можно вручную заменить слово ЛЕВОЕ на ПРАВОЕ в тексте запроса.
Результат выполнения запроса сохраним в отчет. Ссылка для скачивания отчета файл.
Полное соединение таблиц в запросе 1с
Таблицы и поля в данном случае полностью соответствуют предыдущему и первому заданию. Изменим связи на вкладке связи
Код запроса измениться вместо ПРАВОЕ соединение будет ПОЛНОЕ.
ВЫБРАТЬ
ЦеныСрезПоследних.Номенклатура КАК Номенклатура,
ЦеныСрезПоследних.Цена КАК Цена,
ОстаткиНоменклатуры.Количество КАК Количество
ИЗ
РегистрСведений.Цены.СрезПоследних КАК ЦеныСрезПоследних
ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры КАК ОстаткиНоменклатуры
ПО ЦеныСрезПоследних.Номенклатура = ОстаткиНоменклатуры.Номенклатура
Результат
Соединение таблиц в запросе используется при работе с двумя и более таблицами. Имеется 5 видов соединений. Нами рассмотрен пример использования всех возможных видов соединений.