Имя: Пароль:
1C
1С v8
Запрос периодами - заполнение нулевых значений
0 DrLekter
 
18.07.16
16:55
Стоит задача сделать отчет по гладкости изменения себестоимости. Сравниваю текущую цену с предыдущей:

"ВЫБРАТЬ
|    ОстаткиОстаткиИОбороты.Номенклатура КАК Номенклатура,
|    ОстаткиОстаткиИОбороты.КоличествоНачальныйОстаток,
|    ОстаткиОстаткиИОбороты.СуммаГРННачальныйОстаток,
|    ОстаткиОстаткиИОбороты.Период КАК Период
|ПОМЕСТИТЬ ВремОстатки
|ИЗ
|    РегистрНакопления.Остатки.ОстаткиИОбороты(
|            &ДатаС,
|            &ДатаПо,
|            День,
|            ,
|            Номенклатура В ИЕРАРХИИ (&Номенклатура)
|                И Склад В (&Склады)) КАК ОстаткиОстаткиИОбороты
|
|ИНДЕКСИРОВАТЬ ПО
|    Период,
|    Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
|    ВремОстатки.Период
|ПОМЕСТИТЬ ВремПериоды
|ИЗ
|    ВремОстатки КАК ВремОстатки
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ВремОстатки.Номенклатура,
|    ВремПериоды.Период
|ПОМЕСТИТЬ ВремНоменклатураПоПериодам
|ИЗ
|    ВремОстатки КАК ВремОстатки
|        ПОЛНОЕ СОЕДИНЕНИЕ ВремПериоды КАК ВремПериоды
|        ПО (ИСТИНА)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
|    ВН.Номенклатура КАК Номенклатура,
|    ВН.Период КАК Период,
|    ДОБАВИТЬКДАТЕ(ВН.Период, ДЕНЬ, 1) КАК Период1,
|    ВО.СуммаГРННачальныйОстаток / ВО.КоличествоНачальныйОстаток КАК ТекущаяЦена
|ПОМЕСТИТЬ ВремВыборка
|ИЗ
|    ВремНоменклатураПоПериодам КАК ВН
|        ЛЕВОЕ СОЕДИНЕНИЕ ВремОстатки КАК ВО
|        ПО ВН.Номенклатура = ВО.Номенклатура
|            И ВН.Период = ВО.Период
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ВремВыборка.Номенклатура,
|    ВремВыборка.Период,
|    ВремВыборка.Период1,
|    ВремВыборка.ТекущаяЦена,
|    ВремВыборка1.ТекущаяЦена КАК ВчерашняяЦена
|ИЗ
|    ВремВыборка КАК ВремВыборка
|        ЛЕВОЕ СОЕДИНЕНИЕ ВремВыборка КАК ВремВыборка1
|        ПО ВремВыборка.Номенклатура = ВремВыборка1.Номенклатура
|            И ВремВыборка.Период = ВремВыборка1.Период1"

Замечательно работает, если продукция каждый день есть на складе. А если через раз, то вчерашняя цена нулевая - получается 100%ный скачок. Можно ли заполнить нулевые значения последним ненулевым, не выгружаясь в таблицу значений (подразумевается, что когда вся продукция ушла, себестоимость ее не изменилась)?
1 Fragster
 
гуру
18.07.16
16:56
вместо запросов использовать дополнение периодов СКД?
2 Nuobu
 
18.07.16
16:58
Таблица периодов + Срез последних на дату из запроса.
3 DrLekter
 
18.07.16
20:18
(1) с СКД я до сих пор на Вы ) Очень редко возникали задачи, нерешаемые обычными запросами, вот и не вникал глубоко.
(2) это Срез последних вызывать столько раз, сколько периодов получится в выборке? Если так, проще и быстрее (как по трудозатратам, так и по быстродействию) все таки идти через ТЗ.