Здравствуйте, помогите пожалуйста решить такую задачку: есть регистр сведений ЦеныНоменклатурыПоставщиков, мне нужно получить последние цены на все товары. Я делаю так:

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

Проблема в том, что строк в результате выполнения запроса с одним товаром может быть несколько, связано это с тем, как я понял, что в регистре отличаются значения измерений(таких как "Поставщик" и т.д.) В итоге я получаю что-то типа такого:

НазваниеТовара 100р.
НазваниеТовара 100р.
НазваниеТовара 120р.

Как сделать так, чтобы выбиралась только последняя цена на текущий момент, без учета остальных измерений?
---
Нет, этот запрос не может давать такой результат. Либо это разные номенклатуры, либо вы выгружаете другой запрос. Добавьте в результирующую таблицу код номенклатуры и период и покажите результат.
---
так вы определитесь какая из трех цен на примере нужная??? Без поставщиков это будет другой регистр - ЦеныНоменклатуры.
---
мне нужна последняя по дате, сейчас гляну, в ут 11, если я не ошибаюсь, поступления в РС ЦеныНоменклатуры данные не записывают
---
делайте МАКСИМУМ по периоду
---
Сделал так:

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

    СГРУППИРОВАТЬ ПО
    ЦеныНоменклатурыПоставщиковСрезПоследних.Цена,
    ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура
    ;
```

Результат не изменился, выгребает несколько разных цен от разных поставщиков(
---
какая периодичность у регистра?
---
В пределах секунды, сейчас скрины приложу
---
если в одной секунде одна и та же номенклатура от разных поставщиков то да, будет выходить в запрос.
---
(7) Вот весь код запроса:

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

    СГРУППИРОВАТЬ ПО
    ЦеныНоменклатурыПоставщиковСрезПоследних.Цена,
    ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура
```

Вот что находится в регистре:

Мне нужна только цена которая выделена красной рамкой, она последняя, а получаю я 2 цены, ту которая мне нужна и последнюю по второму партнеру...

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

    СГРУППИРОВАТЬ ПО
    ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура;
    Выбрать вт.Номенклатура, вт.Период, Максимум(Срез.ЦенаЗакупки) из ЦЕНЫЗАКУПКИ как вт
    Левое соединение РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних(&ДатаКонца, ) как Срез
    по Срез.Номенклатыра=вт.Номенклатура и Срез.Период=вт.Период
    Сгруппировать по вт.Номенклатура, вт.Период
```

Группировка во втором запросе на случай, если в один период установлены цены для двух поставщиков. Обычно так не делают, но конфигурация не озвучена, а в разного рода самоделках возможно все.
---
нет, там цена не в один момент времени. Дело именно в разных поставщиках... посмотрите содержимое регистра

Мне нужна только цена которая выделена красной рамкой, она последняя, а получаю я 2 цены, ту которая мне нужна и последнюю по второму партнеру...

Как обойти?
---
Запрос в (10). Сперва выбираете пару номенклатура-последний период. Потом к этому периоду подтягиваете цену. Это универсальный алгоритм получения среза последних по урезанному набору измерений.
---
Сейчас попробую, спасибо)
---
этот универсальный алгоритм собирает МАКСИМАЛЬНУЮ цену. Это не то что нужно автору как я понял.
---
Вы мои комментарии читали?
Группировка во втором запросе на случай, если в один период установлены цены для двух поставщиков. Обычно так не делают, но конфигурация не озвучена, а в разного рода самоделках возможно все.
Если, как утверждает автор, разные поставщики устанавливаются разными документами, этот Максимум рояля не играет.

(19)Этого не может быть, вы опять что-то забыли или не там проверяете. Но я не телепат и без наличия кода указать ошибку не могу
---
Вы мои комментарии читали? Конечно читал. А Вы постановку задачи автора читали? Где там про максимальную цену условие?
---
Ну, расскажите мне про максимум цены:
---
Вам рассказать про максимум цены в ПЕРИОДЕ?
---
Ага. То есть, теперь группировку по периоду вы заметили?
---
господи, Вы впали в нулевой цикл. Автору НЕ нужна максимальная цена в периоде!
---
Автору нужна последняя цена по неполному набору измерений. Вот для того, чтобы исключить задвоение в одном периоде по неучитываемым измерениям я и сделала группировку. Любой агрегатной функцией. Как именно отсекать дубли в этом случае, решать автору, я лишь указала направление.
---
с чего Вы решили что автору нужна МАКСИМАЛЬНАЯ последняя цена? Может ему нужна первая попавшаяся?
---
Любой агрегатной функцией. Любой агрегатной функцией. Любой агрегатной функцией.
я лишь указала направление.я лишь указала направление.я лишь указала направление.

))))))

Лучше покажите мне выбор "первой попавшейся"
---
не покажу, это слишком сложно для Вас раз не смогли этот шедевр уложить в один запрос без временных таблиц.
---
А вот сейчас вы перешли на оскорбления, при чем безосновательные. До этого мне было еще весело, но теперь я заканчиваю диалог, т.к. конструктива в нем не вижу.
---
согласен, можно было заканчивать сразу после Вашего запроса )
---
Вот, со связью по периоду, никаких изменений(

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

(27)

Запрос:

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

Прикрепляю два файла, один из них скрин регистра, второй скрин ТЗ в которую я выгружаю результат работы запроса.
---
Нет, этот запрос не может давать такой результат. Либо это разные номенклатуры, либо вы выгружаете другой запрос. Добавьте в результирующую таблицу код номенклатуры и период и покажите результат.
---
да, вы правы, вывел в ТЗ ещё и код, оказалось что это разные товары))

Запрос переписал так:

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

Попробовал так, тоже ничего не получается(

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