Получить последнюю цену закупки

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

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


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

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


Как сделать так, чтобы выбиралась только последняя цена на текущий момент, без учета остальных измерений?
По теме из базы знаний
Найденные решения
29. catena 110 15.02.18 06:29 Сейчас в теме
(28)Нет, этот запрос не может давать такой результат. Либо это разные номенклатуры, либо вы выгружаете другой запрос. Добавьте в результирующую таблицу код номенклатуры и период и покажите результат.
user597078_steem34; +1 Ответить
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. ZergKRSK 129 15.02.18 05:04 Сейчас в теме
(1) так вы определитесь какая из трех цен на примере нужная??? Без поставщиков это будет другой регистр - ЦеныНоменклатуры.
3. user597078_steem34 15.02.18 05:16 Сейчас в теме
(2) мне нужна последняя по дате, сейчас гляну, в ут 11, если я не ошибаюсь, поступления в РС ЦеныНоменклатуры данные не записывают
5. ZergKRSK 129 15.02.18 05:22 Сейчас в теме
(3) делайте МАКСИМУМ по периоду
6. user597078_steem34 15.02.18 05:27 Сейчас в теме
(5)Сделал так:

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

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

Результат не изменился, выгребает несколько разных цен от разных поставщиков(
7. ZergKRSK 129 15.02.18 05:39 Сейчас в теме
(6) какая периодичность у регистра?
8. user597078_steem34 15.02.18 05:42 Сейчас в теме
(7)В пределах секунды, сейчас скрины приложу
9. ZergKRSK 129 15.02.18 05:46 Сейчас в теме
(8) если в одной секунде одна и та же номенклатура от разных поставщиков то да, будет выходить в запрос.
11. user597078_steem34 15.02.18 05:53 Сейчас в теме
(9)(7) Вот весь код запроса:

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

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


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



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


Как обойти?
Прикрепленные файлы:
4. user597078_steem34 15.02.18 05:20 Сейчас в теме
(2) в РС ЦеныНоменклатуры этих цен нет
10. catena 110 15.02.18 05:51 Сейчас в теме
ВЫБРАТЬ
    ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура,
    МАКСИМУМ(ЦеныНоменклатурыПоставщиковСрезПоследних.Период) КАК Период
ПОМЕСТИТЬ ЦЕНЫЗАКУПКИ
ИЗ
    РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних(&ДатаКонца, ) КАК ЦеныНоменклатурыПоставщиковСрезПоследних

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

Группировка во втором запросе на случай, если в один период установлены цены для двух поставщиков. Обычно так не делают, но конфигурация не озвучена, а в разного рода самоделках возможно все.
12. user597078_steem34 15.02.18 05:56 Сейчас в теме
(10) нет, там цена не в один момент времени. Дело именно в разных поставщиках... посмотрите содержимое регистра



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


Как обойти?
Прикрепленные файлы:
13. catena 110 15.02.18 05:59 Сейчас в теме
(12)Запрос в (10). Сперва выбираете пару номенклатура-последний период. Потом к этому периоду подтягиваете цену. Это универсальный алгоритм получения среза последних по урезанному набору измерений.
16. user597078_steem34 15.02.18 06:06 Сейчас в теме
Сейчас попробую, спасибо)
18. ZergKRSK 129 15.02.18 06:14 Сейчас в теме
(13) этот универсальный алгоритм собирает МАКСИМАЛЬНУЮ цену. Это не то что нужно автору как я понял.
21. catena 110 15.02.18 06:17 Сейчас в теме
(18)Вы мои комментарии читали?
Группировка во втором запросе на случай, если в один период установлены цены для двух поставщиков. Обычно так не делают, но конфигурация не озвучена, а в разного рода самоделках возможно все.

Если, как утверждает автор, разные поставщики устанавливаются разными документами, этот Максимум рояля не играет.

