|   |   | 
| 
 | Метод таблицы значений Свернуть() вычисляет Суммы, а нужно вычислить и Максимум | ☑ | ||
|---|---|---|---|---|
| 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 | 
        Добавить колонку Максимум
 Отсортировать по показателю Пройти по таблице и в последней строке показателя поставить Максимум. Свернуть. | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |