Имя: Пароль:
1C
1С v8
Запрос: остатки на дату
0 lg2marvel
 
27.02.17
15:09
Всем привет, делаю запрос по остаткам:

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

Результат получаю:
21.02.2017    3

Но по факту у меня с 21.02.2017 по 24.02.2017 остаток был больше 0 (было уменьшение остатка 24.02)

Как правильно сделать группировку чтоб получить результат:
21.02.2017    3
22.02.2017    3
23.02.2017    3
24.02.2017    0

(Нулевой не обязательно)
1 vicof
 
27.02.17
15:11
А вот погуглить "остатки на каждый день в запросе" не?
2 lg2marvel
 
27.02.17
16:27
ВЫБРАТЬ
    ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
    ПартииТоваровНаСкладахОстаткиИОбороты.Склад КАК Склад,
    СУММА(ВЫБОР
            КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.Период = НАЧАЛОПЕРИОДА(&КонПериода, ДЕНЬ)
                ТОГДА ВЫБОР
                        КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстатокПредыдущий > 0
                            ТОГДА ВЫБОР
                                    КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток <= 0
                                        ТОГДА РАЗНОСТЬДАТ(ПартииТоваровНаСкладахОстаткиИОбороты.ПредыдущийПериод, ПартииТоваровНаСкладахОстаткиИОбороты.Период, ДЕНЬ)
                                    ИНАЧЕ РАЗНОСТЬДАТ(ПартииТоваровНаСкладахОстаткиИОбороты.ПредыдущийПериод, &КонПериода, ДЕНЬ) + 1
                                КОНЕЦ
                        ИНАЧЕ ВЫБОР
                                КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток > 0
                                    ТОГДА РАЗНОСТЬДАТ(ПартииТоваровНаСкладахОстаткиИОбороты.Период, &КонПериода, ДЕНЬ) + 1
                                ИНАЧЕ 0
                            КОНЕЦ
                    КОНЕЦ
            ИНАЧЕ ВЫБОР
                    КОГДА ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстатокПредыдущий > 0
                        ТОГДА РАЗНОСТЬДАТ(ПартииТоваровНаСкладахОстаткиИОбороты.ПредыдущийПериод, ПартииТоваровНаСкладахОстаткиИОбороты.Период, ДЕНЬ)
                    ИНАЧЕ 0
                КОНЕЦ
        КОНЕЦ) КАК КоличествоДнейНаСкладе
ИЗ
    (ВЫБРАТЬ
        ТаблицаПредыдущиеПериоды.Номенклатура КАК Номенклатура,
        ТаблицаПредыдущиеПериоды.Склад КАК Склад,
        ТаблицаПредыдущиеПериоды.Период КАК Период,
        ТаблицаПредыдущиеПериоды.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
        ТаблицаПредыдущиеПериоды.ПредыдущийПериод КАК ПредыдущийПериод,
        ПартииТоваровНаСкладахОстаткиИОборотыПредыдущие.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстатокПредыдущий
    ИЗ
        (ВЫБРАТЬ
            ПартииТоваровНаСкладахОстаткиИОбороты1.Номенклатура КАК Номенклатура,
            ПартииТоваровНаСкладахОстаткиИОбороты1.Склад КАК Склад,
            ПартииТоваровНаСкладахОстаткиИОбороты1.Период КАК Период,
            ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
            МАКСИМУМ(ПартииТоваровНаСкладахОстаткиИОбороты2.Период) КАК ПредыдущийПериод
        ИЗ
            РегистрНакопления.ПартииНоменклатуры.ОстаткиИОбороты(&НачПериода, &КонПериода, День, , Номенклатура В ИЕРАРХИИ (&Номенклатура)) КАК ПартииТоваровНаСкладахОстаткиИОбороты1
                ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииНоменклатуры.ОстаткиИОбороты(&НачПериода, &КонПериода, День, , Номенклатура В ИЕРАРХИИ (&Номенклатура)) КАК ПартииТоваровНаСкладахОстаткиИОбороты2
                ПО (ИСТИНА)
                    И ПартииТоваровНаСкладахОстаткиИОбороты1.Номенклатура = ПартииТоваровНаСкладахОстаткиИОбороты2.Номенклатура
                    И ПартииТоваровНаСкладахОстаткиИОбороты1.Склад = ПартииТоваровНаСкладахОстаткиИОбороты2.Склад
                    И ПартииТоваровНаСкладахОстаткиИОбороты1.Период > ПартииТоваровНаСкладахОстаткиИОбороты2.Период
        
        СГРУППИРОВАТЬ ПО
            ПартииТоваровНаСкладахОстаткиИОбороты1.Номенклатура,
            ПартииТоваровНаСкладахОстаткиИОбороты1.Склад,
            ПартииТоваровНаСкладахОстаткиИОбороты1.Период,
            ПартииТоваровНаСкладахОстаткиИОбороты1.КоличествоКонечныйОстаток) КАК ТаблицаПредыдущиеПериоды
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииНоменклатуры.ОстаткиИОбороты(&НачПериода, &КонПериода, День, , Номенклатура В ИЕРАРХИИ (&Номенклатура)) КАК ПартииТоваровНаСкладахОстаткиИОборотыПредыдущие
            ПО (ИСТИНА)
                И ТаблицаПредыдущиеПериоды.Номенклатура = ПартииТоваровНаСкладахОстаткиИОборотыПредыдущие.Номенклатура
                И ТаблицаПредыдущиеПериоды.Склад = ПартииТоваровНаСкладахОстаткиИОборотыПредыдущие.Склад
                И ТаблицаПредыдущиеПериоды.ПредыдущийПериод = ПартииТоваровНаСкладахОстаткиИОборотыПредыдущие.Период) КАК ПартииТоваровНаСкладахОстаткиИОбороты
ГДЕ
    ПартииТоваровНаСкладахОстаткиИОбороты.Склад = &Склад

СГРУППИРОВАТЬ ПО
    ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
    ПартииТоваровНаСкладахОстаткиИОбороты.Склад
АВТОУПОРЯДОЧИВАНИЕ


Спасибо.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс