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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.08.2011, 09:18   #21  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
...Есть такое ограничение, его просто надо иметь в виду. Также как и другие ограничения любой платформы для построения отчетности.
2. Не допускайте графа при создании дерева...
...Товары могут принадлежать только корневым уровням...
Можно я настойчиво повторю свою мысль?

Как правило, наличие дерева означает что есть очень жесткие ограничения, которые скорее всего противоречат реальной жизни.
__________________
полезное на axForum, github, vk, coub.
Старый 01.08.2011, 09:55   #22  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
А я бы добавил про вариативность: ряд товаров можно отнести к нескольким категориям. И только "хранители знаний" смогут точно определить раздел. Остальные будут кидать новый товар туда, куда, по их мнению, его место. Следовательно в этой категории его не будут искать другие, у которых свое отношение на счет того, чье где место. Я приводил как-то пример с памятью для ноутбука, она могла быть в 4-5 местах прайса, не буду повторяться.
В вашем случае: а куда определеть элетропилу? Электроинструмент или садовая техника? А мин вата - это шумоизоляция или теплоизоляция? ДВП - это ДСП или отделка? А почему?

С Уважением,
Георгий
Старый 02.08.2011, 22:17   #23  
AlGol is offline
AlGol
Участник
 
277 / 93 (4) ++++
Регистрация: 24.12.2001
Адрес: Тверь.
В одном из решений, которое я постоянно использую, в главной форме фильтрация данных осуществляется с помощью дерева.
Я уже настолько привык к этой структуре, что с трудом представляю на ее месте набор стандартных фильтров по гриду.
Почитал аргументацию Mazzy, и вот думаю - то ли это настолько удачная интерфейсная находка именно в этом месте, или это просто привычка. А может кому-то реально неудобно?

Ну вот все было нормально, работали в форме и работали. А теперь мучаюсь - может попробовать переделать?
__________________
Ален ноби, ностра алис.
Что означает - если один человек построил, другой завсегда разобрать может.
Старый 02.08.2011, 22:41   #24  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Картинку покажите? может и правда, там удобно все?
__________________
Ivanhoe as is..
Старый 03.08.2011, 07:13   #25  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от AlGol Посмотреть сообщение
А может кому-то реально неудобно?
Ну вот все было нормально, работали в форме и работали. А теперь мучаюсь - может попробовать переделать?
дерево будет удобным настолько, насколько всех устраивают единые правила заполнения.
дерево будет предельно неудобным, если таких правил нет.


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

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

на мой взгляд если, как было в первом сообщении, "возникла необходимость создать дерево", то стоит еще раз пересмотреть структуру данных и постановку задачи.
__________________
полезное на axForum, github, vk, coub.
Старый 03.08.2011, 15:17   #26  
AngelDominantes is offline
AngelDominantes
Участник
 
76 / 9 (1) +
Регистрация: 30.12.2010
С деревом немного разобрался, написал рекурсивную функцию для заполнения, пока все идет хорошо. Возник вопрос каким образом можно из обработчика событий на дереве изменить содержание на гриде, как я понимаю нужно выполнить запрос для датасорса, но с этим не разу не сталкивался направьте на путь истинный, будьте любезны.
Старый 03.08.2011, 15:26   #27  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от AngelDominantes Посмотреть сообщение
С деревом немного разобрался, написал рекурсивную функцию для заполнения, пока все идет хорошо. Возник вопрос каким образом можно из обработчика событий на дереве изменить содержание на гриде, как я понимаю нужно выполнить запрос для датасорса, но с этим не разу не сталкивался направьте на путь истинный, будьте любезны.
см. форму projTable
__________________
полезное на axForum, github, vk, coub.
Старый 03.08.2011, 15:35   #28  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
не, не хочу чтобы другие давали такие отсылки.
пусть на форуме будут развернутые ответы.

итак.
1. на форме должы быть обычные табличные датасоры
2. один из самых верхних датасорсов должен "соответствовать" элементам дерева
3. на treeView перехватываете метод selectionChanged
4. в котором так или иначе вызываете метод table_ds.findRecord

метод findRecord выполняет позиционирование датасорса.
И изменение всех подчиненных датасорсов. что неизбежно отобразится на форме.

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

пример того, как это работает см. в форме projTable
__________________
полезное на axForum, github, vk, coub.
Старый 03.08.2011, 15:41   #29  
AngelDominantes is offline
AngelDominantes
Участник
 
76 / 9 (1) +
Регистрация: 30.12.2010
Цитата:
Сообщение от mazzy Посмотреть сообщение
не, не хочу чтобы другие давали такие отсылки.
пусть на форуме будут развернутые ответы.

итак.
1. на форме должы быть обычные табличные датасоры
2. один из самых верхних датасорсов должен "соответствовать" элементам дерева
3. на treeView перехватываете метод selectionChanged
4. в котором так или иначе вызываете метод table_ds.findRecord

метод findRecord выполняет позиционирование датасорса.
И изменение всех подчиненных датасорсов. что неизбежно отобразится на форме.

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

пример того, как это работает см. в форме projTable
А если запись не одна, а скажем в гриде должны отображаться элементы которые соответствую критерию выбора в дереве. То есть надо выполнять table_ds.executeQuery ? если да, то как связать запрос с дата соурсом?

Последний раз редактировалось AngelDominantes; 03.08.2011 в 15:47.
Старый 03.08.2011, 15:46   #30  
AlGol is offline
AlGol
Участник
 
