Имя: Пароль:
1C
1С v8
Разъясните вопрос по виртуальной таблице в запросе
,
0 vse_serjezno
 
26.03.14
16:15
Здравствуйте!

Вопрос такой.
Задача банальная, нужно вывести список номенклатуры и ее количество в остатках.
В запросе, упрощенно говоря, это выглядит так:
вложенный запрос соединяется левым соединением с виртуальной табл. РН -  Остатки. Задаю условие по складу.
В итоге запрос не выводит ту номенклатуру из вложенного запроса, остатков по которой нет на этом складе.

В чем проблема? Как получить полный список товаров, не зависимо от того, есть по ним остатки или нет?
1 Strogg
 
26.03.14
16:17
соединять надо со справочником. Делать Объединение остаточного запроса с запросом по справочнику. В виртуальной таблице нулевых остатков просто нет и не может быть.
2 ale-sarin
 
26.03.14
16:19
(0) Условие на склад надо писать не в ГДЕ, а в соединение
3 vse_serjezno
 
26.03.14
16:20
(1) Я Вас очень прошу поподробнее про объединение!..
Нужно 2 пакета запроса сделать и объединить их?
В остаточный запрос просто РН.Остатки запихнуть?
4 ptiz
 
26.03.14
16:20
Показывай запрос.
5 Strogg
 
26.03.14
16:23
(3) показуй запрос. Пакетов не надо. Обойдемся вложенным объединением:)
6 vse_serjezno
 
26.03.14
16:24
ВЫБРАТЬ
    ВложенныйЗапрос.Набор,
    ВложенныйЗапрос.НоменклатураВСоставеНабора,
    ВложенныйЗапрос.Характеристика,
    СУММА(ВложенныйЗапрос.Количество) КАК КоличествоВНаборе,
    СУММА(ОстаткиТоваров.ВНаличииОстаток - ОстаткиТоваров.ВРезервеОстаток) КАК СвободныйОстаток,
    ВложенныйЗапрос.КоличествоНаборов КАК КоличествоНаборовВНаличии,
    МИНИМУМ((ОстаткиТоваров.ВНаличииОстаток - ОстаткиТоваров.ВРезервеОстаток) / ВложенныйЗапрос.Количество - 0.5) КАК МожноСобратьНаборов
ИЗ
    (ВЫБРАТЬ
        СправочникНоменклатура.Ссылка КАК Набор,
        ВариантыКомплектацииНоменклатурыТовары.Номенклатура КАК НоменклатураВСоставеНабора,
        ВариантыКомплектацииНоменклатурыТовары.Характеристика КАК Характеристика,
        ВариантыКомплектацииНоменклатурыТовары.Количество КАК Количество,
        СвободныеОстаткиОстатки.ВНаличииОстаток - СвободныеОстаткиОстатки.ВРезервеОстаток КАК КоличествоНаборов
    ИЗ
        Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК ВариантыКомплектацииНоменклатурыТовары
            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыКомплектацииНоменклатуры КАК ВариантыКомплектацииНоменклатуры
                ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
                    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(&Период, ) КАК СвободныеОстаткиОстатки
                    ПО СправочникНоменклатура.Ссылка = СвободныеОстаткиОстатки.Номенклатура
                ПО ВариантыКомплектацииНоменклатуры.Владелец = СправочникНоменклатура.Ссылка
            ПО ВариантыКомплектацииНоменклатурыТовары.Ссылка = ВариантыКомплектацииНоменклатуры.Ссылка
    ГДЕ
        ВариантыКомплектацииНоменклатуры.ПометкаУдаления = ЛОЖЬ) КАК ВложенныйЗапрос
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            СвободныеОстаткиОстатки.Номенклатура КАК Номенклатура,
            СвободныеОстаткиОстатки.ВНаличииОстаток КАК ВНаличииОстаток,
            СвободныеОстаткиОстатки.ВРезервеОстаток КАК ВРезервеОстаток,
            СвободныеОстаткиОстатки.Склад КАК Склад
        ИЗ
            РегистрНакопления.СвободныеОстатки.Остатки(&Период, ) КАК СвободныеОстаткиОстатки) КАК ОстаткиТоваров
        ПО ВложенныйЗапрос.НоменклатураВСоставеНабора = ОстаткиТоваров.Номенклатура
{ГДЕ
    (ВложенныйЗапрос.Набор В (&Набор))}

СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.Набор,
    ВложенныйЗапрос.НоменклатураВСоставеНабора,
    ВложенныйЗапрос.Характеристика,
    ВложенныйЗапрос.КоличествоНаборов
7 vse_serjezno
 
26.03.14
16:29
Этот запрос бед влож запроса для таблицы остатков

ВЫБРАТЬ
    ВложенныйЗапрос.Набор,
    ВложенныйЗапрос.НоменклатураВСоставеНабора,
    ВложенныйЗапрос.Характеристика,
    СУММА(ВложенныйЗапрос.Количество) КАК КоличествоВНаборе,
    СУММА(СвободныеОстаткиОстатки.ВНаличииОстаток - СвободныеОстаткиОстатки.ВРезервеОстаток) КАК СвободныйОстаток,
    ВложенныйЗапрос.КоличествоНаборов КАК КоличествоНаборовВНаличии,
    МИНИМУМ((СвободныеОстаткиОстатки.ВНаличииОстаток - СвободныеОстаткиОстатки.ВРезервеОстаток) / ВложенныйЗапрос.Количество - 0.5) КАК МожноСобратьНаборов
ИЗ
    (ВЫБРАТЬ
        СправочникНоменклатура.Ссылка КАК Набор,
        ВариантыКомплектацииНоменклатурыТовары.Номенклатура КАК НоменклатураВСоставеНабора,
        ВариантыКомплектацииНоменклатурыТовары.Характеристика КАК Характеристика,
        ВариантыКомплектацииНоменклатурыТовары.Количество КАК Количество,
        СвободныеОстаткиОстатки.ВНаличииОстаток - СвободныеОстаткиОстатки.ВРезервеОстаток КАК КоличествоНаборов
    ИЗ
        Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК ВариантыКомплектацииНоменклатурыТовары
            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыКомплектацииНоменклатуры КАК ВариантыКомплектацииНоменклатуры
                ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
                    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(&Период, ) КАК СвободныеОстаткиОстатки
                    ПО СправочникНоменклатура.Ссылка = СвободныеОстаткиОстатки.Номенклатура
                ПО ВариантыКомплектацииНоменклатуры.Владелец = СправочникНоменклатура.Ссылка
            ПО ВариантыКомплектацииНоменклатурыТовары.Ссылка = ВариантыКомплектацииНоменклатуры.Ссылка
    ГДЕ
        ВариантыКомплектацииНоменклатуры.ПометкаУдаления = ЛОЖЬ) КАК ВложенныйЗапрос
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(&Период, ) КАК СвободныеОстаткиОстатки
        ПО ВложенныйЗапрос.НоменклатураВСоставеНабора = СвободныеОстаткиОстатки.Номенклатура
{ГДЕ
    (ВложенныйЗапрос.Набор В (&Набор))}

СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.Набор,
    ВложенныйЗапрос.НоменклатураВСоставеНабора,
    ВложенныйЗапрос.Характеристика,
    ВложенныйЗапрос.КоличествоНаборов


Как мне условие по складу вставить?
8 ptiz
 
26.03.14
16:32
Условие по складу: в параметры вирт.таблицы .Остатки()
9 vse_serjezno
 
26.03.14
16:33
Пробовала, не помогает в моей ситуации.
10 vse_serjezno
 
26.03.14
16:34
Т.е. по складу отбирается, но те товары, по которым нет записей в Вирт.Т. просто не выводит.
11 ptiz
 
26.03.14
16:37
(9) Покажи как пробовала.
12 vse_serjezno
 
26.03.14
16:49
Хм, выяснились новые подробности.

Видимо дело было не в отсутствующих записях в таблице остатков.

Я скинула не весь запрос, а его часть, в которой, как мне казалось, была сосредоточена проблема. Сейчас я ограничила этот запрос по складу и он выдал мне то, что нужно. В исходном запросе есть еще один вложенный запрос, при котором как раз товары выводятся не все.

Весь изначальный запрос очень большой получается.
13 vse_serjezno
 
26.03.14
16:56
Да, проблема в нем, судя по всему была.

Большое всем спасибо за помощь и участие!!