Имя: Пароль:
1C
1С v8
УТ 10.3 Запрос по продажам. Не выводит номенклатурные позиции, по которым нет
0 Koliaff
 
09.10.15
10:59
Доброго времени суток. Пишу отчет по продажам номенклатуры по месяцам.В отчет нужно вывести стоимость продаж по выбранным номенклатурным позициям (перемененная в запросе &Номенклатура, типа список значений). Причем нужно вывести ВСЕ номенклатурные позиции, даже те, по которым вообще не было продаж.

Как изменить запрос, чтобы в отчет попадали те позиции, по которым не было ни одной продажи ?


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

Рез = ЗапросПоПродажам.Выполнить();
ОбходПоНоменклатуре = Рез.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Номенклатура", "Все");    
    Пока ОбходПоНоменклатуре.Следующий() Цикл
ОбходПоПериоду = ОбходПоНоменклатуре.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Период", "Все");
        Пока ОбходПоПериоду.Следующий() Цикл
// Вывод в табличный документ
КонецЦикла;
КонецЦикла;
1 Timon1405
 
09.10.15
11:01
используйте левое соединение
2 Maniac
 
09.10.15
11:03
Нужно строить запрос по справочнику номенклатуры и уже только к нему присоединять продажи
3 ibreiter
 
09.10.15
11:03
К номенклатуре из списка левое соединение с вашей таблицей
4 Koliaff
 
09.10.15
11:04
(Timon1405) Левое соединение со справочником номенклатура ? Мне периоды мешают ).
5 Ненавижу 1С
 
гуру
09.10.15
11:05
ИЗ
Справочник.Номенклатура КАК СпрНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ
РегистрНакопления.Продажи.Обороты(&НачПериода, &КонПериода, Месяц, Номенклатура В ИЕРАРХИИ (&Номенклатура)) КАК ПродажиОбороты

ПО СпрНоменклатура.Ссылка = ПродажиОбороты.Номенклатура

ГДЕ СпрНоменклатура.Ссылка В ИЕРАРХИИ (&Номенклатура)
6 Koliaff
 
09.10.15
11:05
ЗапросПоПродажам = Новый Запрос;
    ЗапросПоПродажам.Текст = "ВЫБРАТЬ
                             |    ПродажиОбороты.Период КАК Период,
                             |    ВЫБОР
                             |        КОГДА ПродажиОбороты.Номенклатура ЕСТЬ NULL
                             |            ТОГДА СпрНом.Ссылка
                             |        ИНАЧЕ ПродажиОбороты.Номенклатура
                             |    КОНЕЦ КАК Номенклатура,
                             |    СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот
                             |ИЗ
                             |    Справочник.Номенклатура КАК СпрНом
                             |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&НачПериода, &КонПериода, Месяц, Номенклатура В ИЕРАРХИИ (&Номенклатура)) КАК ПродажиОбороты
                             |        ПО СпрНом.Ссылка = ПродажиОбороты.Номенклатура
                             |ГДЕ
                             |    СпрНом.Ссылка В ИЕРАРХИИ(&Номенклатура)
                             |
                             |СГРУППИРОВАТЬ ПО
                             |    ПродажиОбороты.Период,
                             |    ВЫБОР
                             |        КОГДА ПродажиОбороты.Номенклатура ЕСТЬ NULL
                             |            ТОГДА СпрНом.Ссылка
                             |        ИНАЧЕ ПродажиОбороты.Номенклатура
                             |    КОНЕЦ
                             |ИТОГИ
                             |    СУММА(СтоимостьОборот)
                             |ПО
                             |    Номенклатура ИЕРАРХИЯ,
                             |    Период ПЕРИОДАМИ(МЕСЯЦ, &НачПериода, &КонПериода)";

Вот так пробовал, не получается
7 Ненавижу 1С
 
гуру
09.10.15
11:06
что не получается?

вместо этого бреда:
ВЫБОР
                             |        КОГДА ПродажиОбороты.Номенклатура ЕСТЬ NULL
                             |            ТОГДА СпрНом.Ссылка
                             |        ИНАЧЕ ПродажиОбороты.Номенклатура
                             |    КОНЕЦ КАК Номенклатура

напиши:
СпрНом.Ссылка КАК Номенклатура
8 Maniac
 
09.10.15
11:07
что за бред

|    ВЫБОР
                             |        КОГДА ПродажиОбороты.Номенклатура ЕСТЬ NULL
                             |            ТОГДА СпрНом.Ссылка
                             |        ИНАЧЕ ПродажиОбороты.Номенклатура
                             |    КОНЕЦ КАК Номенклатура,
9 GreatOne
 
09.10.15
11:08
это стаж 9 лет, все норм)
10 Ненавижу 1С
 
гуру
09.10.15
11:09
(9) позорит Краснодар
11 Koliaff
 
09.10.15
11:11
ЗапросПоПродажам = Новый Запрос;
    ЗапросПоПродажам.Текст = "ВЫБРАТЬ
                             |    ПродажиОбороты.Период КАК Период,
                             |    СпрНом.Ссылка КАК Номенклатура,
                             |    СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот
                             |ИЗ
                             |    Справочник.Номенклатура КАК СпрНом
                             |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&НачПериода, &КонПериода, Месяц, Номенклатура В ИЕРАРХИИ (&Номенклатура)) КАК ПродажиОбороты
                             |        ПО СпрНом.Ссылка = ПродажиОбороты.Номенклатура
                             |ГДЕ
                             |    СпрНом.Ссылка В ИЕРАРХИИ(&Номенклатура)
                             |
                             |СГРУППИРОВАТЬ ПО
                             |    ПродажиОбороты.Период,
                             |    СпрНом.Ссылка
                             |ИТОГИ
                             |    СУММА(СтоимостьОборот)
                             |ПО
                             |    Номенклатура ИЕРАРХИЯ,
                             |    Период ПЕРИОДАМИ(МЕСЯЦ, &НачПериода, &КонПериода)";
12 Koliaff
 
09.10.15
11:17
ОбходПоНоменклатуре = Рез.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Номенклатура", "Все");    
    Пока ОбходПоНоменклатуре.Следующий() Цикл
        ОбластьСтрокаПервыйСтолбец.Параметры.Номенклатура = ОбходПоНоменклатуре.Номенклатура;
        ТабДокумент.Вывести(ОбластьСтрокаПервыйСтолбец);
        ОбходПоПериоду = ОбходПоНоменклатуре.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Период", "Все");
        Пока ОбходПоПериоду.Следующий() Цикл
            Если ОбходПоПериоду.СтоимостьОборот = NULL Тогда
                ТабДокумент.Присоединить(ОбластьПустаяСтрокаПериод);
            Иначе
                ОбластьСтрокаПериод.Параметры.Стоимость = ОбходПоПериоду.СтоимостьОборот;
                ТабДокумент.Присоединить(ОбластьСтрокаПериод);
            КонецЕсли;    
        КонецЦикла;    
    КонецЦикла;    


Вот вывод отчета.
Я выбрал весь 2015 год в отчете. Почему-то январь 2015 у всех номенклатурных позиции по 0, хотя движения были.
13 Maniac
 
09.10.15
12:27
Если ОбходПоПериоду.СтоимостьОборот = NULL Тогда

условие кривое
Программист всегда исправляет последнюю ошибку.