К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Агрегатная функция в запросе к регистру сведений

Гость
0 - 21.05.2014 - 13:32
Всем привет!
Подскажите, плиз, есть ли вариант в запросе вытащить МАКСИМУМ по ценам из регистра сведений приведя их к единой валюте?
База УТ 10.3.



Гость
1 - 21.05.2014 - 13:45
Не вижу препятствий. Что не получается-то?
2 - 21.05.2014 - 13:50
афтар не договаривает максимум чего - по номенклактуре и/или типу цен, дате ?
Гость
3 - 23.05.2014 - 17:56
В запросе есть валюта (ссылка)
Нужно в запросе сначала взять произведение курса валюты и цены, а потом взять максимум. Как лучше это сделать?
4 - 23.05.2014 - 19:24
Я бы делал пакетным запросом...
Гость
5 - 23.05.2014 - 21:07
Нужно просто взять яйца в кулак и сделать работу.
Гость
6 - 03.06.2014 - 18:56
Еще раз добрый день!
Так задачу и недомучал :(
Вот запрос ткните носом что не так
ВЫБРАТЬ
НовыеЦены.Номенклатура,
НовыеЦены.ЦенаРуб,
НовыеЦены.Цена,
НовыеЦены.Валюта
ИЗ
(ВЫБРАТЬ
НовыеЦены.Номенклатура КАК Номенклатура,
МАКСИМУМ(НовыеЦены.Цена * Курсы.Курс) КАК ЦенаРуб,
НовыеЦены.Цена КАК Цена,
НовыеЦены.Валюта КАК Валюта
ИЗ
РегистрСведений.мегапрайсЦеныНоменклатурыПоставщик ов.СрезПоследних КАК НовыеЦены
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних КАК Курсы
ПО НовыеЦены.Валюта = Курсы.Валюта
ГДЕ
НовыеЦены.Номенклатура В ИЕРАРХИИ(&Номенклатура)

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

СГРУППИРОВАТЬ ПО
НовыеЦены.Номенклатура,
НовыеЦены.ЦенаРуб,
НовыеЦены.Цена,
НовыеЦены.Валюта
Гость
7 - 03.06.2014 - 18:59
Собственно задача состоит в том, что нужно выбрать максимальные цены по номенклатуре с приведением их к единой валюте. Т.к. храняться они и в рублях и в у.е.
А в результате выдать цену и валюту в которой она храниться.
Этот результат дальше будет присоединяться к другом запросе к другим данным.
Гость
8 - 03.06.2014 - 21:21
* Вложенный запрос - сразу в топку. Запрос должен быть пакетным.
* Схема запроса:
1. Выбрать в отдельную таблицу список номенклатуры, которая интересует пользователя. Именно здесь наложить все фильтры.
2. Выбрать данные о ценах из виртуальной таблицы "срез последних" регистра "ЦеныНоменклатуры" с использованием параметров виртуальной таблицы для отбора цен по номенклатуре из п.1.
3. Соединить результат п.2 с реальной таблицей регистра "КурсыВалют" по полю период с условием "Цена.Период > КурсыВалют.Период И Цена.Валюта = КурсыВалют.Валюта". К полю "КурсыВалют.Период" применить агрегатную функцию "Максимум". В результате получится таблица, аналогичная п.2, но с дополнительной колонкой, в которой будет содержаться дата курса валюты, действительного для каждой цены.
4. Результат п.3 снова соединяем с реальной таблицей курсов валют по дате курса валюты и самой валюте. В результате должна получиться таблица с данными как о ценах, так и о курсах, действительных для этих цен. Здесь уже можно сделать пересчет в нужную валюту. Только не забудьте хотя бы про кратность валюты.
Гость
9 - 04.06.2014 - 02:32
Наверное невнятно поставил задачу.
Еще раз что нужно:
Есть куча прайсов от поставщиков, они обновляются почти каждый день. Храняться в регистре сведений РегистрСведений.мегапрайсЦеныНоменклатурыПоставщик ов.
Нужно на текущий момент времени:
1. Создать таблицу с ценами по списку номенклатуры.
2. Привести их к единой валюте по курсу на текущий момент. Т.е. получить цену в рублях. Если цена уже в рублях. Она таковой и остается.
3. Выбрать максимальную цену в разрезе номенклатуры.
4. Из получившегося результата вывести таблицу с полями Номенклатура, Цена (само значение в регистре), валюта в которой хранится цена.
Вот собственно и все.
В принципе, конечно, нужно еще наложить условия по поставщикам (фильтр) и по периоду цен, но это уже дальше. Сейчас результат запроса выдает максимум по двум разрезам сразу и по цене и по цене в рублях. Как получить максимальную цену в рублях а в таблицу вставить в валюте? вот в чем вопрос.
Гость
10 - 04.06.2014 - 08:19
9-roofus_leo >
1) получить исходную таблицу в виде Номенклатура-Валюта-Цена - ЦенаRUR. Положить во временную
2) сгруппировать Max(ЦенаRUR)по Номенклатуре
3) К полученной сагрегированной слева прицепить сохранённую в 1) по Номенклатура и ЦенаRUR
Гость
11 - 04.06.2014 - 12:38
Вот что в итоге получилось
Выдает вроде то, что нужно.
Просто как-то коряво написал :(
+ Code
ВЫБРАТЬ
МаксЦеныРуб.Номенклатура КАК Номенклатура,
МаксЦеныРуб.Поле1,
ИсхТабл.Цена,
ИсхТабл.Валюта
ИЗ
(ВЫБРАТЬ
Цены.Номенклатура КАК Номенклатура,
МАКСИМУМ(Курсы.Курс * Цены.Цена) КАК Поле1
ИЗ
РегистрСведений.мегапрайсЦеныНоменклатурыПоставщик ов.СрезПоследних(, ) КАК Цены
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних КАК Курсы
ПО Цены.Валюта = Курсы.Валюта
ГДЕ
Цены.Номенклатура В ИЕРАРХИИ(&Номенклатура)
И Цены.ПрайсПартнера.Партнер В ИЕРАРХИИ(&Партнер)
И Цены.Регистратор.Дата >= &НачПериод

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

УПОРЯДОЧИТЬ ПО
Номенклатура


К списку вопросов






Copyright ©, Все права защищены