[Специалист профессионал 1С 8.2 8.3 ]

17:20
Соединения в 1С язык запросов Левое ,Правое ,Полное,Внутреннее

Запросы в 1С

 Сегодня мы детально рассмотрим соединение запросов в 1С. Для соединения используется предложение СОЕДИНЕНИЕ…ПО / JOIN…ON.

 

В отличие от объединении запросов при соединении таблиц происходит «горизонтальное склеивание» полей, то есть сначала идут столбцы результата первого запроса, затем второго. Это выглядит примерно так:


Таблица1


Таблица2


Поле1


Поле2


Поле1


Поле2

       
 

При соединении таблиц необходимо условие, по которому и происходит соединение. При работе с пакетными запросами используется соединение. Существует четыре типа соединений: ВНУТРЕННЕЕ, ПОЛНОЕ, ЛЕВОЕ и ПРАВОЕ. В чем разница?

ВНУТРЕННЕЕ СОЕДИНЕНИЕ возьмет только, те данные, которые отвечают условию и в одной и в другой таблице. Например:

ВЫБРАТЬ
           *
ИЗ
           Документ.ПоступлениеТоваровУслуг.Товары КАК ДокПриход

           
           СОЕДИНЕНИЕ

           
           Документ.РеализацияТоваровУслуг.Товары КАК ДокРасход



           ПО  ДокПриход.Номенклатура = ДокРасход.Номенклатура    

Результат:

Ссылка

Номенклатура

Количество

Цена

Сумма

Ссылка1

Номенклатура1

Количество1

Цена1

Сумма1

Поступление ТМЗ и услуг 00000000083 от 31.05.2008 12:00:01

Бензин Аи-92

70,000

92,86

6 500,00

Реализация ТМЗ и услуг 00000000008 от 31.08.2008 12:00:06

Бензин Аи-92

15,950

105,42

1 681,45

Поступление ТМЗ и услуг 00000000083 от 31.05.2008 12:00:01

Бензин Аи-92

70,000

92,86

6 500,00

Реализация ТМЗ и услуг 00000000014 от 31.08.2008 12:00:19

Бензин Аи-92

1,146

105,42

120,81

 

Данные, которые не отвечали условию соединения были отброшены.

ПОЛНОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ включает записи из обеих таблиц независимо от того, есть ли данные в другой.

Например:

ВЫБРАТЬ
           *
ИЗ
           Документ.ПоступлениеТоваровУслуг.Товары КАК ДокПриход

           ПОЛНОЕ СОЕДИНЕНИЕ

           Документ.РеализацияТоваровУслуг.Товары КАК ДокРасход

ПО  ДокПриход.Номенклатура = ДокРасход.Номенклатура    

Результат:

Ссылка

Номенклатура

Количество

Цена

Сумма

Ссылка1

Номенклатура1

Количество1

Цена1

Сумма1

Поступление ТМЗ и услуг 00000000083 от 31.05.2008 12:00:01

Бензин Аи-92

70,000

92,86

6 500,00

Реализация ТМЗ и услуг 00000000008 от 31.08.2008 12:00:06

Бензин Аи-92

15,950

105,42

1 681,45

Поступление ТМЗ и услуг 00000000083 от 31.05.2008 12:00:01

Бензин Аи-92

70,000

92,86

6 500,00

Реализация ТМЗ и услуг 00000000014 от 31.08.2008 12:00:19

Бензин Аи-92

1,146

105,42

120,81

Поступление ТМЗ и услуг 00000000121 от 09.06.2008 12:00:02

Скоросшиватель пластиковый

50,000

67,00

3 350,00

<NULL>

<NULL>

<NULL>

<NULL>

<NULL>

<NULL>

<NULL>

<NULL>

<NULL>

<NULL>

Реализация ТМЗ и услуг 00000000016 от 27.11.2008 12:22:03

Модем ADSL ZyXEL

1,000

7 790,00

7 790,00

 

Соединение полное, данные из обеих таблиц попали все.

ЛЕВОЕ или ПРАВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ выведет данные, которые есть либо только в левой, либо в правой таблицах, в зависимости от типа соединения. Таблица считается левой/правой если в тексте запроса оно стоит слева/справа от словаСОЕДИНЕНИЕ.

Рассмотрим левое соединение:

ВЫБРАТЬ
           *
ИЗ
           Документ.ПоступлениеТоваровУслуг.Товары КАК ДокПриход

           
           ЛЕВОЕ СОЕДИНЕНИЕ

           
           Документ.РеализацияТоваровУслуг.Товары КАК ДокРасход



           ПО  ДокПриход.Номенклатура = ДокРасход.Номенклатура    

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

Ссылка

Номенклатура

Количество

Цена

Сумма

Ссылка1

Номенклатура1

Количество1

Цена1

Сумма1

Поступление ТМЗ и услуг 00000000083 от 31.05.2008 12:00:01

Бензин Аи-92

70,000

92,86

6 500,00

Реализация ТМЗ и услуг 00000000008 от 31.08.2008 12:00:06

Бензин Аи-92

15,950

105,42

1 681,45

Поступление ТМЗ и услуг 00000000083 от 31.05.2008 12:00:01

Бензин Аи-92

70,000

92,86

6 500,00

Реализация ТМЗ и услуг 00000000014 от 31.08.2008 12:00:19

Бензин Аи-92

1,146

105,42

120,81

Поступление ТМЗ и услуг 00000000121 от 09.06.2008 12:00:02

Скоросшиватель пластиковый

50,000

67,00

3 350,00

<NULL>

<NULL>

<NULL>

<NULL>

<NULL>

 

Как видим мы получили все данные из основной таблицы, т. е. ПоступлениеТоваровУслуг и только, те данные,
которые соответствуют условию для таблицы РеализацияТоваровУслуг.

Рассмотрим правое соединение:

ВЫБРАТЬ
           *
ИЗ
           Документ.ПоступлениеТоваровУслуг.Товары КАК ДокПриход

           
           ПРАВОЕ СОЕДИНЕНИЕ

           
           Документ.РеализацияТоваровУслуг.Товары КАК ДокРасход



           ПО  ДокПриход.Номенклатура = ДокРасход.Номенклатура    

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

Ссылка

Номенклатура

Количество

Цена

Сумма

Ссылка1

Номенклатура1

Количество1

Цена1

Сумма1

Поступление ТМЗ и услуг 00000000083 от 31.05.2008 12:00:01

Бензин Аи-92

70,000

92,86

6 500,00

Реализация ТМЗ и услуг 00000000008 от 31.08.2008 12:00:06

Бензин Аи-92

15,950

105,42

1 681,45

Поступление ТМЗ и услуг 00000000083 от 31.05.2008 12:00:01

Бензин Аи-92

70,000

92,86

6 500,00

Реализация ТМЗ и услуг 00000000014 от 31.08.2008 12:00:19

Бензин Аи-92

1,146

105,42

120,81

<NULL>

<NULL>

<NULL>

<NULL>

<NULL>

Реализация ТМЗ и услуг 00000000016 от 27.11.2008 12:22:03

Модем ADSL ZyXEL

1,000

7 790,00

7 790,00

 

Как видим мы получили все данные из таблицы РеализацияТоваровУслуг и только, те данные,
которые соответствуют условию для таблицы ПоступлениеТоваровУслуг.

 

Просмотров: 978 | Добавил: moshefoo | Теги: соединение внутреннее, соединение левое, соединения в запросах 1С, соединения в 1с, соединение полное | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: