Добрый день
 В запросе к срезу последних (скрин ниже) я получаю несколько строк результата, строки регистра сведений отличаются
либо контрагентом либо регистратором (типом документа).
 В конфигурации для таких задач используется функция :
СтруктураЦен=РегистрыСведений.Цены.ПолучитьПоследнее(НаМомент,СтруктураОтбора);
но как сделать это запросом ?
Выбрать ПЕРВЫЕ 1 конечно же не подойдет, т.к. имеется список номенклатуры, а на выходе будет одна строка
Спасибо
---
А зачем в этом случае вообще использовать срез последних, если мы хотим получить последние записи регистра по номенклатуре, игнорируя другие измерения?
```1c
    ВЫБРАТЬ
    Цены.Номенклатура КАК Номенклатура,
    МАКСИМУМ(Цены.Период) КАК Период
    ПОМЕСТИТЬ ДатыПоследнихЗаписей
    ИЗ
    РегистрСведений.Цены КАК Цены
    ГДЕ
    Цены.Номенклатура В(&Номенклатура)

    СГРУППИРОВАТЬ ПО
    Цены.Номенклатура
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ДатыПоследнихЗаписей.Номенклатура КАК Номенклатура,
    Цены.Цена КАК Цена
    ИЗ
    ДатыПоследнихЗаписей КАК ДатыПоследнихЗаписей
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Цены КАК Цены
    ПО ДатыПоследнихЗаписей.Номенклатура = Цены.Номенклатура
    И ДатыПоследнихЗаписей.Период = Цены.Период
```
---
Вот сколько у вас типов цен, столько и будет выдавать на каждую позицию.
В запросе нужно добавить:

```1c
    Номенклатура в (&Номенклатура) И ТипЦен = &НужныйТипЦен
```
---
Вот где то такой запрос будет:

```1c
    ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
    ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
    &Момент,
    ВидЦены = &НужныйВидЦен
    И Номенклатура В (&Номенклатура)) КАК ЦеныНоменклатурыСрезПоследних
```

Если используются характеристики, то будет так:

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

ИЗ
 РегистрСведений.Цены.СрезПоследних(&Момент,Номенклатура В (&Номенклатура)) КАК ЦеныСрезПоследних
---
а регистр сведений Цены точно периодический? Если нет, то в (5) решение
---
Во временную выбрать из среза последних Номенклатуру и МАКСИМУМ(Период) сгруппировать по номенклатуре.
Потом выбрать из среза последних Номенклатуру и Цену и внутреннее соединение с временной таблицей по номенклатуре и периоду.
---
А зачем в этом случае вообще использовать срез последних, если мы хотим получить последние записи регистра по номенклатуре, игнорируя другие измерения?
```1c
    ВЫБРАТЬ
    Цены.Номенклатура КАК Номенклатура,
    МАКСИМУМ(Цены.Период) КАК Период
    ПОМЕСТИТЬ ДатыПоследнихЗаписей
    ИЗ
    РегистрСведений.Цены КАК Цены
    ГДЕ
    Цены.Номенклатура В(&Номенклатура)

    СГРУППИРОВАТЬ ПО
    Цены.Номенклатура
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ДатыПоследнихЗаписей.Номенклатура КАК Номенклатура,
    Цены.Цена КАК Цена
    ИЗ
    ДатыПоследнихЗаписей КАК ДатыПоследнихЗаписей
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Цены КАК Цены
    ПО ДатыПоследнихЗаписей.Номенклатура = Цены.Номенклатура
    И ДатыПоследнихЗаписей.Период = Цены.Период
```
---
Работает
---
в общем результат выдается в разрезе всех уникальных комбинаций измерений,
что бы исключить ненужные так-же в отборе добавляйте условие по др. измерениям как и условие по номенклатуре
---
По типу документов ДА работает, но по контрагенту это просто смешно сами, думаю понимаете - это не технический параметр, как мы угадаем, постоянно новые фирмы поставщики открываются к тому же....
---
А чью тогда цену вы хотите получить? Просто рандомного поставщика? В чем смысл то?
---
Последнюю, т.е. актуальную
---
Затем, что ТС хочет это дело видеть на определенную дату как я понял. Но можно и ваш вариант, только условие в первом запросе по периоду сделать. Что будет быстрее по скорости не знаю...
---
а смысл запроса то в чем? напишите конкретно, лучше с примером, что вы хотите получить?
у вас кроме Номенклатуры, в каждой строчке полно других важных данных
Вид/Тип цены, Валюта, Контрагент

нельзя так ставить вопрос: мне нужна номенклатура просто с последней ценой!
---
Номенклатура с последней ценой поступления, т.е. из регистра сведений цены берем закупочные и последняя из них и будет актуальной ценой закупки
---
хм, вот такой запрос вырисовывается

для Номенклатуры и Типа цены Поступление (Закупка) ищете максимальный период
затем для этих трех полей получаете цену
и то не факт что не задвоится, так как в один и тот же день, могли купит товар у разных контрагентов!

в этом случае результат запроса еще и проагрегировать надо, например на Максимум(Цена)
с группировкой по Товар, ТипЦены, Период (в принципе ТипЦены еще в первом подзапросе можно отбросить)