|
24.04.2010, 08:31 | #1 |
Участник
|
Работа с деревом.
Добрый день. Подскажите пож-та примерчики по работе с деревьями в AX 4.0 Что то в моем АХ нет tutorial на эту тему. Пишу сразу что не прав, не смотрел в формах. В формах что то есть.
Последний раз редактировалось pwp; 24.04.2010 в 08:34. |
|
24.04.2010, 11:06 | #2 |
Участник
|
Цитата:
Способ не самый удобный и эргономичный в многопользовательских системах http://axapta.mazzy.ru/lib/tree/ http://axapta.mazzy.ru/lib/tree2/ http://axapta.mazzy.ru/lib/tree3/ кроме того, в дереве отсутствует механизм поиска. по вопросу. деревья в Аксапте есть конечно. прежде всего - модуль проекты. хрестоматийным примером неудачного применения дерева является структура настройки прав доступа (в форму даже Progress Bar добавили, чтобы пользователям не было так сильно грустно ждать загрузки дерева) есть дерево и в tutorial, конечно. причем в tutorial показано как подгружать дерево не целиком, а частями при открытии ветки, чтобы не заставлять пользователя ждать. (Обратите внимание, какой объем программирования требуется для поддержки такой фичи.) И снова напомню - в дереве нет поиска и фильтрации. Пользователи вас замучают вопросом о поиске и фильтрации, если вы сделаете им дерево. А в Аксапте инструменты поиска и фильтрации - отличные. |
|
|
За это сообщение автора поблагодарили: pwp (1). |
24.04.2010, 12:50 | #3 |
Участник
|
Ответ будет зависеть от того, что имеется ввиду под "работа с деревьями".
Если подразумевается работа в памяти с древовидными структурами, то в Аксе это ничем не отличатся от того, что описано во множестве учебников по программированию - те же структуры, позволяющие ссылаться на ветви дерева (или на вышестоящие уровни), те же принципы обхода дерева (независимо от того, на основе классов или переменных эти деревья построены. Но, мне кажется, что под "работой с деревьями" подразумевается именно то, о чем ответил mazzy, то есть, отображение данных из базы в форме (отчете) в виде дерева. Как сказал mazzy, обработка древовидных структур достаточно напряженная операция для реляционных данных. Тем не менее, бывает, что эти структуры приходится реализовывать. Дело в том, что достаточно много людей лучше воспринимают информацию именно в иерархическом виде, сверху вниз или снизу вверх (ну там всякие синтезы, анализы - кто в институтах изучал философию - помнит). Поэтому, для того чтобы
|
|
|
За это сообщение автора поблагодарили: mazzy (2), pwp (1). |
24.04.2010, 13:28 | #4 |
Участник
|
Э-эх, опять по дерево. В каждом топике про дерево почему-то пытаются доказать что это "напряженная операция для реляционных данных". Почему-то когда раньше программил под Delphi никаких напрягов это не вызывало - дерево с 1 млн. узлов грузилось пару секунд и работало быстро!
Давайте просто признаем - реализация отрисовки дерева в Аксапте - ну просто г... и д... - и просто его не нужно использовать на количестве узлов > ну скажем 500 (чисто для примеру). Не нужно все сваливать на СУБД. В данном конкретном случае она не при чем. ps Да, с постулатом, что в Аксапте отличные фильтры и для нормальных пользователей они лучше чем дерево абсолютно согласен! |
|
|
За это сообщение автора поблагодарили: Raven Melancholic (2). |
24.04.2010, 13:40 | #5 |
Участник
|
Цитата:
В общем, как программист соглашусь, что в реализации дерева особых проблем нет, но как работающий на клиенте (а тут получатся смесь программиста, сотрудника службы сопровождения, постановщика задач и прочих вкусностей) вынужден смотреть не только на то, что может программист, но и на то, как приходится работать пользователям. |
|
24.04.2010, 17:59 | #6 |
Участник
|
Цитата:
Цитата:
Пропущенное слово "...на клиента". Т.е. вы хотите сказать, что вы грузили на клиента 1млн узлов только для того, чтобы отобразить дерево? ...из которого пользователю нужно всего лишь десяток записей? Ну, ну... Тут же возникают требования к мощности клиента, требования к пропускной способности сети, требования к диску сервера, а также требования к диску клиента для свопа... О, да. У вас наверняка было хорошее железо (требования как у последней платформы 1С ) Цитата:
Можете расскажать подробнее об альтернативных вариантах отрисовки? |
|
26.04.2010, 09:36 | #7 |
Участник
|
Да, ну и что тут такого страшного? Если архитектура 2-х уровневая.
Цитата:
Цитата:
Цитата:
Посмотрите отрсовку в Delphi - VirtualTreeView, например, я в коды компонентов не лез, поэтому ничего сказать не могу. |
|
25.04.2010, 01:50 | #8 |
Гость
|
Я когда в школе учился - у нас был такой предмет - "Труды" назвался
На одном из занятий у нас была работа с деревом - я своими руками из куска дерева сделал топорище и был очень горд за себя! Последний раз редактировалось AX2009; 25.04.2010 в 01:52. |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
26.04.2010, 07:45 | #9 |
Участник
|
Спасибо всем, принявшим участие.Вопрос мой был больше в плане теории :
1. Как правильно построить таблицу (таблицы?) для ведения данных в виде дерева. 2. Какие структуры данных в памяти должны быть построены для работы с этим деревом. Наследие, конечно, изучим. |
|
26.04.2010, 08:43 | #10 |
Участник
|
Мне нравится вот эта статья - Деревья в SQL
А это уже зависит от того что конкретно вы собираетесь делать. Цитата:
1. Каково общее количество записей в таблице?
2. Насколько часто будут редактироваться данные дерева? 3. Какова максимальная глубина вложенности дерева? 4. Что более критично для поставленной задачи: скорость извлечения информации или размер, занимаемый данными на диске? Расскажите для чего дерево понадобилось вам. |
|
|
За это сообщение автора поблагодарили: pwp (1). |
26.04.2010, 13:18 | #11 |
Участник
|
Цитата:
Сообщение от S.Kuskov
Мне нравится вот эта статья - Деревья в SQL
|
|
26.04.2010, 13:26 | #12 |
Участник
|
|
|
26.04.2010, 13:36 | #13 |
Участник
|
Цитата:
http://axapta.mazzy.ru/lib/axapta30-...oduction1.html http://axapta.mazzy.ru/lib/axapta30-...oduction2.html http://axapta.mazzy.ru/lib/axapta30-video/pb.html и документации нет, и в гугле забанили. |
|