Имя: Пароль:
1C
 
Запрос + условие
0 myr4ik07
 
19.10.14
17:44
Добрый день.

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

первым запросом я выбрал только ту номенклатуру, которая есть в документе, а обязательно нужно во втором запросе делать
Материал В
    |                    (ВЫБРАТЬ
    |                        НоменклатураДокумента.Номенклатура
    |                    ИЗ
    |                        НоменклатураДокумента)) КАК СтоимостьМатериаловОстатки
?
И так же будет выбрана номенклатура с Запрос или еще выбирать нужно и с Вирт. Таблицы отдельно?
1 RomanYS
 
19.10.14
17:54
не обязательно, но с условиями должно быть быстрее
2 myr4ik07
 
19.10.14
17:57
(1) да, читаю, что с условием не будет перебирать лишние данные с справочника например, а будет только те, что в запросе, спасибо