Профессия — 1С » Соединение таблиц в конструкторе запросов 1С

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

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

Категории

-->

Соединение таблиц в конструкторе запросов 1С

рубрики: Конструктор запросов | Дата: 5 ноября, 2016

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

КодТовара Наименование
001 Яблоки
002 Апельсины
003 Мандарины

и страной-производителем

КодТовара Страна
001 Россия
002 Турция
003 Марокко

Рассмотрим как можно соединить эти две таблицы по полю КодТовара с использованием
конструктора запросов (код по формированию временных таблиц для примера приводить
не буду. Его можно взять по вышеуказанной ссылке).

Открываем окно конструктора, встаем на закладку «Таблицы и поля», в раздел
«Таблицы» выбираем обе наши таблицы, а в раздел «Поля»
те поля из обоих таблиц, которые мы хотим видеть в результате выполнения запроса.

Переходим на закладку «Связи». Добавляем новую строку. В поле Таблица1
из выпадающего списка выбираем таблицу с товарами, а в поле Таблица2 Таблицу
со странами.
Для Таблицы1 устанавливаем флажок Все. Для
Tаблицы2 этот флажок не ставим. Это означает, что из Таблицы1
будут выбраны все записи, а из Таблицы2 только те для которых выполняется
условие соединения, то есть при такой комбинации флажков мы получаем
ЛЕВОЕ СОЕДИНЕНИЕ. Далее необходимо заполнить Условие связи.
Здесь мы выбираем поля таблиц из выпадающих списков и знак сравнения также из выпадающего
списка.

В результате такого соединения получим следующий текст запроса:


ВЫБРАТЬ
    ВТ_Товар.КодТовара,
    ВТ_Товар.Наименование,
    ВТ_Страна.Страна
ИЗ
    ВТ_Товар КАК ВТ_Товар
	ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Страна КАК ВТ_Страна
	ПО ВТ_Товар.КодТовара = ВТ_Страна.КодТовара

Теперь рассмотрим подробнее некоторые моменты.
Давайте попробуем поменять местами флажок Все.

Казалось бы в итоге должно получиться ПРАВОЕ СОЕДИНЕНИЕ, но если мы
посмотрим на текст запроса, сформированный конструктором, то увидим, что таблицы
поменялись местами, а соединение все равно осталось левым:


ВЫБРАТЬ
    ВТ_Товар.КодТовара,
    ВТ_Товар.Наименование,
    ВТ_Страна.Страна
ИЗ
    ВТ_Страна КАК ВТ_Страна
	ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Товар КАК ВТ_Товар
	ПО ВТ_Товар.КодТовара = ВТ_Страна.КодТовара

Посмотрим, что будет, если снимем оба флажка


В итоге получаем внутреннее соединение.


ВЫБРАТЬ
    ВТ_Товар.КодТовара,
    ВТ_Товар.Наименование,
    ВТ_Страна.Страна
ИЗ
    ВТ_Товар КАК ВТ_Товар
	ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Страна КАК ВТ_Страна
	ПО ВТ_Товар.КодТовара = ВТ_Страна.КодТовара

И наконец, если установлены оба флажка
kz_soedinenietablits_polnoe_vz
получаем полное соединение


ВЫБРАТЬ
    ВТ_Товар.КодТовара,
    ВТ_Товар.Наименование,
    ВТ_Страна.Страна
ИЗ
    ВТ_Товар КАК ВТ_Товар
	ПОЛНОЕ СОЕДИНЕНИЕ ВТ_Страна КАК ВТ_Страна
	ПО ВТ_Товар.КодТовара = ВТ_Страна.КодТовара

Можно задавать несколько строк на закладке Связи. В этом случае несколько
строк соединяются по условию И. Причем строки не обязательно
каждый раз вбивать заново. Их можно копировать с использованием клавиши F9.
А в новой строке менять только условие соединения. Это существенно ускоряет разработку.
Также в условии связи необязательно использовать только предопределенные поля из
выпадающих списков. Можно использовать произвольное выражение, удовлентворяющее
языку запросов 1С. Для этого необходимо установить флажок Произвольное
и вписать условие непосредственно в поле, либо открыть вспомогательное окно, в
котором можно воспользоваться шаблонами с функциями языка запросов.
kz_soedinenietablits_neskolkosvyazey_vz
Конечно на практике встречаются гораздо более сложные запросы, где соединяются
несколько таблиц с разнообразными связями между собой. Но в конструкторе запросов
можно воспроизвести соединения любой сложности.

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

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

   

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