Объединение в запросах в языке 1С 8.3, 8.2 (в примерах)

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

<<< Основы Группировка Условия Упорядочивание Функции
<<< Итоги Соединение Объединение Параметры

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

/// Как объединить две таблицы в одну в 1с 8.3, 8.2
 
&НаСервере
Процедура КакОбъединитьДвеТаблицыВОднуНаСервере()
 
    // Требования к объединяем таблицам:
    // - Одинаковое количество полей
 
    // Если соотв. друг другу поля в разных таблицах имеют
    // один и тот же тип, то результатирующее поле будет 
    // также иметь этот тип.
 
    // Если же соотв. друг другу поля в разных таблицах имеют
    // разный тип, то результатирующее поле будет иметь
    // составной тип.
 
    // Объединим таблицу Вкусы и Цвета в одну.
 
    Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |  Наименование
        |ИЗ
        |   Справочник.Вкусы
        |
        |ОБЪЕДИНИТЬ
        |
        |ВЫБРАТЬ
        |   Наименование
        |ИЗ
        |   Справочник.Цвета"
    );
 
    ВыполнитьЗапросИВывестиНаФорму(Запрос);
 
КонецПроцедуры
 
/// Как объединить больше двух таблиц в одну в 1с 8.3, 8.2
 
&НаСервере
Процедура КакОбъединитьБольшеДвухТаблицНаСервере()
 
    // Очень легко. Для примера объединим сразу 3 таблицы:
    // Контрагенты, Номенклатура и Города.
 
    Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |  Наименование
        |ИЗ
        |   Справочник.Контрагенты
        |
        |ОБЪЕДИНИТЬ
        |
        |ВЫБРАТЬ
        |   Наименование
        |ИЗ
        |   Справочник.Номенклатура
        |
        |ОБЪЕДИНИТЬ
        |
        |ВЫБРАТЬ
        |   Наименование
        |ИЗ
        |   Справочник.Города"        
    );    
 
    ВыполнитьЗапросИВывестиНаФорму(Запрос);
 
КонецПроцедуры
 
/// Как оставить дубликаты в результате
/// объединения таблиц в 1с 8.3, 8.2
 
&НаСервере
Процедура КакОставитьДубликатыВРезультатеОбъединенияНаСервере()
 
    // По умолчанию (при использовании ключевого слова ОБЪЕДИНИТЬ)
    // все дубликаты (образованные из разных запросов) из результата
    // объединения удаляются. Если нужно оставить все строки -
    // используем ОБЪЕДИНИТЬ ВСЕ
 
    // Для примера объединим таблицу саму с собой так, чтобы дубликаты,
    // которые при этом неизбежно образуются остались в результате.
 
    Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |   Наименование
        |ИЗ
        |   Справочник.Цвета
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |   Наименование
        |ИЗ
        |   Справочник.Цвета"
    );
 
    ВыполнитьЗапросИВывестиНаФорму(Запрос);
 
КонецПроцедуры
 
/// Как упорядочить объединение таблиц в 1с 8.3, 8.2
 
&НаСервере
Процедура КакУпорядочитьОбъединениеТаблицНаСервере()
 
    // Нет смысла применять упорядочивание к отдельным таблицам
    // до их объединения. Упорядочивать (группировать, подводить итоги)
    // имеет смысл только конечный результат объединения.
 
    Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |   Наименование
        |ИЗ
        |   Справочник.Номенклатура
        |
        |ОБЪЕДИНИТЬ
        |
        |ВЫБРАТЬ
        |   Наименование
        |ИЗ
        |   Справочник.Цвета
        |
        |УПОРЯДОЧИТЬ ПО
        |   Наименование УБЫВ"
    );
 
    ВыполнитьЗапросИВывестиНаФорму(Запрос);
 
КонецПроцедуры
 
 
/// Как объединить таблицы с разным количеством полей
/// в 1с 8.3, 8.2
 
&НаСервере
Процедура КакОбъединитьТаблицыСРазнымКоличествомПолейНаСервере()
 
    // Нужно дописать недостающие поля и присвоить им
    // какие-то значения.
 
    Запрос = Новый Запрос(
        "ВЫБРАТЬ
        |   Наименование,
        |   Калорийность
        |ИЗ
        |   Справочник.Номенклатура
        |
        |ОБЪЕДИНИТЬ
        |
        |ВЫБРАТЬ
        |   Наименование,
        |   0
        |ИЗ
        |   Справочник.Вкусы"
    );
 
    ВыполнитьЗапросИВывестиНаФорму(Запрос);
 
КонецПроцедуры
 
/// Скачать и выполнить эти примеры на компьютере

Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)

Объединение в запросах в языке 1С 8.3, 8.2 (в примерах)

<<< Основы Группировка Условия Упорядочивание Функции
<<< Итоги Соединение Объединение Параметры

С уважением, (преподаватель школы 1С программистов и разработчик обновлятора).



Владимир Милькин
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться: