Имя: Пароль:
1C
1С v8
Порядок выполнения нескольких условии при соединении таблиц в запросе
0 lirt82
 
24.06.20
06:03
Коллеги, правильно ли я понимаю что если используется более одного соединения таблиц в запросе то второе соединение берет результат первого?
пример
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Обороты(&НачПериода, &КонПериода, Регистратор, ) КАК ТоварыНаСкладахОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары (в результате этого соединения получаем таблицу с 10-ю записями)

            ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураПолученный.ДокументыОснования КАК СчетФактураПолученныйДокументыОснования (и теперь во втором соединении 10 записей полученных в результате первого соединения связываем с таблицей СчетФактураПолученныйДокументыОснования)
            ПО ПоступлениеТоваровУслугТовары.Ссылка = СчетФактураПолученныйДокументыОснования.ДокументОснование
        ПО ТоварыНаСкладахОбороты.Регистратор = ПоступлениеТоваровУслугТовары.ПриходныйОрдер
1 lirt82
 
24.06.20
06:16
(0)  поправка при условии что во втором соединении берется результат первого соединения если таблица одинаковая, в примере это таблица Документ.ПоступлениеТоваровУслуг.Товары
2 Конструктор1С
 
24.06.20
07:12
(0) не пиши такие запросы

"правильно ли я понимаю что если используется более одного соединения таблиц в запросе то второе соединение берет результат первого?"

Для разных типов соединений работает по-разному
3 dmpl
 
24.06.20
07:12
(0) Решает оптимизатор SQL. Иногда вложенный запрос с отбором по условию из первой таблицы дает ускорение, иногда нет.
4 Вафель
 
24.06.20
07:26
нужно понимать что на физ уровне соединения бываю 3х видов
лукапс хэш мердж
последний самый эффективный но требует индекса
5 bolder
 
24.06.20
07:34
(0) Так как второе соединение имеет связь только с результатами первого - то очевидно будет такой результат.