Профессия — 1С

Рукопашный бой Карташ

Категории

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

рубрики: Запросы | Дата: 1 Февраль, 2016

Рассмотрим объединение таблиц в запросах 1С8. В этом случае итоговая таблица формируется путем размещенеия записей одной или нескольких таблиц под записями исходной таблицы. Объединение таблиц осуществляется с помощью функции ОБЪЕДИНИТЬ языка запросов 1С.




Эта функция используется в двух вариантах: ОБЪЕДИНИТЬ и ОБЪЕДИНИТЬ ВСЕ. Различие между ними в том, что при использовании ОБЪЕДИНИТЬ ВСЕ в итоговую таблицу добавляются все записи из таблиц, которые мы объединяем, а при использовании ОБЪЕДИНИТЬ в случае если в таблицах есть идентичные строки, то в итоговой таблице будет только одна строка, т.е. дубли строк в этом случае удаляются.

Продемонстрирую это на примере.
Откроем консоль запросов и создадим небольшой запрос, который создаст нам элементарную таблицу из пары колонок и одной строки:


ВЫБРАТЬ
	"001" КАК Код,
	"professia1c.ru" КАК ИмяСайта

В результате выполнения запроса получаем вот такую таблицу

Код ИмяСайта
001 professia1c.ru

А теперь добавим в нашу таблицу еще пару строк


ВЫБРАТЬ
	"001" КАК Код,
	"professia1c.ru" КАК ИмяСайта

ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
	"002",
	"1c.ru"
	
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
	"001" КАК Код,
	"professia1c.ru" КАК ИмяСайта

Соответственно результат:

Код ИмяСайта
001 professia1c.ru
002 1c.ru
001 professia1c.ru

Здесь мы видим, что первая и третья строка дублируются.




А теперь заменим функцию ОБЪЕДИНИТЬ ВСЕ на ОБЪЕДИНИТЬ перед третьей строкой:


ВЫБРАТЬ
	"001" КАК Код,
	"professia1c.ru" КАК ИмяСайта

ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
	"002",
	"1c.ru"
	
ОБЪЕДИНИТЬ
ВЫБРАТЬ
	"001" КАК Код,
	"professia1c.ru" КАК ИмяСайта

В итоге видим, что дубли строк у нас исчезли

Код ИмяСайта
001 professia1c.ru
002 1c.ru

Теперь откроем последний запрос в конструкторе и перейдем на закладку Объединения/Псевдонимы, где как раз и отражается факт использования функции ОБЪЕДИНИТЬ.
ЗапросыОбъединение_ВЗ
В правой табличной части мы как раз видим три строчки с запросами, которые подлежат объединению, а флажок Без дубликатов отвечает за то будет ли при объединении использоваться функция ОБЪЕДИНИТЬ либо ОБЪЕДИНИТЬ ВСЕ.

Объединение таблиц с использованием конструктора запросов рассматривается в отдельной статье.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

   

2018г. Профессия — 1С. Обмен опытом по программированию в 1С