|
Метод таблицы значений Свернуть() вычисляет Суммы, а нужно вычислить и Максимум | ☑ | ||
---|---|---|---|---|
0
Vladal
16.12.15
✎
15:54
|
Привет.
У таблицы значений есть метод Свернуть(), который суммирует показатели по указанным колонкам. Замечательно работает и прекрасно себя чувствует. НО как бы мне свернуть таблицу, вычисляя по одной из сворачиваемой колонке не сумму, а, например, Максимум? Самый первый вариант решения - запрос. В запрос поместить ТЗ и указать моей колонке МАКСИМУМ, а остальным СУММА. Так как у меня таблица значений формируется динамически и имеет различные имена колонок, то и такой запрос надо бы формировать динамически. Сейчас я так же динамически формирую список колонок, по которым сворачивать и список колонок, которые сворачиваются. В этой связи у меня вопрос: не имеет ли кто уже такое решение? Или есть какой другой способ, метод. Предложите идею. |
|||
1
cw014
16.12.15
✎
15:56
|
Не использовать метод таблицы значений Свернуть()
|
|||
2
cw014
16.12.15
✎
15:56
|
Как вариант. Сортировка по МАКСИМУМУ УБЫВ, брать первый элемент, заполнить эту колонку первым элементом, свернуть по СУММА
|
|||
3
cw014
16.12.15
✎
15:58
|
А, вон оно как. Ну тогда только собирать строки с группировками и через Скопировать(Новый Структура())
|
|||
4
Garykom
гуру
16.12.15
✎
15:58
|
(0) а математически то никак решить? два прохода (сначала находим максимум, потом во все пишем или максимум или максимум/колстрок)
|
|||
5
Garykom
гуру
16.12.15
✎
15:59
|
(4) хотя не, сначала все равно нужно сворачивать
|
|||
6
cw014
16.12.15
✎
16:00
|
(4) Долговато может быть.
Решение: 1) Создать копию (коп) и свернуть по колонкам-группировкам (КГ) 2) Пройтись по [коп] и покопировать по [КГ] строки из основной таблицы, сортировать по убыванию, максимальное значение пихать в [коп] |
|||
7
Garykom
гуру
16.12.15
✎
16:01
|
(6) да, даж свой ответ аналогичный стер
|
|||
8
Garykom
гуру
16.12.15
✎
16:01
|
(7)+ ну или запросами
|
|||
9
Vladal
16.12.15
✎
16:02
|
Я вот и думал - в первый раз просто свернуть по колонкам, я получу список группировок и отобрав по выбранным колонкам группировок значения и найти их максимум для каждой строки.\
Тогда как отобрать строки сразу по несколькоми колонкам? Группировка по одной просто - метод НайтиСтроки. В типовых есть ОтобратьСтрокиПоКритериям с помощью построителя. |
|||
10
Vladal
16.12.15
✎
16:02
|
(8) Да вот незадача - тогда формировать запросы динамически.
|
|||
11
Garykom
гуру
16.12.15
✎
16:05
|
(9) не надо отбирать, простой перебор (цикл по строкам всем) и условие внутри (составное)
|
|||
12
Garykom
гуру
16.12.15
✎
16:05
|
(11) хотя можно интереснее чтобы без полного перебора, сначала сортирнуть по нужному(ым) полям
|
|||
13
Vladal
16.12.15
✎
16:08
|
(12) После Свернуть я с теми же параметрами:
СтрокаГруппировок = Сред(СтрокаГруппировок, 1, СтрДлина(СтрокаГруппировок)-1) + "док_Претензия_Представление"; Выборка.Свернуть(СтрокаГруппировок, СтрокаПоказателей); Выборка.Сортировать(СтрокаГруппировок); |
|||
14
Vladal
16.12.15
✎
16:13
|
+(13) я с теми же параметрами и сортирую.
Я вот что подумал: если я делаю так Для каждого Показатель Из МассивПоказателей Цикл ИмяПоказателя = Показатель.Идентификатор; Если ИмяПоказателя = "МаксимальноеКвоСтрок" Тогда ИсточникДанныхПостроителя.Колонки[Показатель.Идентификатор].Итог = "Максимум(" + Показатель.Идентификатор + ")"; ИначеЕсли ИмяПоказателя = "СреднееКвоСтрок" Тогда ИсточникДанныхПостроителя.Колонки[Показатель.Идентификатор].Итог = "Среднее(" + Показатель.Идентификатор + ")"; Иначе ИсточникДанныхПостроителя.Колонки[Показатель.Идентификатор].Итог = "Сумма(" + Показатель.Идентификатор + ")"; КонецЕсли; КонецЦикла; Наверно этим способом и свернуть в нужный мне момент. |
|||
15
palpetrovich
16.12.15
✎
16:15
|
"как бы мне свернуть таблицу, вычисляя по одной из сворачиваемой колонке не сумму, а, например, Максимум?" - завис :)
... всю колонку "МаксимумМом" заполнить, что-ли? |
|||
16
Vladal
16.12.15
✎
16:16
|
(15) Но этот Максимум будет для всей таблицы, а мне нать максимум по группировкам. Ведь Свернуть() даёт Сумма() не для все колонки, а в разрезе группировок? Так же поступить и с Максимумом.
|
|||
17
palpetrovich
16.12.15
✎
16:17
|
(16) а, понял
|
|||
18
Vladal
16.12.15
✎
16:17
|
палпетрович, тут тоже надо Максимум сделать для группировки.
Поэтому ща попробую способ из (14) |
|||
19
palpetrovich
16.12.15
✎
16:22
|
(18) на вскидку - создать допТЗ, перекинуть туда измерение и параметрДлямаксимума, сортировать по "измерение,параметрДлямаксимума"
потом свернуть отсноную ТЗ и в выборке по ней, установить значение параметрДлямаксимума - хнгачением из допТЗ |
|||
20
palpetrovich
16.12.15
✎
16:23
|
*
отсноную = основную хнгачением = значением :) |
|||
21
Vladal
16.12.15
✎
16:25
|
(20) намана, я понял
|
|||
22
Кирпич
16.12.15
✎
17:08
|
Добавить колонку Максимум
Отсортировать по показателю Пройти по таблице и в последней строке показателя поставить Максимум. Свернуть. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |