Имя: Пароль:
1C
1С v8
Вопрос по составлению запроса?
0 bahuus
 
18.12.14
07:09
Подскажите пожалуйста начинающему "программисту" корректно сделал запрос или нет. Суть запроса в в следующем: есть номенклатура(авто запчасть) у неё есть регистр сведений рем. комплект. Вытягиваю все остатки, резервы и цены по всем ремкомплектам которые указаны для запчасти. Вот текст запроса:

ВЫБРАТЬ
    РемонтныйКомпл.РемонтныйКомплект,
    ЦеныНоменклатурыСрезПоследних.Цена
ПОМЕСТИТЬ РемКомп
ИЗ
    РегистрСведений.РемонтныйКомплект КАК РемонтныйКомпл
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатурыСрезПоследних
        ПО РемонтныйКомпл.РемонтныйКомплект = ЦеныНоменклатурыСрезПоследних.Номенклатура
ГДЕ
    РемонтныйКомпл.Владелец = &Владелец
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    РемКомп.РемонтныйКомплект КАК РемонтныйКомплект,
    ВложенныйЗапрос.Склад КАК Склад,
    СУММА(ВложенныйЗапрос.ВРезерве) КАК ВРезерве,
    СУММА(ВложенныйЗапрос.ОстатокВсего) КАК ОстатокВсего,
    РемКомп.Цена КАК Цена
ИЗ
    РемКомп КАК РемКомп
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ТоварыВРезервеНаСкладахОстатки.Номенклатура КАК Номенклатура,
            ТоварыВРезервеНаСкладахОстатки.Склад КАК Склад,
            ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК ВРезерве,
            NULL КАК ОстатокВсего
        ИЗ
            РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(
                    ,
                    Номенклатура В
                        (ВЫБРАТЬ
                            РемКомп.РемонтныйКомплект
                        ИЗ
                            РемКомп КАК РемКомп)) КАК ТоварыВРезервеНаСкладахОстатки
        
        ОБЪЕДИНИТЬ ВСЕ
        
        ВЫБРАТЬ
            ТоварыНаСкладахОстатки.Номенклатура,
            ТоварыНаСкладахОстатки.Склад,
            NULL,
            ТоварыНаСкладахОстатки.КоличествоОстаток
        ИЗ
            РегистрНакопления.ТоварыНаСкладах.Остатки(
                    ,
                    Номенклатура В
                        (ВЫБРАТЬ
                            РемКомп.РемонтныйКомплект
                        ИЗ
                            РемКомп КАК РемКомп)) КАК ТоварыНаСкладахОстатки) КАК ВложенныйЗапрос
        ПО РемКомп.РемонтныйКомплект = ВложенныйЗапрос.Номенклатура

СГРУППИРОВАТЬ ПО
    РемКомп.РемонтныйКомплект,
    ВложенныйЗапрос.Склад,
    РемКомп.Цена
1 фобка
 
18.12.14
07:15
вместо null где остатки распределяешь 0 наверн лучше, а так все ровно
2 bahuus
 
18.12.14
07:23
(1) Спасибо.
3 чувак
 
18.12.14
07:26
(2) Не забудь индексировать ВТ
4 bahuus
 
18.12.14
07:31
(3) Так:

ВЫБРАТЬ
    РемонтныйКомпл.РемонтныйКомплект КАК РемонтныйКомплект,
    ЦеныНоменклатурыСрезПоследних.Цена
ПОМЕСТИТЬ РемКомп
ИЗ
    РегистрСведений.РемонтныйКомплект КАК РемонтныйКомпл
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатурыСрезПоследних
        ПО РемонтныйКомпл.РемонтныйКомплект = ЦеныНоменклатурыСрезПоследних.Номенклатура
ГДЕ
    РемонтныйКомпл.Владелец = &Владелец

ИНДЕКСИРОВАТЬ ПО
    РемонтныйКомплект
;
5 чувак
 
18.12.14
07:32
(4) именно
6 bahuus
 
18.12.14
07:32
(5) Спасибо за подсказку.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой