Имя: Пароль:
1C
1С v8
Как выбрать количество из поступлений и остаток на дату поступления?
0 MrZLO
 
06.12.16
10:46
Есть поступления с номенклатурой товар1

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

что нужно поправить в запросе, чтобы КоличествоОстаток выводился остаток на дату = дате поступления
1 MrZLO
 
06.12.16
10:47
точнее остаток на даты поступлений
2 aleks_default
 
06.12.16
10:54
3 MrZLO
 
06.12.16
10:57
ого
4 MrZLO
 
06.12.16
11:08
Решил делать через соединение с вложенным запросм: во внешнем все даты на которые надо получить остатки, а во вложенном ОстаткиИОбороты с периодичностью "День"

Только даты и период надо как-то к общему типу преобразовать...
5 MrZLO
 
06.12.16
11:24
НАЧАЛОПЕРИОДА() помогло
6 aleks_default
 
06.12.16
12:28
у вас по одному поступлению в день что ли?
7 MrZLO
 
06.12.16
13:26
(6) да вот с этим как раз и проблема, в регистре данные не по всем датам подряд же идут...
8 MrZLO
 
07.12.16
10:05
(2) огромный респект, вложенный запрос сделал так и из него остатки выбираю

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

СГРУППИРОВАТЬ ПО
    ОстаткиИОбороты1.КоличествоКонечныйОстаток,
    НАЧАЛОПЕРИОДА(ОстаткиИОбороты1.Период, ДЕНЬ)

УПОРЯДОЧИТЬ ПО
    ДатаС
9 MrZLO
 
07.12.16
10:06
еще был интересный вариант с курсом валют, но в моем случае этот регистр не используется... думаю самый лучший способ это как раз декартово произведение таблицы