Соединение в запросах в языке 1С 8.3, 8.2 (в примерах)
Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
2017-12-18T22:45:25+00:00<<< Основы Группировка Условия Упорядочивание Функции
<<< Итоги Соединение Объединение Параметры
См. урок для начинающих по соединениям языка запросов
Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)
/// Как сделать внутреннее соединение таблиц в 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С 8.3, 8.2 (в примерах)
<<< Основы Группировка Условия Упорядочивание Функции
<<< Итоги Соединение Объединение Параметры