Имя: Пароль:
1C
1С v8
СКД, получение максимального значения по реквизиту
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 КОНЕЦ". Затем в ресурсах беру Максимум(Товар) по группировке Склад. Но тут есть одно но - непонятно как считать итоговые значения. Хотел было сделать еще одно вычисляемое поле Максимум(ВЫЧИСЛИТЬВЫРАЖЕНИЕСГРУППИРОВКОЙМАССИВ("ТоварСМаксимальнойЦеной"), но оказывается нельзя из одного вычисл поля брать другое вычисл поле. :(