AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.04.2010, 12:50   #1  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Ответ будет зависеть от того, что имеется ввиду под "работа с деревьями".
Если подразумевается работа в памяти с древовидными структурами, то в Аксе это ничем не отличатся от того, что описано во множестве учебников по программированию - те же структуры, позволяющие ссылаться на ветви дерева (или на вышестоящие уровни), те же принципы обхода дерева (независимо от того, на основе классов или переменных эти деревья построены.
Но, мне кажется, что под "работой с деревьями" подразумевается именно то, о чем ответил mazzy, то есть, отображение данных из базы в форме (отчете) в виде дерева.
Как сказал mazzy, обработка древовидных структур достаточно напряженная операция для реляционных данных. Тем не менее, бывает, что эти структуры приходится реализовывать. Дело в том, что достаточно много людей лучше воспринимают информацию именно в иерархическом виде, сверху вниз или снизу вверх (ну там всякие синтезы, анализы - кто в институтах изучал философию - помнит).
Поэтому, для того чтобы скрестить ужа с ежом учесть потребности пользователей и ограничения реляционной модели можно придерживаться следующих правил (список не претендует на абсолютную истину, приведен просто по опыту, возможно не лучшему):
  • Нет абсолютно всех удовлетворяющей иерархии. Продажным девушкам отделу продаж нужна одна, закупщикам - другая, аналитикам - третья. При создании одной общей иерархии придется идти на кучу компромиссов.
  • Если следовать принятой в Аксе кодировке (коды должны иметь "говорящие" значения), то обработка становится кошмаром. Для облегчения жизни программистов (и для быстродействия) приходится вводить альтернативную искусственную кодировку таким образом, чтобы по кодам была возможна фильтрация (выделено на скриншотах синим цветом) - например, поиск подчиненных значений при помощи конструкции "001*" . Это будет удобно программистам, а вот насколько это удобно пользователям? (хотя по моему опыту, через некоторое время пользователи запоминают кодировку и оперируют ей, а не названиями).
  • Обязательно нужно предоставлять пользователям возможность переключаться между иерархическим и плоским представлением (на скриншотах выделено красным цветом). По моим наблюдениям у тех пользователей, которые не особенно разбираются в предметной области (а где набрать супер разбирающихся?), флаг иерархии включен, а у опытных выключен.
  • Использовать уже то, что наработано в стандартной Аксе. Для отображения дерева есть несколько вариантов. Мне нравиться использовать классы - наследники CCFormTreeDatasource. Примеры можно посмотреть в классе HRMOrganizationTree и классах, начинающихся на KM, например KMActionTree, KMCollectionQuestionTree. Они используются в формах, которые можно найти либо при помощи перекрестных ссылок, либо поиском по приложению. Хотя, повторяю, это только один из вариантов.
Миниатюры
Нажмите на изображение для увеличения
Название: Иерархия1.JPG
Просмотров: 292
Размер:	71.2 Кб
ID:	5742   Нажмите на изображение для увеличения
Название: Иерархия2.JPG
Просмотров: 343
Размер:	69.1 Кб
ID:	5743  

За это сообщение автора поблагодарили: mazzy (2), pwp (1).
Теги
treeview, дерево, иерархия

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
функционал Работа с документами и создание договора в Word GM2005 DAX: Функционал 5 28.09.2009 14:49
Доступ к меню "Работа с документами" Kuat DAX: Администрирование 4 16.11.2007 17:07
Совместная работа заказчика и исполнителя в разных или одном слое? Кузин Владимир В. DAX: Программирование 6 08.08.2006 10:02
Работа с деревом ald DAX: Программирование 8 21.04.2004 17:09
Работа с деревом Dmm DAX: Программирование 5 05.02.2004 10:13

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:03.