Показать сообщение отдельно
Старый 01.08.2011, 05:44   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от AngelDominantes Посмотреть сообщение
Доброго времени суток, возникла необходимость создать дерево, раньше в Аксапте никогда с ними не сталкивался, но имею представление еще по опыту программирования на С++, с чего собственно начать, есть ли какой-то хелп по этому поводу, или хотя бы примеры в стандартном функционале. AX 2009, заранее благодарен!
Название: tutorial_Form_TreeControl.PNG
Просмотров: 2009

Размер: 22.3 Кб
форма tutorial_Form_TreeControl
форма ProjTable
а самый пример, который наглядно демонстрирует, что деревья использовать НЕ надо - форма SysUserGroupSecurity, вкладка Права.
Нажмите на изображение для увеличения
Название: SysUserGroupSecurity.png
Просмотров: 230
Размер:	106.7 Кб
ID:	7034

========================================
Суть вопроса:
дерево - это всего лишь способ фильтрации данных.
Перечитайте еще раз.

Когда речь идет о представлении данных в виде дерева, то это значит данных достаточно много И пользователю нужно предоставить способ сокращения отображаемых данных по неким наперед заданным правилам.

Дерево - предоставляет единственно возможный способ фильтрации (обратите внимание как извращаются с несколькими способами фильтрации в форме SysUserGroupSecurity)

Вместо дерева ПОЧТИ ВСЕГДА лучше использовать обычные фильтры по разным полям и реквизитам. А это Аксапта замечательно умеет делать в Grid'е
Перечитайте еще раз.

Дерево категорически противопоказано использовать там, где реальная структура - произвольный граф.
Дерево можно использовать только там, где реальная структура - именно дерево (а такое бывает очень редко)

========================================
Технический аспект:
аксапта содержит контрол TreeView.
= данные в этот контрол могут загружаться сразу при открытии (что и делает форма SysUserGroupSecurity со всеми вытекающими последствиями для быстродействия)
= данные в этот контрол могут загружаться по мере открытия веток пользователем (что усложняет программирование контрола на порядок)

В ЛЮБОМ СЛУЧАЕ по дереву не предусмотрен интерфейс поиска пользователем.
никакой. ни по какому реквизиту.
Перечитайте в предыдущем абзаце "...то это значит данных достаточно много И пользователю нужно предоставить способ сокращения..."

в результате поиск по дереву придется писать программисту (см. ту же самую злосчастную форму SysUserGroupSecurity), что усложняет программирование контрола еще на два порядка.

========================================
Поэтому:
если у вас "возникла необходимость создать дерево" - измените техзадание и работайте с гридом ПЛЮС дайте пользователям возможность быстрой фильтрации.

Возможно, для этого вам придется пересмотреть структуру таблиц.

========================================
мое личное бурчание, возможно не имеющее никакого отношения к вам:
мой опыт подсказывает, что как только у кого-то "возникла необходимость создать дерево", то это первый признак того, что структура данных, заложенная архитектором-программистом, не совпадает со структурой реальных данных, которые находятся в голове у пользователей. Другими словами, запрограммировано не то, что ожидается людьми.

поговорите с людьми. пересмотрите свою структуру данных.

========================================
http://axapta.mazzy.ru/lib/tree/
__________________
полезное на axForum, github, vk, coub.

Последний раз редактировалось mazzy; 01.08.2011 в 05:47. Причина: добавил ссылку
За это сообщение автора поблагодарили: AlGol (1), gl00mie (3), AngelDominantes (1).