Имя: Пароль:
1C
1С v8
Запрос с иерархией
0 Slon747
 
10.03.17
14:57
Соединяю 2 таблицы и пытаюсь выбрать данные с иерархией по номенклатуре.
Пока не использовал "ВЫБОР КОГДА" иерархия работала. Теперь выводится без иерархии.
Почему?

ВЫБРАТЬ
    ВЫБОР
        КОГДА ТоварыНаСкладахОстатки.Номенклатура ЕСТЬ НЕ NULL
            ТОГДА ТоварыНаСкладахОстатки.Номенклатура
        ИНАЧЕ ПродажиОбороты.Номенклатура
    КОНЕЦ КАК Номенклатура,
    ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
    ПродажиОбороты.КоличествоОборот КАК КоличествоОборот
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
        ПО ТоварыНаСкладахОстатки.Номенклатура = ПродажиОбороты.Номенклатура
ИТОГИ
    СУММА(КоличествоОстаток),
    СУММА(КоличествоОборот)
ПО
    ОБЩИЕ,
    Номенклатура
1 Михаил Козлов
 
10.03.17
15:00
В качестве номенклатуры можно попробовать сам справочник и уже к нему левым соединением остатки и продажи.
2 mkalimulin
 
10.03.17
15:09
(0) Убери итоги по номенклатуре. Зачем они тебе?
3 kabanoff
 
10.03.17
15:20
Если этот запрос не пример, а реальный запрос на бою, то я сочувствую оптимизатору запросов и конечному пользователю.
4 Slon747
 
10.03.17
15:39
(1) тогда вывалится весь справочник да еще и все характеристики (в реальном запросе)
(2) Именно для иерархии и нужно
(3) Запрос - пример
5 azernot
 
10.03.17
15:40
Выбрать
СпрНоменклатура.Ссылка как Номенклатура
Естьnull(Продажи, 0) как Продажи
Естьnull(Остатки, 0) как Остатки

Из Справочник.Номенклатура как СпрНоменклатура
ЛевоеСоединение Продажи по Номенклатура
ЛевоеСоединение Остатки по Номенклатура

ГДЕ НЕ Продажи = 0 ИЛИ НЕ Остатки = 0

Итоги
СУММА(Продажи),
СУММА(Остатки)

По Общие,
Номенклатура Иерархия
6 azernot
 
10.03.17
15:42
ГДЕ НЕ Естьnull(Продажи, 0) = 0 ИЛИ НЕ Естьnull(Остатки, 0)= 0

если непонятно.
7 Slon747
 
10.03.17
15:46
(5) Да понятно, что можно.
Думал, есть вариант обойтись без этого, т.к. реальный запрос имеет кучу таблиц и придется долго переписывать только из-за иерархии