Имя: Пароль:
1C
1С v8
СКД получить первый элемент массива
0 andrey02
 
30.07.15
11:25
Есть, например, такой набор данных:
Клиент | Товар | Количество
Вася | Стол | 5
Вася | Диван | 10
Вася | Кровать | 1
Петя | Стол | 5
Петя | Стул | 3
Петя | Диван | 3
Нужно получить отчет по наиболее частым товарам в разрезе покупателей (либо другого поля отчета), т.е., например, такой:
Вася | Диван
Петя | Стол
Добавил вычисляемое поле «НаиболееЧастыйТовар», в ресурсах для него пишу:
ВычислитьВыражение("
Массив(
Упорядочить(
ВычислитьВыражениеСГруппировкойТаблицаЗначений(""Товар, Сумма(Количество) КАК Количество"", ""Товар"")
, ""Количество Убыв"")
)
")
Смысл выражения: получаем таблицу значений с итого количество по товарам, сортируем ее по убыванию количества, получаем массив товаров, первый элемент которого и есть нужный – с максимальным количеством в текущей группировке.
А вот как этот первый элемент вытащить из массива – не могу найти.
Варианты вроде вычисления самого частого товара в запросе не подходят, т.к. реальный отчет содержит больше полей, и пользователи могут произвольно настраивать структуру отчета.
Вариант добавить группировку по товару, в ней сортировку по убыванию количества и ограничение количества записей 1 - тоже не подходит, т.к. нужен именно ресурс.
1 andrey02
 
30.07.15
14:40
ап
2 Elatiell
 
30.07.15
14:56
А если вместо упорядочивания попробовать Максимум?
3 andrey02
 
30.07.15
17:12
Не понял, как? Максимум не применяется к таблице значений (попробовал, никакого эффекта).
4 bootini
 
30.07.15
17:57
(3) А тут?
ВычислитьВыражениеСГруппировкойТаблицаЗначений(""Товар, МАКСИМУМ(Количество) КАК Количество"", ""Товар"")
, ""Количество Убыв"")
5 andrey02
 
03.08.15
14:50
(4) Если тут сделать "максимум", то получится по сути такая же таблица значений. Для набора данных из примера, получится точно такая же таблица значений. Вопрос, как из этой таблицы получить значение из первой строки остается.
6 andrey02
 
07.08.15
14:38
ап