Имя: Пароль:
1C
1С v8
Общее количество товара по аналогам в запросе
0 spapin87
 
24.10.13
13:18
Добрый день, подскажите с запросом, пожалуйста, пытаюсь получить общее количество по всем аналогам номенклатуры, т.е. беру номенклатуру смотрю аналоги по ИдентификаторГруппыАналогов и получаю данные, но мне нужно получить общее количество по всем аналогам. Пытаюсь вложенным запросом функцией Сумма, но чего-то не то ...
ВыборкаНом = Справочники.Номенклатура.Выбрать();
    Пока ВыборкаНом.Следующий() = 1 Цикл
        ОбработкаПрерыванияПользователя();
        НоменклатураОбъект=ВыборкаНом.ПолучитьОбъект();
        ИдентификаторГруппыАналогов=НоменклатураОбъект.ИдентификаторГруппыАналогов();
        Если ИдентификаторГруппыАналогов=Неопределено Тогда
            НомеклатураАналогов = НоменклатураОбъект.Ссылка;
            СтрГлавныйПоГруппе =  НоменклатураОбъект;
        Иначе  
            Запрос = Новый Запрос("ВЫБРАТЬ
                                  |    Номенкл.Артикул КАК Артикул,
                                  |    Номенкл.Ссылка,
                                  |    Номенкл.Родитель КАК Каталог,
                                  |    ЦеныСрезПоследних.Цена КАК ЦенаПродажи,
                                  |    ЛОЖЬ КАК ГлавныйПоГруппе,
                                  |    ГруппыАналогов.ИдентификаторГруппы,
                                  |    ГруппыАналогов.Артикул КАК Артикул1,
                                  |    СУММА(ВложенныйЗапрос1.КоличествоОстаток) КАК КоличествоОстаток
                                  |ИЗ
                                  |    РегистрСведений.ГруппыАналогов КАК ГруппыАналогов
                                  |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенкл
                                  |            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ) КАК ЦеныСрезПоследних
                                  |            ПО (ЦеныСрезПоследних.Номенклатура = Номенкл.Ссылка)
                                  |            ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                                  |                Номенкл.Артикул КАК Артикул,
                                  |                Номенкл.Ссылка КАК Ссылка,
                                  |                Номенкл.Родитель КАК Каталог,
                                  |                ЛОЖЬ КАК ГлавныйПоГруппе,
                                  |                ГруппыАналогов.ИдентификаторГруппы КАК ИдентификаторГруппы,
                                  |                ГруппыАналогов.Артикул КАК Артикул1,
                                  |                СУММА(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток) КАК КоличествоОстаток
                                  |            ИЗ
                                  |                РегистрСведений.ГруппыАналогов КАК ГруппыАналогов
                                  |                    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенкл
                                  |                        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ИдентификаторГруппы, ) КАК ОстаткиТоваровКомпанииОстатки
                                  |                        ПО (ОстаткиТоваровКомпанииОстатки.Номенклатура = Номенкл.Ссылка)
                                  |                    ПО ГруппыАналогов.Артикул = Номенкл.Артикул
                                  |            
                                  |            СГРУППИРОВАТЬ ПО
                                  |                Номенкл.Артикул,
                                  |                Номенкл.Ссылка,
                                  |                Номенкл.Родитель,
                                  |                ГруппыАналогов.ИдентификаторГруппы,
                                  |                ГруппыАналогов.Артикул) КАК ВложенныйЗапрос1
                                  |            ПО Номенкл.Артикул = ВложенныйЗапрос1.Артикул
                                  |        ПО ГруппыАналогов.Артикул = Номенкл.Артикул
                                  |ГДЕ
                                  |    ГруппыАналогов.ИдентификаторГруппы = &ИдентификаторГруппы
                                  |
                                  |СГРУППИРОВАТЬ ПО
                                  |    Номенкл.Артикул,
                                  |    Номенкл.Ссылка,
                                  |    Номенкл.Родитель,
                                  |    ЦеныСрезПоследних.Цена,
                                  |    ГруппыАналогов.ИдентификаторГруппы,
                                  |    ГруппыАналогов.Артикул");
            Запрос.УстановитьПараметр("ИдентификаторГруппы",ИдентификаторГруппыАналогов);
            Выборка = Запрос.Выполнить().Выбрать();
1 Maxus43
 
24.10.13
13:23
если надо по всем, зачем же тянешь в запросе:
                                  |    Номенкл.Артикул КАК Артикул,
                                  |    Номенкл.Ссылка,
                                  |    Номенкл.Родитель КАК Каталог,


они для каждой номенклатуры свои, потому и рвёт сумму на много
2 spapin87
 
24.10.13
13:32
убрав эти поля считаются вообще все остатки по всем аналогам, а надо например для номенклатуры 111(ВыборкаНом) в запросе по ИдентификаторГруппыАналогов я получаю все аналоги именно по 111 и вывести общее количество для каждого аналога
3 spapin87
 
24.10.13
13:38
Все разобрался, не поставил условие во вложенном запросе по ИдентификаторГруппы, спасибо за внимание и помощь.
Как только у кого-нить спрашиваю соображаю сам )))