Розница, редакция 2.2 (2.2.6.33)
1С:Предприятие 8.3 (8.3.13.1513)

Пытаюсь выполнить такой запрос

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

Суть в том что пытаюсь получить наиболее актуальные цены на дату документа. Естественно т.к. движение "Приход" в основном фрмируют документы поступления то актуальная цена будет назначена установкой цен с временем позже прихода и в плане движения с типом расход будет действовать обратная логика.

В итоге получаю:

21.07.2017 12:32:44 35 01.09.2018 20:56:04 КАРТОФЕЛЬ (Соц цена) Расход 13,404 Отчет о розничных продажах 0000-000243 от 01.09.2018 20:56:04
21.07.2017 12:32:44 35 01.09.2018 20:56:04 КАРТОФЕЛЬ (Соц цена) Расход 5,01 Отчет о розничных продажах 0000-000243 от 01.09.2018 20:56:04
21.07.2017 12:32:44 35 01.09.2018 20:56:04 КАРТОФЕЛЬ (Соц цена) Расход 19,92 Отчет о розничных продажах 0000-000243 от 01.09.2018 20:56:04
21.07.2017 13:44:30 36 01.09.2018 20:56:04 КАРТОФЕЛЬ (Соц цена) Расход 5,01 Отчет о розничных продажах 0000-000243 от 01.09.2018 20:56:04
21.07.2017 13:44:30 36 01.09.2018 20:56:04 КАРТОФЕЛЬ (Соц цена) Расход 13,404 Отчет о розничных продажах 0000-000243 от 01.09.2018 20:56:04
21.07.2017 13:44:30 36 01.09.2018 20:56:04 КАРТОФЕЛЬ (Соц цена) Расход 19,92 Отчет о розничных продажах 0000-000243 от 01.09.2018 20:56:04

Это по расходу, понятно что строчки три потому что в документе две разные скидки и обычная цена.
но непонятно почему взяты две цены а не та что позже по времени (двоится только если было две установки цен на одну дату) и более всего не понятно почему именно 21.07.2017 если есть более свежие установки до 01.09.2018 допустим 24.08.2018.
С приходом тоже тупняк
02.10.2018 10:58:59 90 01.09.2018 12:09:46 ЯЙЦО ДОМАШНЕЕ ОТБОРНОЕ+КОРОБКА (Толстоногов) Приход 9 Поступление товаров 0000-002399 от 01.09.2018 12:09:46
Взята самая максимальная дата установки цен а не ближайшая к документу. А дублирующихся записей вообще нет.

Чего я не понимаю?
---
В общем учитывая что данные будут браться за большие периоды и тот запрос который я привел является всего-лишь частью более объемного запроса я искал способы избежать вложенных запросов для увеличения производительности.
В итоге было решено соорудить нечто на примере описанном ТУТ.
Хотя должен сказать что вариант педставленный buganov тоже возможно реализовать
---
Попробуйте сначала выбрать максимально близкие к документу периоды цен, потом по эти периодам получите актуальные для документа
Грубо говоря так:

Выбрать ВложенныйЗапрос.(ТоварыНаСкладах.*),
               ЦеныНоменклатуры.Цена,
               ВложенныйЗапрос.ПериодЦены
Из (
Выбрать ТоварыНаСкладах.*,
                        Максимум(Цены.Период
        Из Регистр.ТНС Как ТоварыНаСкладах
             Левое Соединение РегистрЦен Как Цены
             По ( измерения ) И ТНС.Дата >= Цены.Период
Сгруппировать
) Как ВложенныйЗапрос
Левое соединение РегистрЦен
По (Измерения ) И ПериодЦены = РегистрЦен.Период

Что то подобное
---
В общем учитывая что данные будут браться за большие периоды и тот запрос который я привел является всего-лишь частью более объемного запроса я искал способы избежать вложенных запросов для увеличения производительности.
В итоге было решено соорудить нечто на примере описанном ТУТ.
Хотя должен сказать что вариант педставленный buganov тоже возможно реализовать