(19)Этого не может быть, вы опять что-то забыли или не там проверяете. Но я не телепат и без наличия кода указать ошибку не могу
23. ZergKRSK 129 15.02.18 06:18 Сейчас в теме
(21)
Вы мои комментарии читали?
Конечно читал. А Вы постановку задачи автора читали? Где там про максимальную цену условие?
30. catena 110 15.02.18 06:33 Сейчас в теме
(23)Ну, расскажите мне про максимум цены:
Прикрепленные файлы:
31. ZergKRSK 129 15.02.18 06:34 Сейчас в теме
(30) Вам рассказать про максимум цены в ПЕРИОДЕ?
32. catena 110 15.02.18 06:35 Сейчас в теме
(31)Ага. То есть, теперь группировку по периоду вы заметили?
33. ZergKRSK 129 15.02.18 06:37 Сейчас в теме
(32) господи, Вы впали в нулевой цикл. Автору НЕ нужна максимальная цена в периоде!
36. catena 110 15.02.18 06:49 Сейчас в теме
(33)Автору нужна последняя цена по неполному набору измерений. Вот для того, чтобы исключить задвоение в одном периоде по неучитываемым измерениям я и сделала группировку. Любой агрегатной функцией. Как именно отсекать дубли в этом случае, решать автору, я лишь указала направление.
37. ZergKRSK 129 15.02.18 06:51 Сейчас в теме
(36) с чего Вы решили что автору нужна МАКСИМАЛЬНАЯ последняя цена? Может ему нужна первая попавшаяся?
38. catena 110 15.02.18 06:53 Сейчас в теме
(37) Любой агрегатной функцией. Любой агрегатной функцией. Любой агрегатной функцией.
я лишь указала направление.я лишь указала направление.я лишь указала направление.

))))))

Лучше покажите мне выбор "первой попавшейся"
40. ZergKRSK 129 15.02.18 06:58 Сейчас в теме
(38) не покажу, это слишком сложно для Вас раз не смогли этот шедевр уложить в один запрос без временных таблиц.
42. catena 110 15.02.18 07:04 Сейчас в теме
(40)А вот сейчас вы перешли на оскорбления, при чем безосновательные. До этого мне было еще весело, но теперь я заканчиваю диалог, т.к. конструктива в нем не вижу.
43. ZergKRSK 129 15.02.18 07:06 Сейчас в теме
(42) согласен, можно было заканчивать сразу после Вашего запроса )
26. user597078_steem34 15.02.18 06:19 Сейчас в теме
(21) Вот, со связью по периоду, никаких изменений(
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
	               |	ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура,
	               |	ЦеныНоменклатурыПоставщиковСрезПоследних.Период КАК Период,
	               |	ЦеныНоменклатурыПоставщиковСрезПоследних.Цена
	               |ПОМЕСТИТЬ ВСЕЦЕНЫ
	               |ИЗ
	               |	РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних(, ) КАК ЦеныНоменклатурыПоставщиковСрезПоследних
	               |;
	               |
	               |////////////////////////////////////////////////////////////­////////////////////
	               |ВЫБРАТЬ
	               |	ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура,
	               |	МАКСИМУМ(ЦеныНоменклатурыПоставщиковСрезПоследних.Период) КАК Период
	               |ПОМЕСТИТЬ ЦЕНЫСМАКСПЕРИОДОМ
	               |ИЗ
	               |	РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних КАК ЦеныНоменклатурыПоставщиковСрезПоследних
	               |
	               |СГРУППИРОВАТЬ ПО
	               |	ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура
	               |;
	               |
	               |////////////////////////////////////////////////////////////­////////////////////
	               |ВЫБРАТЬ
	               |	ВСЕЦЕНЫ.Номенклатура КАК Номенклатура,
	               |	ВСЕЦЕНЫ.Цена
	               |ИЗ
	               |	ВСЕЦЕНЫ КАК ВСЕЦЕНЫ
	               |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЦЕНЫСМАКСПЕРИОДОМ КАК ЦЕНЫСМАКСПЕРИОДОМ
	               |		ПО ВСЕЦЕНЫ.Номенклатура = ЦЕНЫСМАКСПЕРИОДОМ.Номенклатура
	               |			И ВСЕЦЕНЫ.Период = ЦЕНЫСМАКСПЕРИОДОМ.Период
	               |
	               |УПОРЯДОЧИТЬ ПО
	               |	ВСЕЦЕНЫ.Номенклатура.Наименование";

Показать
27. catena 110 15.02.18 06:20 Сейчас в теме
(26)Скрин результата и скрин регистра.
28. user597078_steem34 15.02.18 06:23 Сейчас в теме
Можете пример запроса показать, пожалуйста(

(27)

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

Показать


Прикрепляю два файла, один из них скрин регистра, второй скрин ТЗ в которую я выгружаю результат работы запроса.
Прикрепленные файлы:
29. catena 110 15.02.18 06:29 Сейчас в теме
(28)Нет, этот запрос не может давать такой результат. Либо это разные номенклатуры, либо вы выгружаете другой запрос. Добавьте в результирующую таблицу код номенклатуры и период и покажите результат.
user597078_steem34; +1 Ответить
34. user597078_steem34 15.02.18 06:40 Сейчас в теме
(29) да, вы правы, вывел в ТЗ ещё и код, оказалось что это разные товары))

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

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

