Соединение в запросах в языке 1С 8.3

Jul 08, 2022 17:17


/// Как сделать внутреннее соединение таблиц в 1с 8.3, 8.2

&НаСервере
Процедура ВнутреннееСоединениеТаблиц()

// Соединения используются, чтобы сопоставить (соединить)
// строки одной таблицы строкам другой таблицы
// по определенному признаку.

// ------------- --------------------------------
// |Люди | | Характеристики |
// ------------- ---------------------------------
// |ИМЯ | | ИМЯ ВОЗРАСТ |
// ------------- ---------------------------------
// |Алена | | Алена 21 |
// |Алефтина | | Алефтина 18 |
// |Владимир | | Павел 25 |
// |Владислав | | Петр 30 |
// | | | Порфирий 50 |
// ------------- ---------------------------------

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

// ИмяИзТаблицы1 ИмяИзТаблицы2 ВозрастИзТаблицы2
// Алена Алена 21
// Алефтина Алефтина 18

Запрос = Новый Запрос(
"ВЫБРАТЬ
| Люди.Наименование КАК ИмяИзТаблицы1,
| Характеристики.Наименование КАК ИмяИзТаблицы2,
| Характеристики.Возраст КАК ВозрастИзТаблицы2
|ИЗ
| Справочник.Люди КАК Люди
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Справочник.Характеристики КАК Характеристики
| ПО
| Люди.Наименование = Характеристики.Наименование"
);

ВыполнитьЗапросИВывестиНаФорму(Запрос);

КонецПроцедуры


/// Как сделать левое внешнее соединение таблиц в 1с 8.3, 8.2

&НаСервере
Процедура ЛевоеСоединениеТаблиц()

// Левое соединение - это внутреннее
// соединение + строки из левой таблицы, для которых не
// найдены соответствия.

// ------------- --------------------------------
// |Люди | | Характеристики |
// ------------- ---------------------------------
// |ИМЯ | | ИМЯ ВОЗРАСТ |
// ------------- ---------------------------------
// |Алена | | Алена 21 |
// |Алефтина | | Алефтина 18 |
// |Владимир | | Павел 25 |
// |Владислав | | Петр 30 |
// | | | Порфирий 50 |
// ------------- ---------------------------------

// Результат левого внешнего соединения по имени:

// ИмяИзТаблицы1 ИмяИзТаблицы2 ВозрастИзТаблицы2
// Алена Алена 21
// Алефтина Алефтина 18
// Владимир NULL NULL
// Владислав NULL NULL

Запрос = Новый Запрос(
"ВЫБРАТЬ
| Люди.Наименование КАК ИмяИзТаблицы1,
| Характеристики.Наименование КАК ИмяИзТаблицы2,
| Характеристики.Возраст КАК ВозрастИзТаблицы2
|ИЗ
| Справочник.Люди КАК Люди
| ЛЕВОЕ СОЕДИНЕНИЕ
| Справочник.Характеристики КАК Характеристики
| ПО
| Люди.Наименование = Характеристики.Наименование"
);

ВыполнитьЗапросИВывестиНаФорму(Запрос);

КонецПроцедуры

/// Как сделать правое внешнее соединение таблиц в 1с 8.3, 8.2

&НаСервере
Процедура ПравоеСоединениеТаблиц()

// Правое соединение - это внутреннее
// соединение + строки из правой таблицы, для которых
// не найдены соответствия.

// ------------- --------------------------------
// |Люди | | Характеристики |
// ------------- ---------------------------------
// |ИМЯ | | ИМЯ ВОЗРАСТ |
// ------------- ---------------------------------
// |Алена | | Алена 21 |
// |Алефтина | | Алефтина 18 |
// |Владимир | | Павел 25 |
// |Владислав | | Петр 30 |
// | | | Порфирий 50 |
// ------------- ---------------------------------

// Результат правого внешнего соединения по имени:

// ИмяИзТаблицы1 ИмяИзТаблицы2 ВозрастИзТаблицы2
// Алена Алена 21
// Алефтина Алефтина 18
// NULL Павел 25
// NULL Петр 30
// NULL Порфирий 50

Запрос = Новый Запрос(
"ВЫБРАТЬ
| Люди.Наименование КАК ИмяИзТаблицы1,
| Характеристики.Наименование КАК ИмяИзТаблицы2,
| Характеристики.Возраст КАК ВозрастИзТаблицы2
|ИЗ
| Справочник.Люди КАК Люди
| ПРАВОЕ СОЕДИНЕНИЕ
| Справочник.Характеристики КАК Характеристики
| ПО
| Люди.Наименование = Характеристики.Наименование"
);

