Имя: Пароль:
1C
1С v8
Разная работа запросов
0 vladis222
 
22.07.19
17:17
Неправильная работа запроса
Здравствуйте,подскажите,пожалуйста,почему запрос на вывод товаров,по которым нулевой оборот, отрабатывает не так как второй вариант.
ВЫБРАТЬ
    Товар.Код,
    Товар.Наименование,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Товар.Ссылка) КАК Колво

    ИЗ
    Справочник.Номенклатура КАК Товар
ГДЕ  
    НЕ Ссылка В
        (ВЫБРАТЬ
            Номенклатура
        ИЗ
            РегистрНакопления.ТоварыОрганизаций.Обороты (&НачалоПериода, &КонецПериода)
        ГДЕ
            КоличествоОборот <> 0) И  НЕ Товар.ЭтоГруппа И Товар.Родитель В ИЕРАРХИИ(&ГруппаТовара)
            
            
   СГРУППИРОВАТЬ ПО
    Товар.Код,
    Товар.Наименование

            
            
    УПОРЯДОЧИТЬ ПО
    Товар.Наименование  
  
вот первый вариант,здесь три условия

ВЫБРАТЬ
    Товар.Код,
    Товар.Наименование КАК Название,
    1 КАК Поле1,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Товар.Ссылка) КАК Колво
ИЗ
    Справочник.Номенклатура КАК Товар
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыОрганизаций.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ТоварыОрганизацийОбороты
        ПО Товар.Ссылка = ТоварыОрганизацийОбороты.Номенклатура
ГДЕ
    НЕ Товар.ЭтоГруппа
    И ТоварыОрганизацийОбороты.Номенклатура ЕСТЬ NULL
    И Товар.Родитель В ИЕРАРХИИ(&ГруппаТовара)

СГРУППИРОВАТЬ ПО
    Товар.Код,
    Товар.Наименование

УПОРЯДОЧИТЬ ПО
    Товар.Наименование

вот второй, дополнительные поля сделал для подсчета товаров, и кол-во товаров отличается в первом и втором случаях...
1 dka80
 
22.07.19
17:26
В нижнем запросе у тебя попадет номенклатура с нулевым оборотом
2 vicof
 
22.07.19
17:26
Потому что во втором выбирается вся номенклатура, в первом только та, что в регистре.
Оба запроса говнецом попахивают.
3 dezss
 
22.07.19
17:28
(1) НЕнулевым
4 vicof
 
22.07.19
17:35
Плюс везде внутреннее соединение, а не левое.
Плюс не используются отборы в виртуальных таблицах.
Поле полю1 у тебя ни группируется, ни суммируется.
5 Жан Пердежон
 
22.07.19
17:39
(4) чот ты гонишь
6 vicof
 
22.07.19
17:50
(5) неа
7 Ёпрст
 
22.07.19
17:52
(0) параметры поди разные указываете ?
8 Жан Пердежон
 
22.07.19
17:53
(7) в (1) правильный ответ
9 Ёпрст
 
22.07.19
17:57
(8) >>>>И ТоварыОрганизацийОбороты.Номенклатура ЕСТЬ NULL

Че там гришь попадает то ?
10 Windyhead
 
22.07.19
18:02
В первом запросе стоит условие:
"
ГДЕ
    КоличествоОборот <> 0
"
например было Приход 5 и Расход 5   и КоличествоОборот = 0

а во втором запросе условие "ТоварыОрганизацийОбороты.Номенклатура ЕСТЬ NULL" при тех же данных даст ЛОЖЬ\вот и вся разница
11 Windyhead
 
22.07.19
18:05
(1) В верхнем запросе попадает товар у которого приход равен расходу.
12 Жан Пердежон
 
22.07.19
18:33
(9)

Движение1: Номенклатура=Товар1, Количество=10, Сумма=1000
Движение2: Номенклатура=Товар1, Количество=-6, Сумма=-600
Движение3: Номенклатура=Товар1, Количество=-4, Сумма=-300
Движение4: Номенклатура=Товар2, Количество=1,  Сумма=500

что выдадут запросы (период, естественно, в интервале)?:

ВЫБРАТЬ Номенклатура
ИЗ РегистрНакопления.ТоварыОрганизаций.Обороты(&НачалоПериода, &КонецПериода);

ВЫБРАТЬ Номенклатура, КоличествоОборот
ИЗ РегистрНакопления.ТоварыОрганизаций.Обороты(&НачалоПериода, &КонецПериода);