Имя: Пароль:
1C
 
Что не так с запросом?
0 Max Street
 
17.12.15
15:38
Привет. Вот запрос

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ТЗ.Номенклатура,
    |    ТЗ.ДокументПоступления
    |ПОМЕСТИТЬ ВремТаб
    |ИЗ
    |    &ТЗ КАК ТЗ
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ВремТаб.Номенклатура,
    |    ВремТаб.ДокументПоступления,
    |    ISNULL(СерииНоменклатуры.Ссылка, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)) КАК Серия
    |ИЗ
    |    ВремТаб КАК ВремТаб
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СерииНоменклатуры КАК СерииНоменклатуры
    |        ПО ВремТаб.Номенклатура = СерииНоменклатуры.Номенклатура
    |            И ВремТаб.ДокументПоступления = ВЫРАЗИТЬ(СерииНоменклатуры.ДокументПоставки КАК Документ.ПоступлениеТоваровУслуг).Ссылка";
    
    Запрос.УстановитьПараметр("ТЗ", ТЗ);

В результате выполнения запроса серия пуста, хотя в справочнике содержатся нужные элементы. Что не так?
1 Cyberhawk
 
17.12.15
15:40
Выразить не в тему, достаточно

И ВремТаб.ДокументПоступления = СерииНоменклатуры.ДокументПоставки
2 Cyberhawk
 
17.12.15
15:40
А если уж хочется ограничить серии только из ПТУ, то второе условие добавить:
И СерииНоменклатуры.ДокументПоставки ССЫЛКА Документ.ПоступлениеТоваровУслуг
3 Max Street
 
17.12.15
15:41
(1) уже пробовал, тот же результат
4 Max Street
 
17.12.15
15:41
(2) а есть разница?
5 Лефмихалыч
 
17.12.15
15:44
может
ПО ВремТаб.Номенклатура = СерииНоменклатуры.Владелец

?
6 palpetrovich
 
17.12.15
15:46
а в Документе ПоступлениеТоваровУслуг Серии нет случайно?
7 Max Street
 
17.12.15
15:48
(5) нет, СерииНоменклатуры неподчиненный справочник
8 dk
 
17.12.15
15:50
а без условия на поставку выводит?
9 Defender aka LINN
 
17.12.15
15:52
(0) Значит, в справочнике нужных элементов не содержится. Мы серверу больше верим, чем тебе.
10 palpetrovich
 
17.12.15
15:52
(7) а табЧасти "Серии"  тоже нет?
11 palpetrovich
 
17.12.15
15:53
(9)  да лано, может там в "ТЗ.Номенклатура" - строка, вот и не соединяется ничего :)
12 Max Street
 
17.12.15
15:56
(6) В документе есть табличная часть "Товары", а в ней реквизит "Серия". Но доставать напрямую из документа не могу, т.к. номенклатуру загружаю из Excel. самый оптимальный способ сформировать ТЗ из номенклатуры и левым соединением к справочнику получить серию
13 Max Street
 
17.12.15
15:56
(11)

    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
14 Max Street
 
17.12.15
15:56
(8) без условия на что?
15 dk
 
17.12.15
15:57
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СерииНоменклатуры КАК СерииНоменклатуры
    |        ПО ВремТаб.Номенклатура = СерииНоменклатуры.Номенклатура;
без поставки
16 Max Street
 
17.12.15
16:00
(15) так выходит, только данные будут дублироваться
17 palpetrovich
 
17.12.15
16:01
(12) фигня какая, изыините за непарламентское
если есть массивНоменклатуры загруженный из Excel - почему-бы не сделать запрос к табЧасти ПоступлениеТоваровУслуг с условием на этот массив?
18 Max Street
 
17.12.15
16:04
(17) потому что из Excel  я гружу не только номенклатуру
19 dk
 
17.12.15
16:05
(16) значит смотри что с поставкой не так
типы или значения
20 Max Street
 
17.12.15
16:07
(19) и это проверял. типы совпадают, значения заполнены
21 palpetrovich
 
17.12.15
16:22
(20) а что в ТЗ.ДокументПоступления ?
22 Max Street
 
17.12.15
16:23
(21) ДокументСсылка.ПоступлениеТоваровУслуг, который выбирается на форме
23 palpetrovich
 
17.12.15
16:25
(22) упс, а зачем его в ТЗ пихать?
24 Max Street
 
17.12.15
16:26
(23) для соединения в запросе
25 palpetrovich
 
17.12.15
16:28
(24)
    "ВЫБРАТЬ
    |    ТЗ.Номенклатура ПОМЕСТИТЬ ВремТаб ИЗ &ТЗ КАК ТЗ
    |;
    |ВЫБРАТЬ
    |    ВремТаб.Номенклатура
    |    ISNULL(СерииНоменклатуры.Ссылка, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)) КАК Серия
    |ИЗ
    |    ВремТаб КАК ВремТаб
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СерииНоменклатуры КАК СерииНоменклатуры
    |        ПО ВремТаб.Номенклатура = СерииНоменклатуры.Номенклатура
    |        И СерииНоменклатуры.ДокументПоставки = &ДокументПоступленияНаФопме";
26 Max Street
 
17.12.15
16:31
даже так не работает:

    "ВЫБРАТЬ
    |    ТЗ.Номенклатура,
    |    ТЗ.ДокументПоступления
    |ПОМЕСТИТЬ ВремТаб
    |ИЗ
    |    &ТЗ КАК ТЗ
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    СерииНоменклатуры.Ссылка,
    |    СерииНоменклатуры.Номенклатура
    |ПОМЕСТИТЬ Серии
    |ИЗ
    |    Справочник.СерииНоменклатуры КАК СерииНоменклатуры
    |ГДЕ
    |    СерииНоменклатуры.ДокументПоставки = &ДокументПоставки
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ВремТаб.Номенклатура,
    |    ВремТаб.ДокументПоступления,
    |    ЕСТЬNULL(Серии.Ссылка, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)) КАК Серия
    |ИЗ
    |    ВремТаб КАК ВремТаб
    |        ЛЕВОЕ СОЕДИНЕНИЕ Серии КАК Серии
    |        ПО ВремТаб.Номенклатура = Серии.Номенклатура
27 Max Street
 
17.12.15
16:31
(25) сейчас попробую твой вариант
28 palpetrovich
 
17.12.15
16:35
кста, при левом соединение, на ЕСТЬNULL проверять незачем
  
"ВЫБРАТЬ
    |    ТЗ.Номенклатура ПОМЕСТИТЬ ВремТаб ИЗ &ТЗ КАК ТЗ
    |;
    |ВЫБРАТЬ
    |    ВремТаб.Номенклатура
    |    СерииНоменклатуры.Ссылка КАК Серия
    |ИЗ
    |    ВремТаб КАК ВремТаб
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СерииНоменклатуры КАК СерииНоменклатуры
    |        ПО ВремТаб.Номенклатура = СерииНоменклатуры.Номенклатура
    |        И СерииНоменклатуры.ДокументПоставки = &ДокументПоступленияНаФопме";
29 Max Street
 
17.12.15
16:37
(25) тот же результат. ни так:
И СерииНоменклатуры.ДокументПоставки = &ДокументПоступления

ни так
И ВЫРАЗИТЬ(СерииНоменклатуры.ДокументПоставки КАК Документ.ПоступлениеТоваровУслуг).Ссылка = &ДокументПоступления

не работает
30 Max Street
 
17.12.15
16:38
(28) это еще почему? незачем проверять только при внутреннем соединении
31 palpetrovich
 
17.12.15
16:42
(30) потому как соединени по "=СерииНоменклатуры.Номенклатура" и если есть реквизит Номенклатура, то будет и ссылка, а если нет - зачем цеплять пустую ссылку?
32 palpetrovich
 
17.12.15
16:51
(29) в УТ в справочнике СерииНоменклатуры реквизита ДокументПоставки не нашел, проверить не могу :)
33 Max Street
 
17.12.15
16:57
(32) Спасибо за помощь, буду дальше искать :)
34 palpetrovich
 
17.12.15
17:19
(33) в моем случае, когда у дока ПоступлениеТоваровУслугТовары есть реквизит СерияНоменклатуры, код для получения желаемого в (0) выглядит так:

ВЫБРАТЬ
    ПоступлениеТоваровУслугТовары.Номенклатура,
    СерииНоменклатуры.Ссылка
ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СерииНоменклатуры КАК СерииНоменклатуры
        ПО ПоступлениеТоваровУслугТовары.СерияНоменклатуры = СерииНоменклатуры.Ссылка
        И ПоступлениеТоваровУслугТовары.Номенклатура В (&СписНоменклатуры)
ГДЕ ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка
35 palpetrovich
 
17.12.15
17:20
+(34) впрочем, ступил, нафик эти соединения ваще? :)
36 palpetrovich
 
17.12.15
17:21
ВЫБРАТЬ
    ПоступлениеТоваровУслугТовары.Номенклатура,
    ПоступлениеТоваровУслугТовары.СерияНоменклатуры
ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ГДЕ ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка
И ПоступлениеТоваровУслугТовары.Номенклатура В (&СписНоменклатуры)