Доброго времени суток!
Столкнулся с такой проблемкой, в общем есть регистр сведений с ценами. Я пытаюсь получить в одной колонке все цены из регистра по указанной номенклатуре, а в другой колонке предыдущую цену.
Вот мой запрос, он позволяет мне получить предыдущую цену, но саму цену дублирует по срезу последних. В чем может быть проблема?
ВЫБРАТЬ
МАКСИМУМ(ЦеныНоменклатурыПоставщиков.Период) КАК Период,
ЦеныНоменклатурыПоставщиков.Номенклатура КАК Номенклатура,
ЦеныНоменклатурыПоставщиков.Цена КАК ПредыдущаяЦена,
ВложенныйЗапрос.Цена КАК Цена
ИЗ
РегистрСведений.ЦеныНоменклатурыПоставщиков КАК ЦеныНоменклатурыПоставщиков
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ЦеныНоменклатурыПоставщиковСрезПоследних.Период КАК Период,
ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура КАК Номенклатура,
ЦеныНоменклатурыПоставщиковСрезПоследних.Цена КАК Цена
ИЗ
РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних КАК ЦеныНоменклатурыПоставщиковСрезПоследних) КАК ВложенныйЗапрос
ПО ЦеныНоменклатурыПоставщиков.Номенклатура = ВложенныйЗапрос.Номенклатура
И ЦеныНоменклатурыПоставщиков.Период < ВложенныйЗапрос.Период
ГДЕ
ЦеныНоменклатурыПоставщиков.Номенклатура = &Номенклатура
СГРУППИРОВАТЬ ПО
ЦеныНоменклатурыПоставщиков.Номенклатура,
ЦеныНоменклатурыПоставщиков.Цена,
ВложенныйЗапрос.Цена
(3) попробовал с объединением, но теперь нужно их как-то склеить по строчкам, а то расползлись):
ВЫБРАТЬ
ЦеныНоменклатурыПоставщиков.Период КАК Период,
ЦеныНоменклатурыПоставщиков.Номенклатура КАК Номенклатура,
0 КАК ПредыдущаяЦена,
ЦеныНоменклатурыПоставщиков.Цена КАК Цена
ИЗ
РегистрСведений.ЦеныНоменклатурыПоставщиков КАК ЦеныНоменклатурыПоставщиков
ГДЕ
ЦеныНоменклатурыПоставщиков.Номенклатура = &Номенклатура
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ЦеныНоменклатурыПоставщиков.Период,
ЦеныНоменклатурыПоставщиков.Номенклатура,
ЦеныНоменклатурыПоставщиков.Цена,
0
ИЗ
РегистрСведений.ЦеныНоменклатурыПоставщиков КАК ЦеныНоменклатурыПоставщиков
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ЦеныНоменклатурыПоставщиковСрезПоследних.Период КАК Период,
ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура КАК Номенклатура,
ЦеныНоменклатурыПоставщиковСрезПоследних.Цена КАК Цена
ИЗ
РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних КАК ЦеныНоменклатурыПоставщиковСрезПоследних) КАК ВложенныйЗапрос
ПО ЦеныНоменклатурыПоставщиков.Номенклатура = ВложенныйЗапрос.Номенклатура
И ЦеныНоменклатурыПоставщиков.Период < ВложенныйЗапрос.Период
ГДЕ
ЦеныНоменклатурыПоставщиков.Номенклатура = &Номенклатура
Это частный случай задачи "Срез последних на каждую дату в запросе". В ИР решается нажатием одной кнопки после настройки связи таблиц https://www.hostedredmine.com/issues/1006018 . В твоем случае таблицы будут одинаковы и условие сравнения дат будет строго меньше/больше.