277 / 93 (4) ++++
Регистрация: 24.12.2001
Адрес: Тверь.
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Картинку покажите? может и правда, там удобно все?
Извини, не покажу. Основу составляют данные заказчиков, и выкладывать это на широкое обозрение не буду.

Но в приципе все просто:
- форма трекера задач
- слева в дереве заказчики и статусы задач как первый и второй уровень дерева.
- справа в гриде собственно список задач.

Удобно, как я понимаю (теперь то я задумался об этом...) потому, что все элементы первого уровня легко умещаются на одном экране - соответственно получается типа панель быстрого доступа, в которой легко можно перепрыгнуть с задач Заказчика 1 в разработке к запланированным для Заказчика 2.
__________________
Ален ноби, ностра алис.
Что означает - если один человек построил, другой завсегда разобрать может.
Старый 03.08.2011, 15:49   #31  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от AngelDominantes Посмотреть сообщение
То есть надо выполнять table_ds.executeQuery ?
можно и так. но это закат солнца вручную.

ваше дерево наверняка имеет соответствие 1:1 в какой-то таблице. так?
вот эту таблицу и помещаете как ведущий датасорс формы.

остальные таблицы делаете подчиненными.
связи с первой должны быть выражены обычными для аксапты способами безо всякого программирования. через relation в типах или в таблицах.

поэтому позиционировать из treeView надо только одну таблицу - главную.
остальные отфильтруются сами как в master/detail форме.

(при этом в отличие от master/detail грид главной таблицы можно не показывать)
__________________
полезное на axForum, github, vk, coub.
Старый 03.08.2011, 15:52   #32  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от mazzy Посмотреть сообщение
поэтому позиционировать из treeView надо только одну таблицу - главную.
остальные отфильтруются сами как в master/detail форме.
другими словами.
нарисуйте сначала нормальную master/detail форму (это делается легко и просто. и безо всякого программирования)
потом вместо master-грида используйте treeView.
вот и весь секрет.
__________________
полезное на axForum, github, vk, coub.
Старый 03.08.2011, 17:19   #33  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от AlGol Посмотреть сообщение
Удобно, как я понимаю (теперь то я задумался об этом...) потому, что все элементы первого уровня легко умещаются на одном экране - соответственно получается типа панель быстрого доступа, в которой легко можно перепрыгнуть с задач Заказчика 1 в разработке к запланированным для Заказчика 2.
Угу. "Дерево" - это как каменный цветок. Красиво и удобно. Но! Если элементов не очень много и вносить изменения в структур надо не часто. А то замаешся молотком махать Да и чем больше "размерчик" (количество элементов), тем тяжелее эту "глыбищу" вертеть
Старый 03.08.2011, 17:34   #34  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от mazzy Посмотреть сообщение
можно и так. но это закат солнца вручную.

ваше дерево наверняка имеет соответствие 1:1 в какой-то таблице. так?
вот эту таблицу и помещаете как ведущий датасорс формы.

остальные таблицы делаете подчиненными.
связи с первой должны быть выражены обычными для аксапты способами безо всякого программирования. через relation в типах или в таблицах.
Речь, наверное, про ситуацию, когда надо показать только те элементы подчиненных таблиц, которые соответствуют только текущему выбранному уровню дерева? Без подчиненных? Если нужны подчиненные, то без executeQuery() не обойтись. Или я не прав?
__________________
Ivanhoe as is..
За это сообщение автора поблагодарили: mazzy (2).
Старый 03.08.2011, 17:42   #35  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Речь, наверное, про ситуацию, когда надо показать только те элементы подчиненных таблиц, которые соответствуют только текущему выбранному уровню дерева?
В общем случае, Да.
С деревом программировать придется много. Очень много.
__________________
полезное на axForum, github, vk, coub.
Старый 11.01.2012, 10:04   #36  
niksen is offline
niksen
Участник
Самостоятельные клиенты AX
 
284 / 28 (1) +++
Регистрация: 05.07.2011
Адрес: Татарстан
ох уж это дерево.... я думаю, мой вопрос вам понравится не меньше:
На форме спланированные заказы-развёртывание строится дерево по конкретному заказу и через кнопку настройки можно указать то, что будет видно в данном дереве. Я хочу добавить туда некоторые поля из InventTable, ну нравятся они мне, так приятнее. Для этого в форме настроек добавляем новое поле в TmpReqExplosionTree, затем новый пункт, например пусть это будет DisplayItemNameAlias. В форму развёртывания добавляем источник данных InventTable... а дальше? в туториале ничего толком об этом нет, к сожалению...
Ну даже если я хочу жёстко прописать отображение какого-то поля из нового источника данных не из формы настроек, а вообще, откуда-то из связанной таблицы - с этим деревом можно с ума сойти... у него же нет источника, всё так жёстко, никакой фильтрации нет...

Аналогичная ситуация с конструктором спецификаций, там например нет возможности добавить что-то ещё, что иногда ну очень неудобно. Если там уж пусть всё будет, как было и редактирование через таблицу более удобно, то развёртывание спланированных заказов - дело другое. Это реально необходимо.

Последний раз редактировалось niksen; 11.01.2012 в 10:37.
Теги
дерево, как правильно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Экспорт/Импорт прав доступа Anais DAX: Администрирование 28 11.11.2006 21:44
Дерево Tree Unicorn DAX: Программирование 7 16.09.2005 13:25
Вопрос про Web Apps konfet DAX: База знаний и проекты 18 12.09.2005 15:36
Дерево сопоставлений в SP2? Sanya DAX: Функционал 4 23.06.2004 09:42
дерево ФК dalyet DAX: Администрирование 1 25.11.2002 15:27

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

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

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