Наиболее быстрый способ выбрать остаток на любой период с любыми группировками.
На основе данного запроса можно:
- - просто вывести остаток, себестоимость, цену на каждый день (или месяц, час, неделю и т. д.)
- - рассчитать средний запас
- - расчитать количество дней провала (сколько дней товара не было на складе)
Работает действительно быстро. Единственное условие - наличие в регистре продаж ежедневных записей.
Приложен пример отчета.
ВЫБРАТЬ ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК Остаток, ТоварыНаСкладахОстаткиИОбороты.Период КАК Период, ТоварыНаСкладахОстаткиИОбороты.Номенклатура, ТоварыНаСкладахОстаткиИОбороты.Склад ПОМЕСТИТЬ Данные ИЗ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты( &НП, &КП, День, , Номенклатура В ИЕРАРХИИ (&номенклатура) И Склад.код = "000000017") КАК ТоварыНаСкладахОстаткиИОбороты ИНДЕКСИРОВАТЬ ПО Период, ТоварыНаСкладахОстаткиИОбороты.Склад, ТоварыНаСкладахОстаткиИОбороты.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ Периоды.Период ПОМЕСТИТЬ Периоды ИЗ РегистрНакопления.Продажи.Обороты(&НП, &КП, День, ) КАК Периоды ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ Данные.Склад ПОМЕСТИТЬ тСклады ИЗ Данные КАК Данные ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ Данные.Номенклатура ПОМЕСТИТЬ тНоменклатура ИЗ Данные КАК Данные ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Периоды.Период, тНоменклатура.Номенклатура ПОМЕСТИТЬ ВсеСтрокиНоменклатураПериод ИЗ Периоды КАК Периоды ПОЛНОЕ СОЕДИНЕНИЕ тНоменклатура КАК тНоменклатура ПО (ИСТИНА) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Строки.Номенклатура, Строки.Период, тСклады.Склад ПОМЕСТИТЬ ВсеСтроки ИЗ ВсеСтрокиНоменклатураПериод КАК Строки ПОЛНОЕ СОЕДИНЕНИЕ тСклады КАК тСклады ПО (ИСТИНА) ИНДЕКСИРОВАТЬ ПО Строки.Номенклатура, Строки.Период, тСклады.Склад ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Д.Остаток КАК Остаток, ВложенныйЗапрос.Период КАК Период, ВложенныйЗапрос.Номенклатура КАК Номенклатура, ВложенныйЗапрос.Склад ИЗ (ВЫБРАТЬ ВсеСтроки.Период КАК Период, ВсеСтроки.Номенклатура КАК Номенклатура, ВсеСтроки.Склад КАК Склад, МАКСИМУМ(Д.Период) КАК ЕстьОстатокНаПериод ИЗ ВсеСтроки КАК ВсеСтроки ЛЕВОЕ СОЕДИНЕНИЕ Данные КАК Д ПО (Д.Склад = ВсеСтроки.Склад) И (Д.Номенклатура = ВсеСтроки.Номенклатура) И (Д.Период