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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

связи в запросе
Содержание Регистра Сведений Цены

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

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

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

Код запроса:

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

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

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

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

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

связи в 1с

Код запроса:

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

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

внутреннее соединение

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

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

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

Код запроса:

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

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

ЛЕВОЕ СОЕДИНЕНИЕ в запросе 1с

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

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

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

Код запроса:

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

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

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

ПРАВОЕ Соединение в запросах 1с

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

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

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

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

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

Результат

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

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

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

Ваш адрес email не будет опубликован.