Имя: Пароль:
1C
1С v8
Как правильно сделать соединение в запросе?
,
0 SherifSP
 
24.04.13
17:32
Нужно выбрать все заказы, которые не присутствуют в перемещениях

ВЫБРАТЬ
   ЗаказПокупателяТовары.Ссылка КАК Заказ,
   ЗаказПокупателяТовары.Ссылка.СкладГруппа,
   ЗаказПокупателяТовары.Ссылка.Контрагент,
   ЗаказПокупателяТовары.Ссылка.ВидОперации,
   ЗаказПокупателяТовары.Номенклатура
ИЗ
   Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
       ПО ЗаказПокупателяТовары.Ссылка <> ПеремещениеТоваров.ДокОснование
ГДЕ
   ЗаказПокупателяТовары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода

СГРУППИРОВАТЬ ПО
   ЗаказПокупателяТовары.Ссылка,
   ЗаказПокупателяТовары.Ссылка.СкладГруппа,
   ЗаказПокупателяТовары.Ссылка.Контрагент,
   ЗаказПокупателяТовары.Ссылка.ВидОперации,
   ЗаказПокупателяТовары.Номенклатура
1 Господин ПЖ
 
24.04.13
17:33
ПО ЗаказПокупателяТовары.Ссылка <> ПеремещениеТоваров.ДокОснование

гламурненько...
2 zladenuw
 
24.04.13
17:34
а может не соединение а вложенный запрос и
НЕ ЗаказПокупателяТовары.Ссылка В (Выбрать Т.ДокОсн Из Т КаК Т) где Т твоя таблица с перемещениями
3 SherifSP
 
24.04.13
17:36
(2) Сейчас попробую
4 zladenuw
 
24.04.13
17:40
если наглядней то как то так.
ВЫБРАТЬ
   СчетНаОплатуПокупателю.ДокументОснование
ПОМЕСТИТЬ Т
ИЗ
   Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
ГДЕ
   СчетНаОплатуПокупателю.Дата МЕЖДУ &Дата1 И &Дата2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   РеализацияТоваровУслуг.Ссылка
ИЗ
   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
   НЕ РеализацияТоваровУслуг.Ссылка В
               (ВЫБРАТЬ
                   Т.ДокументОснование
               ИЗ
                   Т КАК Т)
5 zak555
 
24.04.13
17:42
> ПеремещениеТоваров.ДокОснование

такой есть реквизит разве ?
6 SherifSP
 
24.04.13
17:42
(4) В отчете можно?
7 SherifSP
 
24.04.13
17:42
(5) Да
8 SherifSP
 
24.04.13
17:43
ВЫБРАТЬ
   ЗаказПокупателяТовары.Ссылка КАК Заказ,
   ЗаказПокупателяТовары.Ссылка.СкладГруппа,
   ЗаказПокупателяТовары.Ссылка.Контрагент,
   ЗаказПокупателяТовары.Ссылка.ВидОперации,
   ЗаказПокупателяТовары.Номенклатура
ИЗ
   Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары,
   (ВЫБРАТЬ
       ПеремещениеТоваров.ДокОснование КАК ДокОснование
   ИЗ
       Документ.ПеремещениеТоваров КАК ПеремещениеТоваров) КАК Перемещение
ГДЕ
   ЗаказПокупателяТовары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
   И (НЕ ЗаказПокупателяТовары.Ссылка В (Перемещение.ДокОснование))

СГРУППИРОВАТЬ ПО
   ЗаказПокупателяТовары.Ссылка,
   ЗаказПокупателяТовары.Ссылка.СкладГруппа,
   ЗаказПокупателяТовары.Ссылка.Контрагент,
   ЗаказПокупателяТовары.Ссылка.ВидОперации,
   ЗаказПокупателяТовары.Номенклатура
9 zak555
 
24.04.13
17:43
(4) счет на оплату делается на основании РТиУ ?
10 SherifSP
 
24.04.13
17:44
Но Вложенный запрос будит без отборов долго отрабатывать
11 zak555
 
24.04.13
17:44
(7) что за конфа ?
12 zak555
 
24.04.13
17:46
(8) левое соединение и есть НУЛЛ не нравится ?
13 SherifSP
 
24.04.13
18:32
(12) Пример кинь)
14 SherifSP
 
24.04.13
18:34
(11) УПП
15 SherifSP
 
24.04.13
18:36
(12) ИЗ
   Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
       ПО (ПеремещениеТоваров.ДокОснование ЕСТЬ NULL )
Так?
16 zak555
 
24.04.13
18:37
(15) типа
17 GANR
 
24.04.13
18:41
А чем такой вариант плох?

ВЫБРАТЬ
   Заказы.Ссылка
ИЗ
   Документ.Заказы КАК Заказы
ГДЕ
   НЕ Заказы.Ссылка В (ВЫБРАТЬ
               ВЫРАЗИТЬ(Перемещения.ДокОснование КАК Документ.Заказы)
           ИЗ
               Документ.Перемещения КАК Перемещения
           ГДЕ
               Перемещения.ДокОснование ССЫЛКА Документ.Заказы)
18 SherifSP
 
24.04.13
18:43
(17) Ничем, сейчас и такой проверю, какой быстрее отработает, такой и оставлю)
19 GANR
 
24.04.13
18:53
(18) Фишка в том, что Перемещения.ДокОснование ССЫЛКА Документ.Заказы и ВЫРАЗИТЬ(Перемещения.ДокОснование КАК Документ.Заказы) должны на MS SQL уровне убрать UNION ALL по всем типам ДокОснование.