ВыполнитьЗапросИВывестиНаФорму(Запрос);

КонецПроцедуры

/// Как сделать полное внешнее соединение таблиц в 1с 8.3, 8.2

&НаСервере
Процедура ПолноеСоединениеТаблиц()

// Полное соединение - это левое соединение + правое соединение.

// ------------- --------------------------------
// |Люди | | Характеристики |
// ------------- ---------------------------------
// |ИМЯ | | ИМЯ ВОЗРАСТ |
// ------------- ---------------------------------
// |Алена | | Алена 21 |
// |Алефтина | | Алефтина 18 |
// |Владимир | | Павел 25 |
// |Владислав | | Петр 30 |
// | | | Порфирий 50 |
// ------------- ---------------------------------

// Результат полного внешнего соединения по имени:

// ИмяИзТаблицы1 ИмяИзТаблицы2 ВозрастИзТаблицы2
// Алена Алена 21
// Алефтина Алефтина 18
// Владимир NULL NULL
// Владислав NULL NULL
// NULL Павел 25
// NULL Петр 30
// NULL Порфирий 50

Запрос = Новый Запрос(
" ВЫБРАТЬ
| Люди.Наименование КАК ИмяИзТаблицы1,
| Характеристики.Наименование КАК ИмяИзТаблицы2,
| Характеристики.Возраст КАК ВозрастИзТаблицы2
|ИЗ
| Справочник.Люди КАК Люди
| ПОЛНОЕ СОЕДИНЕНИЕ
| Справочник.Характеристики КАК Характеристики
| ПО
|Люди.Наименование = Характеристики.Наименование"
);

ВыполнитьЗапросИВывестиНаФорму(Запрос);

КонецПроцедуры

/// Как сделать перекрестное соединение таблиц в 1с 8.3, 8.2

&НаСервере
Процедура ПерекрестноеСоединениеТаблиц()

// ------------- --------------------------------
// |Люди | | Характеристики |
// ------------- ---------------------------------
// |ИМЯ | | ИМЯ ВОЗРАСТ |
// ------------- ---------------------------------
// |Алена | | Алена 21 |
// |Алефтина | | Алефтина 18 |
// |Владимир | | Павел 25 |
// |Владислав | | Петр 30 |
// | | | Порфирий 50 |
// ------------- ---------------------------------

// Результат перекрестного соединения:

// ИмяИзТаблицы1 ИмяИзТаблицы2 ВозрастИзТаблицы2
// Алена Алена 21
// Алена Алефтина 18
// Алена Павел 25
// Алена Петр 30
// Алена Порфирий 50
// Алефтина Алена 21
// Алефтина Алефтина 18
// Алефтина Павел 25
// Алефтина Петр 30
// Алефтина Порфирий 50
// Владимир Алена 21
// Владимир Алефтина 18
// Владимир Павел 25
// Владимир Петр 30
// Владимир Порфирий 50
// Владислав Алена 21
// Владислав Алефтина 18
// Владислав Павел 25
// Владислав Петр 30
// Владислав Порфирий 50

Запрос = Новый Запрос(
"ВЫБРАТЬ
| Люди.Наименование КАК ИмяИзТаблицы1,
| Характеристики.Наименование КАК ИмяИзТаблицы2,
| Характеристики.Возраст КАК ВозрастИзТаблицы2
|ИЗ
| Справочник.Люди КАК Люди,
| Справочник.Характеристики КАК Характеристики"
);

ВыполнитьЗапросИВывестиНаФорму(Запрос);

КонецПроцедуры

Смотрите также:
Электронный учебник по программированию в 1С
Рекомендации по изучению программирования 1С с нуля
Игра "Кто хочет стать миллионером?" с вопросами на определенную тематику (язык программирования JavaScript, английские, немецкие, французские, испанские, португальские, ни­дер­ландские, итальянские слова, электробезопасность, промышленная безопасность, бокс и т.п.), написанная на 1С
Программирование в 1С 8.3 с нуля - краткий самоучитель
Комплексная подготовка программистов 1С:Предприятие 8.2
Сайты с уроками программирования и со справочниками
Youtube-каналы с уроками программирования
Сайты для обучения программированию
Лекции и уроки

программирование

Previous post Next post
Up