Выбрать одну запись по определённому условию из запроса в динамическом списке

1. grrrrggg 11.05.23 09:29 Сейчас в теме
Всем Доброе утро, появилась проблема в выборе из регистра.СрезПоследних. Почему-то выводятся записи, которые не являются последними по дате. В выборке появляется не только одна последняя запись, а их некоторое количество, что очень странно ¯\_(ツ)_/¯ .
Как правильно написать запрос в динамическом списке так, что бы выбиралась только одна запись с максимальным/последним периодом (с последней датой проведения документа, если так будет проще понять)?
По теме из базы знаний
Найденные решения
26. grrrrggg 11.05.23 13:05 Сейчас в теме
Всем спасибо за предоставленное время и внимание, решение нашлось само собой!) Нужно было наложить ещё одно условие на запрос к таблице
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. nomad_irk 72 11.05.23 10:07 Сейчас в теме
(1)СрезПоследних формируется по ВСЕМ комбинациям ИЗМЕРЕНИЙ, поэтому ничего странного, если у регистра больше одного измерения.
12. grrrrggg 11.05.23 10:31 Сейчас в теме
(4)
Но, регистр.СрезПоследних должен же по сути выдавать последнюю проведённую запись, а не внутри какого то диапазона, а в моём случае, какие то записи дублируются с минимальными различиями в данных (таких как дата проведения)
13. spacecraft 11.05.23 10:32 Сейчас в теме
(12) записи не дублируются, просто не все измерения выводите на форму, но в запросе они получаются все.
14. grrrrggg 11.05.23 10:34 Сейчас в теме
(13)
А как именно вывести последнюю запись в динамическом списке? Что бы она была одна, а не их некоторое количество
16. spacecraft 11.05.23 10:37 Сейчас в теме
(14) решать, что конкретно оставить из измерений, и какие данные агрегировать.
Т.е. на том же примере с ценами:
ВЫБРАТЬ
    ЦеныНоменклатуры.Период КАК Период,
    ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
    МАКСИМУМ(ЦеныНоменклатуры.Цена) КАК Цена,
...
15. nomad_irk 72 11.05.23 10:35 Сейчас в теме
(12)Он и выдает по ВСЕМ комбинациям ИЗМЕРЕНИЙ. Пока вы это не поймете, вы будете удивляться результату.
Только вы определяете для себя, что для ВАС является единственная запись - напишите запрос под ваши требования.

Пример с ценами номенклатуры в (5) - показательный, т.к. видов цен/характеристик номенклатуры может быть несколько - вы можете получить количество записей равное количеству видов цен/характеристик номенклатуры.
19. spacecraft 11.05.23 10:41 Сейчас в теме
(15)
Пример с ценами номенклатуры в (5) - показательный, т.к. видов цен может быть несколько и на одну дату вы можете получить количество записей равное количеству видов цен.

Для справки, там будут выбраны разные записи по видам цен но только на одну последнюю дату. В отличие, когда просто будут выбраны по всем записям разных видов цен.
5. spacecraft 11.05.23 10:19 Сейчас в теме
(1) если отсеять только по дате, то как вариант:
ВЫБРАТЬ
	МАКСИМУМ(РегистрСведенийЦеныНоменклатурыСрезПоследних.Период) КАК Период,
	РегистрСведенийЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ ВТ_Периоды
ИЗ
	РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК РегистрСведенийЦеныНоменклатурыСрезПоследних

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЦеныНоменклатуры.Период КАК Период,
	ЦеныНоменклатуры.Регистратор КАК Регистратор,
	ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
	ЦеныНоменклатуры.Характеристика КАК Характеристика,
	ЦеныНоменклатуры.ВидЦены КАК ВидЦены,
	ЦеныНоменклатуры.Цена КАК Цена,
	ЦеныНоменклатуры.Упаковка КАК Упаковка,
	ЦеныНоменклатуры.Валюта КАК Валюта,
	ЦеныНоменклатуры.Формула КАК Формула,
	ЦеныНоменклатуры.МаркетинговоеМероприятие КАК МаркетинговоеМероприятие
ИЗ
	ВТ_Периоды КАК ВТ_Периоды
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
		ПО ВТ_Периоды.Период = ЦеныНоменклатуры.Период
			И ВТ_Периоды.Номенклатура = ЦеныНоменклатуры.Номенклатура
Показать
6. nomad_irk 72 11.05.23 10:28 Сейчас в теме
(5)что выдаст такой запрос, если одной датой будет установлены цены по разным видам цен?
7. spacecraft 11.05.23 10:29 Сейчас в теме
(6) я же не просто так указал: "если отсеять только по дате"
10. nomad_irk 72 11.05.23 10:30 Сейчас в теме
(7)я тоже не просто так задаю вопрос, как и ТС, по всей видимости
11. spacecraft 11.05.23 10:31 Сейчас в теме
(10) ответ был только на это: "Почему-то выводятся записи, которые не являются последними по дате. "
18. nomad_irk 72 11.05.23 10:40 Сейчас в теме
(11)пойдем на второй круг: нужны ограничения на измерения, по одной дате - не ограничить в общем случае
20. spacecraft 11.05.23 10:42 Сейчас в теме
21. nomad_irk 72 11.05.23 10:44 Сейчас в теме
(20)в таком случае зачем предлагать заведомо нерабочий вариант в (5)?
23. spacecraft 11.05.23 10:49 Сейчас в теме
(21) не притворяйся, что не понял. Ответ уже был.
8. grrrrggg 11.05.23 10:29 Сейчас в теме
(5)
Как будто, ваша реализация правдива и должна работать. И в правду, один из вариантов, как можно решить проблему, это сортировать по периоду и получить самую позднюю/последнюю дату, но всё равно, по какой-то неведанной причине такое не сработало, и всё равно остались повторяющиеся записи, в которых различие только в данных регистра.
9. spacecraft 11.05.23 10:30 Сейчас в теме
(8) это разные ключи по всем измерениям на одну и туже дату.
17. wertep 23 11.05.23 10:40 Сейчас в теме
(1) 1. Условие нужно писать не в "ГДЕ", а в параметрах виртуальной таблицы.
2. Одна запись у вас будет только если в условии указаны все измерения, и период если он есть. Иначе записей будет не одна.

И для конкретизации обсуждения хотелось бы видеть сам запрос.
2. TokarevV 30 11.05.23 09:44 Сейчас в теме
Выложите запрос, который сейчас выполняется.
3. grrrrggg 11.05.23 10:06 Сейчас в теме
(2)
К сожалению, нет возможности поделиться запросом с Вами, поэтому и ищу возможности и идеи, как можно это было бы сделать со стороны запроса, создав условие выборки одного из множества одинаковых записей.
22. grrrrggg 11.05.23 10:47 Сейчас в теме
Что бы была понятна общая картина, которую я пытаюсь решить.
Есть мобильные программы, версии которых я контролирую. После обновления, в регистре сведения я провожу документ где фиксирую новую версию.
Теперь же мне нужно получить общим списком каждую программу и показать текущую и последнюю версии программ, что бы пользователь мог видеть, что нужно обновлять, а что нет. Из-за чего-то, при выведении данного запроса, некоторые продукты дублируются с разницей в версиях.
Я так думаю, решить это можно, взяв последнюю по периоду, или сделать выборку по максимальному периоду и взять первую строку, но, как это сделать в пределах динамического списка, не очень понятно. Надеюсь картина стала более ясной:)
Спасибо за Ваше терпение, внимание и помощь!
24. spacecraft 11.05.23 10:49 Сейчас в теме
(22) структура регистра какая?
26. grrrrggg 11.05.23 13:05 Сейчас в теме
Всем спасибо за предоставленное время и внимание, решение нашлось само собой!) Нужно было наложить ещё одно условие на запрос к таблице
25. wertep 23 11.05.23 10:52 Сейчас в теме
(22) Текущая версия где хранится?
По хорошему у тебя должно быть два регистра.

РС.Обновления:
Измерения: Программа, ГдеУстановлена
Ресурсы: ВерсияПрограммы.

РС.ПоследниеВерсии:
Измерения: Программа.
Ресурсы: ВерсияПрограммы.

Тогда просто берешь срез последних у обоих регистров и соединяешь по Программа.

Проектируйте правильно исходя из того что хотите получить в итоге.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот