Имя: Пароль:
1C
 
запутался с простым запросом. помогите разобраться в чем затык
0 rchervak
 
20.11.15
09:18
всем привет.

вроде бы элементарный запрос, но не хочет отрабатывать.

Задача выбрать записи из таблицы Общ_ФондОстатки.Комната только те которых нет в временной таблице ВТ_обход.


ВЫБРАТЬ
    ОбходКомнатСрезПоследних.комната
ПОМЕСТИТЬ ВТ_обход
ИЗ
    РегистрСведений.ОбходКомнат.СрезПоследних(&Период, ) КАК ОбходКомнатСрезПоследних

СГРУППИРОВАТЬ ПО
    ОбходКомнатСрезПоследних.комната
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Общ_ФондОстатки.Комната КАК Комната,
    Общ_ФондОстатки.Комната.Владелец
ИЗ
    РегистрНакопления.Общ_Фонд.Остатки(&Период, Корпус = &Корпус) КАК Общ_ФондОстатки,
    ВТ_обход КАК ВТ_обход
ГДЕ
    не Общ_ФондОстатки.Комната В (ВТ_обход.комната)

СГРУППИРОВАТЬ ПО
    Общ_ФондОстатки.Комната,
    Общ_ФондОстатки.Комната.Владелец

УПОРЯДОЧИТЬ ПО
    Комната


"не Общ_ФондОстатки.Комната В (ВТ_обход.комната)" - никак не хочет отрабатывать и выводит тупо все записи

если сделать
"Общ_ФондОстатки.Комната В (ВТ_обход.комната)" - то отрабатывает правильно, и выбирает только те "комнаты" - которые есть во вр. таблице.

в чем может быть затык?
1 Горогуля
 
20.11.15
09:22
из основная левое вт где вт нулл
2 asady
 
20.11.15
09:26
ВЫБРАТЬ РАЗЛИЧНЫЕ
    Общ_ФондОстатки.Комната КАК Комната,
    Общ_ФондОстатки.Комната.Владелец
ИЗ
    РегистрНакопления.Общ_Фонд.Остатки(&Период, Корпус = &Корпус) КАК Общ_ФондОстатки

ГДЕ
    не Общ_ФондОстатки.Комната В (выбрать вт.комната из ВТ_обход как вт)


УПОРЯДОЧИТЬ ПО
    Комната
3 aleks_default
 
20.11.15
09:27
Убери условие во втором пакете

ГДЕ
    не Общ_ФондОстатки.Комната В (ВТ_обход.комната)

и увидишь в чем проблема
4 rchervak
 
20.11.15
09:42
(2) да так все правильно отрабатывает. спасибо.

долго допирал, прочитал статью про "Выбрать в условии запроса"

все правильно.
5 aleks_default
 
20.11.15
09:45
(4)почитай еще про декартово произведение
6 su_mai
 
20.11.15
10:16
(0) Навскидку так:
ВЫБРАТЬ
    ОбходКомнатСрезПоследних.комната
ПОМЕСТИТЬ ВТ_обход
ИЗ
    РегистрСведений.ОбходКомнат.СрезПоследних(&Период, ) КАК ОбходКомнатСрезПоследних
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Общ_ФондОстатки.Комната КАК Комната,
    Общ_ФондОстатки.Комната.Владелец
ИЗ
    РегистрНакопления.Общ_Фонд.Остатки(&Период, Корпус = &Корпус И Комната НЕ В(ВЫБРАТЬ ВложенныЗапрос.Комната ИЗ ВТ_обход КАК ВложенныЗапрос)) КАК Общ_ФондОстатки,

УПОРЯДОЧИТЬ ПО
    Комната

не отлаживал и не буду :)