Имя: Пароль:
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
еще был интересный вариант с курсом валют, но в моем случае этот регистр не используется... думаю самый лучший способ это как раз декартово произведение таблицы
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан