Записки программиста 1с

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

Соединение таблиц в запросе 1с может быть нескольких видов: ВНУТРЕННЕЕ, ЛЕВОЕ ,ПРАВОЕ, ПОЛНОЕ СОЕДИНЕНИЕ за котором указывается ПО.

Виды соединений таблиц

соединение таблиц в запросе 1с
Виды соединений таблиц
соединение таблиц в запросе 1с

Таким образом, при описании связи таблиц к тексту запроса конструктор добавляет
ключевые слова ВНУТРЕННЕЕ / ЛЕВОЕ / ПРАВОЕ / ПОЛНОЕ СОЕДИНЕНИЕ… ПО.

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

Рассмотрим различные виды связей на примере 2-х регистров:

  1. Регистра сведений Цены;
  2. Регистра накопления Остатки Номенклатуры.

Объект Регистр сведений Цены имеет следующие Измерения и Ресурсы:

соединение таблиц в запросе 1с
Структура Регистр Сведений Цены

Регистр накопления ОстаткиНоменклатуры имеет следующие Измерения и Ресурсы:

соединение таблиц в запросе 1с
Структура Регистра Накопления Остатки Номенклатуры

Заполним регистры следующим образом:

Регистр накопления ОстакиНоменклатуры содержит данные.

соединение таблиц в запросе 1с
Содержание регистра Накопления Остатки Номенклатуры

Регистр сведений Цены выглядит так.

соединение таблиц в запросе 1с
Содержание Регистра Сведений Цены

Безусловное(декартово произведение)

Таблицы и поля в конструкторе запросов настроим как на рисунке ниже. Связи отсутствуют.

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

Код запроса:

ВЫБРАТЬ
	ЦеныСрезПоследних.Номенклатура КАК Номенклатура,
	ЦеныСрезПоследних.Цена КАК Цена,
	ОстаткиНоменклатуры.Количество КАК Количество
ИЗ
	РегистрСведений.Цены.СрезПоследних КАК ЦеныСрезПоследних,
	РегистрНакопления.ОстаткиНоменклатуры КАК ОстаткиНоменклатуры

Результат выполнения запроса сохраним в отчет. Подробно о создании отчетов можно посмотреть в бесплатном уроке Отчеты в 1с : Предприятии. Ссылка для скачивания отчета файл.

соединение таблиц в запросе 1с
Результат Безусловного соединения таблиц

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

Таблицы и поля полностью соответствуют предыдущему заданию. Добавиться связи на вкладке связи

Внутреннее соединение в запросе 1с
Внутреннее соединение в запросе 1с

Код запроса:

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

Результат выполнения запроса сохраним в отчет. Ссылка для скачивания отчета файл.

Внутреннее соединение в запросе 1с
Результат внутреннего соединения в запросе 1с

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

Таблицы и поля полностью соответствуют предыдущему и первому заданию. Изменим связи на вкладке связи

Левое соединение в запросе 1с
Левое соединение в запросе 1с

Код запроса:

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

Результат выполнения запроса сохраним в отчет. Ссылка для скачивания отчета файл.

Результат левого соединения в запросе 1с
Результат левого соединения в запросе 1с

Правое соединение таблиц в запросе

Таблицы и поля в данном случае полностью соответствуют предыдущему и первому заданию. Изменим связи на вкладке связи

Правое соединение таблиц в запросе 1c
Правое соединение таблиц

Код запроса:

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

Замечание: При установки галочки в конструкторе запроса соединение остается левым но меняется порядок полей. Также можно вручную заменить слово ЛЕВОЕ на ПРАВОЕ в тексте запроса.

Результат выполнения запроса сохраним в отчет. Ссылка для скачивания отчета файл.

правое соединение в запросе 1с
Результат правого соединения в запросе 1с

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

Таблицы и поля в данном случае полностью соответствуют предыдущему и первому заданию. Изменим связи на вкладке связи

Полное соединение в запросе 1с
Полное соединение в запросе 1с

Код запроса измениться вместо ПРАВОЕ соединение будет ПОЛНОЕ.

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

Результат

полное соединение в запросе 1с
Результат полного соединения в запросе 1с

Соединение таблиц в запросе используется при работе с двумя и более таблицами. Имеется 5 видов соединений. Нами рассмотрен пример использования всех возможных видов соединений.

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

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