Показать
35. ZergKRSK 129 15.02.18 06:45 Сейчас в теме
(34) мне интересно что вы будете делать когда одна и та же номенклатура будет иметь разные цены в одном периоде?
39. user597078_steem34 15.02.18 06:58 Сейчас в теме
(35) такое кажется маловероятным) как вы считаете нужно поправить запрос?
41. ZergKRSK 129 15.02.18 07:00 Сейчас в теме
(39) почему маловероятным? не знаю как в УТ, а вообще цены поставщиком могут регистрироваться автоматом при проведении первичных поступлений тмц, и если два разных поступления с одной тмц будут иметь одинаковые даты_время то получим тот самый маловероятный случай. Прежде чем править запрос надо ответить на вопрос - в этом маловероятном случае какую цену брать?
44. user597078_steem34 15.02.18 07:12 Сейчас в теме
(41) наверное просто сгруппирую по средней
22. user597078_steem34 15.02.18 06:17 Сейчас в теме
(18) да, это не то что нужно, мне нужно получить последние закупочные цены товаров из РС ЦеныНоменклатурыПоставщиков,Конфигурация УТ 11
14. catena 110 15.02.18 06:00 Сейчас в теме
(12)И грузите картинки в сообщение, а не на внешний ресурс, не у всех есть доступы во вне.
15. user597078_steem34 15.02.18 06:05 Сейчас в теме
(14) почему-то на сайт не загружалась, решил так добавить, извиняюсь.

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


Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
	               |	ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура,
	               |	ЦеныНоменклатурыПоставщиковСрезПоследних.Период КАК Период,
	               |	ЦеныНоменклатурыПоставщиковСрезПоследних.Цена
	               |ПОМЕСТИТЬ ВСЕЦЕНЫ
	               |ИЗ
	               |	РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних(, ) КАК ЦеныНоменклатурыПоставщиковСрезПоследних
	               |;
	               |
	               |////////////////////////////////////////////////////////////­////////////////////
	               |ВЫБРАТЬ
	               |	ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура,
	               |	МАКСИМУМ(ЦеныНоменклатурыПоставщиковСрезПоследних.Период) КАК Период
	               |ПОМЕСТИТЬ ЦЕНЫСМАКСПЕРИОДОМ
	               |ИЗ
	               |	РегистрСведений.ЦеныНоменклатурыПоставщиков.СрезПоследних КАК ЦеныНоменклатурыПоставщиковСрезПоследних
	               |
	               |СГРУППИРОВАТЬ ПО
	               |	ЦеныНоменклатурыПоставщиковСрезПоследних.Номенклатура
	               |;
	               |
	               |////////////////////////////////////////////////////////////­////////////////////
	               |ВЫБРАТЬ
	               |	ВСЕЦЕНЫ.Номенклатура,
	               |	ВСЕЦЕНЫ.Цена
	               |ИЗ
	               |	ВСЕЦЕНЫ КАК ВСЕЦЕНЫ
	               |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЦЕНЫСМАКСПЕРИОДОМ КАК ЦЕНЫСМАКСПЕРИОДОМ
	               |		ПО ВСЕЦЕНЫ.Номенклатура = ЦЕНЫСМАКСПЕРИОДОМ.Номенклатура";
	
Показать
17. catena 110 15.02.18 06:08 Сейчас в теме
(15)А где соединение по периоду в последнем запросе?
19. user597078_steem34 15.02.18 06:15 Сейчас в теме
(17)со связью по периоду тоже ничего не получилось
20. ZergKRSK 129 15.02.18 06:16 Сейчас в теме
(19) этот универсальный алгоритм собирает МАКСИМАЛЬНУЮ цену. Более того можно было обойтись и без временной таблицы...
24. catena 110 15.02.18 06:18 Сейчас в теме
(20)Этот алгоритм собирает максимальную цену в ПЕРИОДЕ, если вы читали весь запрос, а не только название агрегатной функции
25. ZergKRSK 129 15.02.18 06:19 Сейчас в теме
(24) я вижу что собирает этот "универсальный" алгоритм... Делается это даже без временной таблицы если что.
45. DarkDaemon 28.09.21 04:06 Сейчас в теме
Как получить последнюю цену закупа - понятно. А если продукция не закупается, а производится и потом заносится документом "Поступление из производства" с указанием вида цен - Закупочная (УТ 11.4)? как получить последнюю цену себестоимости? В регистрах Цены номенклатуры и Цены номенклатуры поставщиков ее нет. Из документа брать цену вроде как не хорошо
Оставьте свое сообщение
Вакансии
Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день

Программист 1C
Волгоград
зарплата от 200 000 руб.
Полный день

Аналитик
Санкт-Петербург
зарплата от 200 000 руб. до 250 000 руб.
Полный день