Выбрать одну запись по определённому условию из запроса в динамическом списке
Всем Доброе утро, появилась проблема в выборе из регистра.СрезПоследних. Почему-то выводятся записи, которые не являются последними по дате. В выборке появляется не только одна последняя запись, а их некоторое количество, что очень странно ¯\_(ツ)_/¯ .
Как правильно написать запрос в динамическом списке так, что бы выбиралась только одна запись с максимальным/последним периодом (с последней датой проведения документа, если так будет проще понять)?
Как правильно написать запрос в динамическом списке так, что бы выбиралась только одна запись с максимальным/последним периодом (с последней датой проведения документа, если так будет проще понять)?
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(12)Он и выдает по ВСЕМ комбинациям ИЗМЕРЕНИЙ. Пока вы это не поймете, вы будете удивляться результату.
Только вы определяете для себя, что для ВАС является единственная запись - напишите запрос под ваши требования.
Пример с ценами номенклатуры в (5) - показательный, т.к. видов цен/характеристик номенклатуры может быть несколько - вы можете получить количество записей равное количеству видов цен/характеристик номенклатуры.
Только вы определяете для себя, что для ВАС является единственная запись - напишите запрос под ваши требования.
Пример с ценами номенклатуры в (5) - показательный, т.к. видов цен/характеристик номенклатуры может быть несколько - вы можете получить количество записей равное количеству видов цен/характеристик номенклатуры.
(15)
Для справки, там будут выбраны разные записи по видам цен но только на одну последнюю дату. В отличие, когда просто будут выбраны по всем записям разных видов цен.
Пример с ценами номенклатуры в (5) - показательный, т.к. видов цен может быть несколько и на одну дату вы можете получить количество записей равное количеству видов цен.
Для справки, там будут выбраны разные записи по видам цен но только на одну последнюю дату. В отличие, когда просто будут выбраны по всем записям разных видов цен.
(1) если отсеять только по дате, то как вариант:
ВЫБРАТЬ
МАКСИМУМ(РегистрСведенийЦеныНоменклатурыСрезПоследних.Период) КАК Период,
РегистрСведенийЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ ВТ_Периоды
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК РегистрСведенийЦеныНоменклатурыСрезПоследних
СГРУППИРОВАТЬ ПО
РегистрСведенийЦеныНоменклатурыСрезПоследних.Номенклатура
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ЦеныНоменклатуры.Период КАК Период,
ЦеныНоменклатуры.Регистратор КАК Регистратор,
ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
ЦеныНоменклатуры.Характеристика КАК Характеристика,
ЦеныНоменклатуры.ВидЦены КАК ВидЦены,
ЦеныНоменклатуры.Цена КАК Цена,
ЦеныНоменклатуры.Упаковка КАК Упаковка,
ЦеныНоменклатуры.Валюта КАК Валюта,
ЦеныНоменклатуры.Формула КАК Формула,
ЦеныНоменклатуры.МаркетинговоеМероприятие КАК МаркетинговоеМероприятие
ИЗ
ВТ_Периоды КАК ВТ_Периоды
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ПО ВТ_Периоды.Период = ЦеныНоменклатуры.Период
И ВТ_Периоды.Номенклатура = ЦеныНоменклатуры.Номенклатура
Показать
(5)
Как будто, ваша реализация правдива и должна работать. И в правду, один из вариантов, как можно решить проблему, это сортировать по периоду и получить самую позднюю/последнюю дату, но всё равно, по какой-то неведанной причине такое не сработало, и всё равно остались повторяющиеся записи, в которых различие только в данных регистра.
Как будто, ваша реализация правдива и должна работать. И в правду, один из вариантов, как можно решить проблему, это сортировать по периоду и получить самую позднюю/последнюю дату, но всё равно, по какой-то неведанной причине такое не сработало, и всё равно остались повторяющиеся записи, в которых различие только в данных регистра.
(1) 1. Условие нужно писать не в "ГДЕ", а в параметрах виртуальной таблицы.
2. Одна запись у вас будет только если в условии указаны все измерения, и период если он есть. Иначе записей будет не одна.
И для конкретизации обсуждения хотелось бы видеть сам запрос.
2. Одна запись у вас будет только если в условии указаны все измерения, и период если он есть. Иначе записей будет не одна.
И для конкретизации обсуждения хотелось бы видеть сам запрос.
Что бы была понятна общая картина, которую я пытаюсь решить.
Есть мобильные программы, версии которых я контролирую. После обновления, в регистре сведения я провожу документ где фиксирую новую версию.
Теперь же мне нужно получить общим списком каждую программу и показать текущую и последнюю версии программ, что бы пользователь мог видеть, что нужно обновлять, а что нет. Из-за чего-то, при выведении данного запроса, некоторые продукты дублируются с разницей в версиях.
Я так думаю, решить это можно, взяв последнюю по периоду, или сделать выборку по максимальному периоду и взять первую строку, но, как это сделать в пределах динамического списка, не очень понятно. Надеюсь картина стала более ясной:)
Спасибо за Ваше терпение, внимание и помощь!
Есть мобильные программы, версии которых я контролирую. После обновления, в регистре сведения я провожу документ где фиксирую новую версию.
Теперь же мне нужно получить общим списком каждую программу и показать текущую и последнюю версии программ, что бы пользователь мог видеть, что нужно обновлять, а что нет. Из-за чего-то, при выведении данного запроса, некоторые продукты дублируются с разницей в версиях.
Я так думаю, решить это можно, взяв последнюю по периоду, или сделать выборку по максимальному периоду и взять первую строку, но, как это сделать в пределах динамического списка, не очень понятно. Надеюсь картина стала более ясной:)
Спасибо за Ваше терпение, внимание и помощь!
(22) Текущая версия где хранится?
По хорошему у тебя должно быть два регистра.
РС.Обновления:
Измерения: Программа, ГдеУстановлена
Ресурсы: ВерсияПрограммы.
РС.ПоследниеВерсии:
Измерения: Программа.
Ресурсы: ВерсияПрограммы.
Тогда просто берешь срез последних у обоих регистров и соединяешь по Программа.
Проектируйте правильно исходя из того что хотите получить в итоге.
По хорошему у тебя должно быть два регистра.
РС.Обновления:
Измерения: Программа, ГдеУстановлена
Ресурсы: ВерсияПрограммы.
РС.ПоследниеВерсии:
Измерения: Программа.
Ресурсы: ВерсияПрограммы.
Тогда просто берешь срез последних у обоих регистров и соединяешь по Программа.
Проектируйте правильно исходя из того что хотите получить в итоге.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот