/// Как сделать внутреннее соединение таблиц в 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-каналы с уроками программирования Сайты для обучения программированию Лекции и уроки