|
СКД, получение максимального значения по реквизиту | ☑ | ||
---|---|---|---|---|
0
mishkerdon
19.05.14
✎
11:54
|
Здравствуйте! Помогите пожалуйста, в СКД есть группировка по элементу справочника, мне надо в ресурсах получить элемент с максимальным значением какого-либо реквизита этого элемента. Ну например, есть справочник Товары с реквизитом Цена. Мне надо получить тот товар, у которого самая большая цена, как реализовать это через вычисляемые поля и ресурсы СКД?
|
|||
1
fisher
19.05.14
✎
12:52
|
Непонятно, как должен выглядеть результат в отчете.
|
|||
2
Enders
19.05.14
✎
12:53
|
(0) а почему не сразу в запросе?
|
|||
3
mishkerdon
19.05.14
✎
13:02
|
Я конечно немножко утрировал насчет справочника. Сейчас объясню подробнее.
ну например так выглядит справочник: Товар (ссылка на справочник Товар), Склад (ссылка на справочник Склад), Цена (Число). Товар может встречаться на одном складе несколько раз, и на разных складах может быть один и тот же товар, цены могут быть как разные, так и одинаковые. Я в СКД делаю группировку по полю Склад, и мне надо вытащить на этом складке товар с самой высокой ценой. |Склад1|Товар5|50,00| |Склад2|Товар3|35,00| |Склад3|Товар5|100,00| |
|||
4
fisher
19.05.14
✎
13:35
|
Задача не совсем тривиальная. Совсем простых путей не вижу. В СКД только какие-то извраты в голову лезут типа связанных наборов данных. Лучше всего прямо в запросе это сделать.
Но и в запросе только коррелирующие подзапросы в голову лезут :) |
|||
5
Alex S D
19.05.14
✎
13:44
|
ну сделай еще один запрос с группировками, и соединяй с ним потом
|
|||
6
fleet
19.05.14
✎
14:30
|
Попробуй настроить отчет следующим образом:
1. Создаем группировку склад. 2. Создаем вложенную группировку "Детальные записи" 3. Выделяем группировку "Детальные записи" и на вкладке "Другие настройки" указываем "Количество записей" = 1 4. В сортировке указываем "Цена" по убыванию Пример: http://i062.radikal.ru/1405/d6/27ca7d798f89.jpg Получится похоже на твое описание. |
|||
7
fisher
19.05.14
✎
15:47
|
(6) О, точно! Думал в эту сторону, но так и не вспомнил, как в СКД ограничить количество выводимых записей.
|
|||
8
mishkerdon
19.05.14
✎
16:55
|
нет мне не только надо вывести максимальную цену, мне еще надо вывести другие реквизиты товара. Вот в этом загвоздка, т.е. я должен определить именно какой Товар с самой высокой ценой, а не какая самая высокая цена по складу
|
|||
9
Classic
19.05.14
✎
16:56
|
А если товаров с максимальной ценой будет несколько?
|
|||
10
Enders
19.05.14
✎
17:00
|
(8) так в (6) вроде как один товар с максимальной ценой и есть)
В(9) кстати тоже правильный вопрос, что делать если таких товаров несколько. Если всё равно показывать только 1 случайный, то можно как в (6). Если все, тогда сначала сгруппировать и найти максимальную цену, а потом соединить изначальную таблицу с полученной таблицей макс цен. |
|||
11
fleet
19.05.14
✎
18:18
|
(8)
Что мешает на вкладке "выбранне поля" вывести другие реквизиты "товара"? А на вкладке дополнительно указать "Расположение реквизитов" для отчета в целом или конкретной группировки. (9) (10) В случае когда товаров с максимальной ценой будет несколько, можно в сортировке указать дополнительные поля, или вывести записей больше чем 1. Все зависит от целей, для которых разрабатывается отчет. |
|||
12
mishkerdon
19.05.14
✎
20:06
|
да, если товаров с одинаковой максимальной ценой будет несколько то первый попавшийся, неважно.
(10), меня интересует именно средствами СКД, так как группировка идет именно в СКД (в запросах получаю детальные записи без группировки, и не хотелось бы нарушать костылями саму идею СКД). Такое можно сделать? Временно сделал так - добавил вычисляемое поле ТоварСМаксимальнойЦеной с выражением "ВЫБОР КОГДА Цена=ВЫЧИСЛИТЬВЫРАЖЕНИЕ("Цена","Склад") ТОГДА Товар ИНАЧЕ NULL КОНЕЦ". Затем в ресурсах беру Максимум(Товар) по группировке Склад. Но тут есть одно но - непонятно как считать итоговые значения. Хотел было сделать еще одно вычисляемое поле Максимум(ВЫЧИСЛИТЬВЫРАЖЕНИЕСГРУППИРОВКОЙМАССИВ("ТоварСМаксимальнойЦеной"), но оказывается нельзя из одного вычисл поля брать другое вычисл поле. :( |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |