Оптимизация процедуры агрегирования иерархических данных15.05.2013, 13:39. Показов 1291. Ответов 12
Метки нет (Все метки)
Всем доброго времени суток.
Есть много данных которые имеют иерархический вид (см вложение как пример). Периодически сотрудники меняют значения и хотят чтобы происходил пересчет сумм в итоговых значениях. Проще говоря значения элемента на уровне 3 равняется сумме всех элементов уровня 4, которые лежать ниже, но выше следующего элемента на уровне 3.
Можно конечно обобщить посчитав количество различных значений в столбце "Уровень" и пробежаться от минимума к максимуму, но сути это не меняет. Может есть нормальные алгоритмы для данной задачи?
0
|
||||||
| 15.05.2013, 13:39 | |
|
Ответы с готовыми решениями:
12
Отображение иерархических данных Итератор связей иерархических данных |
|
200 / 98 / 2
Регистрация: 24.09.2011
Сообщений: 261
|
|
| 15.05.2013, 14:04 | |
|
если структура этого документа не меняется, а меняются только цифры в столбцах 2-4, то проще всего сделать формулами. Они автоматически перерассчитываются
1
|
|
|
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,907
|
|||||||
| 15.05.2013, 14:41 | |||||||
|
Не по теме: Если всё работает и нет претензий к производительности, то отойди и ничего не трогай - первая заповедь настоящего программиста Добавлено через 2 минуты Но если уж никак, то сделай цикл, в чем проблема (правда, скорости это не прибавит)
1
|
|||||||
| 15.05.2013, 14:46 [ТС] | |||
|
Я скорее думал, что есть специальные алгоритмы для работы с деревьями, которые это делают более оптимально.
0
|
|||
|
200 / 98 / 2
Регистрация: 24.09.2011
Сообщений: 261
|
||
| 15.05.2013, 14:54 | ||
Понятно объяснил?)
1
|
||
|
200 / 98 / 2
Регистрация: 24.09.2011
Сообщений: 261
|
|
| 15.05.2013, 15:04 | |
|
примерно так
1
|
|
|
200 / 98 / 2
Регистрация: 24.09.2011
Сообщений: 261
|
||
| 15.05.2013, 15:07 | ||
1
|
||
|
200 / 98 / 2
Регистрация: 24.09.2011
Сообщений: 261
|
|
| 15.05.2013, 15:38 | |
|
analyst, ну да, именно так.
Добавлено через 20 минут при этом способе вам придется идти снизу вверх. Т.е. сначала найти все строки 5 уровня глубины, обработать их, потом искать 4 уровень, обработать его и т.д. Все эти поиски тоже можно оптимизировать и будет еще быстрее. Для этого вместо столбца "Родитель" надо добавить столбец "Потомки" и при экспорте записывайте в него номера рядов потомков. И тогда искать ничего не придется - алгоритм начнет с самого первого уровня, сразу же в нем прочитает номера рядов потомков и перейдет к ним. Только это надо делать рекурсией. Вы наверное не знаете что это, поэтому сейчас напишу вам рабочий пример
1
|
|
|
|
||||||
| 15.05.2013, 15:43 | ||||||
|
Так будет в разы быcтрее:
Кликните здесь для просмотра всего текста
2
|
||||||
|
200 / 98 / 2
Регистрация: 24.09.2011
Сообщений: 261
|
||||||
| 15.05.2013, 17:07 | ||||||
|
а вот мой вариант:
KoGG, у вас неправильно считает, если где-нибудь в середине таблицы ветвь закончится на глубине 4 а не на 5(они не всегда заканчиваются на 5) например проверьте на глубинах: 0 1 2 3 4 3 4 5 5 а так, конечно, ваш способ намного лучше моего
0
|
||||||
| 15.05.2013, 17:07 | |
|
Помогаю со студенческими работами здесь
13
Биндинг иерархических данных в ListBox Добавление иерархических данных в Treeview Оптимизация работы процедуры Типы оптимизация: черная оптимизация, серая оптимизация и белая оптимизация Алгоритм агрегирования Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|