Имя: Пароль:
1C
1С v8
запрос выбор из временной таблице по условию - в(выбрать)
,
0 prtx
 
18.09.18
16:52
товарищи. мой котелок сейчас взорвется. подскажите в чем проблема, чего я не знаю о запросах.

первый запрос не работает, а второй работает, с фигали такое происходит? это дело принципа выяснить сие чудо.

запрос 1 ---
ВЫБРАТЬ
    Склады.Ссылка КАК Ссылка
ПОМЕСТИТЬ Склады
ИЗ
    Справочник.Склады КАК Склады
ГДЕ
    Склады.Ссылка В(&Склады)

ИНДЕКСИРОВАТЬ ПО
    Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТоварыНаПеремещение.СкладОтправитель КАК СкладОтправитель,
    ТоварыНаПеремещение.СкладПолучатель КАК СкладПолучатель,
    ТоварыНаПеремещение.Характеристика КАК Характеристика,
    ТоварыНаПеремещение.Количество
ИЗ
    &ТоварыНаПеремещение КАК ТоварыНаПеремещение
ГДЕ
    ТоварыНаПеремещение.Номенклатура = &Номенклатура
    И ТоварыНаПеремещение.СкладОтправитель В
            (ВЫБРАТЬ
                Склады.Ссылка
            ИЗ
                Склады КАК Склады)
    И ТоварыНаПеремещение.СкладПолучатель В
            (ВЫБРАТЬ
                Склады.Ссылка
            ИЗ
                Склады КАК Склады)

запрос 2 ---
ВЫБРАТЬ
    Склады.Ссылка КАК Ссылка
ПОМЕСТИТЬ Склады
ИЗ
    Справочник.Склады КАК Склады
ГДЕ
    Склады.Ссылка В(&Склады)

ИНДЕКСИРОВАТЬ ПО
    Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТоварыНаПеремещение.СкладОтправитель КАК СкладОтправитель,
    ТоварыНаПеремещение.СкладПолучатель КАК СкладПолучатель,
    ТоварыНаПеремещение.Характеристика КАК Характеристика,
    ТоварыНаПеремещение.Количество
ИЗ
    &ТоварыНаПеремещение КАК ТоварыНаПеремещение
ГДЕ
    ТоварыНаПеремещение.Номенклатура = &Номенклатура
    И ТоварыНаПеремещение.СкладОтправитель В(&Склады)
    И ТоварыНаПеремещение.СкладПолучатель В(&Склады)

вот вы мне объясните какого черта из в запросе1 из второй таблицы выбирается кукиш, а в запросе2 из второй таблицы выбираются нужные записи? у меня уже лыжи вообще не едут...

всем спасибо.
1 prtx
 
18.09.18
16:53
и ненужно мне писать, что во втором запросе не нужна первая часть, я и сам знаю, это для наглядности.
2 prtx
 
18.09.18
16:58
(0) если этот метод -
(ВЫБРАТЬ Склады.Ссылка ИЗ Склады КАК Склады)
применять допустим при выборе остатков из регистра, то все отрабатывает, а если этот же метод применять к выборке из таблицы которая передается параметром, то все накрывается медным тазом.
3 AllJoke
 
18.09.18
17:07
Таблицу параметром - во временную, а потом условие накладывать.

Типа...
ВЫБРАТЬ
    ТоварыНаПеремещение.СкладОтправитель КАК СкладОтправитель,
    ТоварыНаПеремещение.СкладПолучатель КАК СкладПолучатель,
    ТоварыНаПеремещение.Характеристика КАК Характеристика,
    ТоварыНаПеремещение.Количество
поместить ВТ_ТоварыПеремещение
ИЗ
    &ТоварыНаПеремещение КАК ТоварыНаПеремещение;

/////
Выбрать ... ИЗ ВТ_ТоварыПеремещение Где ....
4 AllJoke
 
18.09.18
17:15
ВЫБРАТЬ
    Склады.Ссылка КАК Ссылка
ПОМЕСТИТЬ Склады
ИЗ
    Справочник.Склады КАК Склады
ГДЕ
    Склады.Ссылка В(&Склады)

ИНДЕКСИРОВАТЬ ПО
    Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПеремещениеТоваровТовары.Ссылка КАК Ссылка,
    ПеремещениеТоваровТовары.Номенклатура КАК Номенклатура,
    ПеремещениеТоваровТовары.Количество КАК Количество,
    ПеремещениеТоваровТовары.Ссылка.СкладОтправитель КАК СкладОтправитель,
    ПеремещениеТоваровТовары.Ссылка.СкладПолучатель КАК СкладПолучатель
ИЗ
    Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
ГДЕ
    ПеремещениеТоваровТовары.Ссылка = &Ссылка
    И ПеремещениеТоваровТовары.Ссылка.СкладОтправитель В
            (ВЫБРАТЬ
                Склады.Ссылка
            ИЗ
                Склады КАК Склады)
    И ПеремещениеТоваровТовары.Ссылка.СкладОтправитель В
            (ВЫБРАТЬ
                Склады.Ссылка
            ИЗ
                Склады КАК Склады)
    И ПеремещениеТоваровТовары.Номенклатура = &Номенклатура


вот это работает.
Правда тут условие на ссылку.
5 prtx
 
18.09.18
17:19
в этой части
ПеремещениеТоваровТовары.Ссылка.СкладОтправитель
передается типа ссылка на документ или т.п. правильно?
6 prtx
 
18.09.18
17:21
(3) это выявлено методом "проб и ошибок" или есть документация? это я к тому - в моей ситуации не работает только условие типа - в(выбрать), а условие типа - ТоварыНаПеремещение.Номенклатура = &Номенклатура, нормально отрабатывает?
7 prtx
 
18.09.18
17:21
(6) в таких случаях
8 AllJoke
 
18.09.18
17:21
(5) - ПеремещениеТоваровТовары.Ссылка = &Ссылка
9 AllJoke
 
18.09.18
17:22
(6) - ТоварыНаПеремещение.Номенклатура = &Номенклатура, нормально отрабатывает? - Да.
10 AllJoke
 
18.09.18
17:25
Моё предположение, когда берем поле из Таблицы, как параметр, запрос её не может привести к типу "Справочник.Склад", и поэтому в "запрос1" условие "выбрать СкладОтпр в......" не отрабатывает.
А в "запрос2" ты явно указываешь тип поля.
Но это просто предположение.

Повторюсь, попробовать выборку из Таблицы-параметр внести во временную и уже с временной накладывать условия.
11 Вафель
 
18.09.18
17:26
а смысл массив складов во временную класть?
12 prtx
 
18.09.18
17:26
(9) спасибо. буду пробывать.
как говориться - таких приколов я еще не видел!
13 Вафель
 
18.09.18
17:26
...
ПеремещениеТоваровТовары.Ссылка.СкладОтправитель В (&Склады)
14 AllJoke
 
18.09.18
17:27
(11) автору так хочется видать.
15 prtx
 
18.09.18
17:28
(11) для красоты. потом можно в этой же временной таблице наложить какие-то условия, и при этом не трогать остальные части запроса... как-то так.
16 prtx
 
18.09.18
17:29
(13) не обратил внимания что выборка из документов. сорян.
17 olegves
 
18.09.18
17:48
(0) у тебя главный запрос из ТЗ, поэтому тебе надо приводить типы полей запроса из ТЗ через ф-ю ВЫРАЗИТЬ и помещать рез-т этого запроса во временную таблицу, а потом уже с ней соединяться
18 prtx
 
18.09.18
17:58
(17) ну это-то понятно чтобы потом с этой таблице работать дальше нужно поместить ее во временную таблицу, для меня просто было открытием, что условие вида в(выбрать) не работает до помещения во временную таблицу, и все это на фоне того, что условие вида - номенклатура = &номенклатура, работает...

по поводу ВЫРАЗИТЬ, наверное это излишне в данном случае т.к. после помещения во временную таблицу все условия отрабатываю.

з.ы. в таблице &ТоварыНаПеремещение, СкладОтправитель и СкладПолучатель это ссылки.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.