Для примера создадим 3 документа установка цен номенклатуры.
1. На 1 мая.
2. На 2 мая.
3. На 3 мая.
Делаем выборку всех цен для наглядности.
Подготовка данных закончена, начинаем получение цен в нужном виде.
Получаем последние цены.
ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыСрезПоследних.Цена ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
Далее нам надо получить дату предыдущего изменения цены.
ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыСрезПоследних.Цена, МАКСИМУМ(ЦеныНоменклатуры.Период) КАК ПредыдущаяДата ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ЦеныНоменклатуры.Номенклатура И ЦеныНоменклатурыСрезПоследних.Период <> ЦеныНоменклатуры.Период И (ЦеныНоменклатуры.ВидЦены = &ВидЦены) СГРУППИРОВАТЬ ПО ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыСрезПоследних.Цена
Помещаем результат во временную таблицу втЦеныНоменклатуры.
Ну и соответственно получаем уже цены.
ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыСрезПоследних.Цена, МАКСИМУМ(ЦеныНоменклатуры.Период) КАК ПредыдущаяДата ПОМЕСТИТЬ втЦеныНоменклатуры ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ЦеныНоменклатуры.Номенклатура И ЦеныНоменклатурыСрезПоследних.Период <> ЦеныНоменклатуры.Период И (ЦеныНоменклатуры.ВидЦены = &ВидЦены) СГРУППИРОВАТЬ ПО ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыСрезПоследних.Цена ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ втЦеныНоменклатуры.Номенклатура, втЦеныНоменклатуры.Цена, ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК ПредыдущаяЦена ИЗ втЦеныНоменклатуры КАК втЦеныНоменклатуры ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО втЦеныНоменклатуры.Номенклатура = ЦеныНоменклатуры.Номенклатура И втЦеныНоменклатуры.ПредыдущаяДата = ЦеныНоменклатуры.Период И (ЦеныНоменклатуры.ВидЦены = &ВидЦены)
И еще раз таблица цен, чтобы удобнее было анализировать
P.S. Статья написана как пример и все запросы упрощены.
По умолчанию взял, что у нас нет характеристик, одна валюта и один тип упаковки.
Соответственно нет пересчета коэффициента и валюты.
P.P.S Также приложил отчет для 8.2, протестировано на 8.2 УФ, в обычном режиме нужно будет выбрать вид цен через кнопку настройки.