Показать сообщение отдельно
Старый 23.09.2004, 06:51   #35  
Andrew_Lan is offline
Andrew_Lan
Участник
 
4 / 10 (1) +
Регистрация: 23.09.2004
Thumbs down
Здравствуйте, уважаемые участники форума! Разрешите высказать кое-какие соображения по обсуждаемому вопросу.

1. Прежде всего, хочу сказать, что я полностью согласен с мыслью MAZZY о том, что "иерархическое представление является удобным только для ОДНОГО пользователя". Запомним эту посылку.

2. По-моему, в дискуссии немного смешиваются такие понятия, как "для чего нужна иерархия" и "почему иерархическое представление является удобным". Ответ на первый вопрос - в статье MAZZY: "чтобы пользователь быстро искал информацию".
Ответ на второй вроде бы тоже очевиден - потому что так можно быстро найти информацию! Но, на мой взгляд, дело немного в другом. Всё дело, по-моему (и не только), в том, что ОДНОЙ МЫШКОЙ работать с иерархическим справочником гораздо сподручнее, чем пользуясь попеременно ТО клавиатурой, ТО мышкой. В этом и кроется то пресловутое удобство. Это психология, и с этим ничего не поделаешь (да и не надо!). НО!!! Это не означает автоматически, что работа при этом реально ускоряется (в секундах, минутах)!

3. Необходимо предложить обьективные критерии ДОПУСТИМОСТИ ПРИМЕНЕНИЯ (именно так категорично) иерархических справочников. Я бы даже более строго подошёл к оценке такой допустимости, чем MAZZY в вопросе "правил размещения элементов в иерархии".
Во-первых, "В каждой группе должно быть небольшое число элементов". По-моему - не более 10-15 (а не 20-40).
Во-вторых, "дерево не должно быть очень глубоким". По-моему - не более 3-4-х уровней.
В-третьих, в таком справочнике НЕ ДОЛЖНО быть элементов, с разным успехом относящихся к разным группам. Простой пример - справочник контрагентов. Я, возможно, выскажу крамольную мысль, но этот справочник МАЛО ПОДХОДИТ на роль иерархического справочника! Ведь один котрагент может выступать и как поставщик, и как покупатель!
Согласно первым двум критериям, максимальное число элементов в справочнике не должно превышать 50000. Согласитесь, это уже очень много.

4. Необходимо подходить к иерархическому справочнику, как к одному из элементов инструмента для ведения бизнеса, т.е. подсчитать затраты на реализацию такого справочника и время (что, в конечном итоге, как известно, тоже деньги), затрачиваемое пользователями на работу с таким справочником. Тут в дискусии предлагали устроить соревнования по быстроте работы со справочником. Но только для чистоты эксперимента в нём должны участвовать не "Операторы нашего предприятия знающие свою номенклатуру (~100тыс.наименований) как все свои 5 пальцев" (domandr), а пользователи, не знакомые, так сказать, "с вопросом".

5. Мысль о том, что "пользователи так привыкли", а тем более придание ей статуса логического обоснования, может привести к очень опасному заблуждению. Иными словами, потакать пользователю, идти у него на поводу - очень плохая идея. Я знаю программистов, которые исповедуют принцип - "что мне скажут, то я и сделаю". Имеется ввиду, попросят меня переписать программу так, чтобы напечатать отчёт "не провдоль, а по-диагонали", я быстенько, не углубляясь в предметную область, запрограммирую такой отчёт с минимальными умственными затратами. Нередко после этого пользователь счастлив и доволен. И вроде как я тоже при деле. На самом деле это путь в никуда. Неисчислимое множество таких программеров в тысячах организаций и
учреждений разной формы собственности (на просторах России, разумеется) вот уже второй десяток лет только и занимаются тем, что бесчисленное множество раз переписывают и исправляют устаревшие и никого уже не удовлетворяющие "программки". По желанию пользователей... (Хотя, справедливости ради надо сказать, что дело здесь не только и не столько в самих пользователях) На самом деле пользователи зачастую и сами не знают, что им реально нужно и что для них удобно. А потом возникает вопрос - а почему у нас выпускается гораздо большее количество специалистов в области ИТ-индустрии и программистов на душу населения у нас больше, чем, например в той же Индии, а уровень развития наших собственных информационных технологий - несоизмеримо ниже?

6. MAZZY: "Как сделать фильтрацию более удобной, чем иерархия. ... Необходимо, чтобы пользователь мог выбрать значение фильтра из списка. ... Желательно, чтобы была возможность использовать выражения и метасимволы в фильтрах. ... Желательно, чтобы была возможность группировать фильтруемые поля в наборы". Вам это ничего не напоминает?! Всё это уже реализовано "один-в-один" в MS Excel! Может, проще передавать список(таблицу) в Excel, и там изгаляться над ним? Но это я так, к слову .

7.Из дискуссии в этом форуме:
Dzemon: "Ээээээээ......... А иерархия это не плоская таблица?"
MAZZY: "нет."
Секунду! Но для того, чтобы список был иерархическим (точнее, смог быть представлен в виде дерева), ДОСТАТОЧНО добавить в таблицу-справочник ПОЛЕ СО ССЫЛКОЙ на идентификатор элемента (записи), являющегося группой (или родителем, если хотите) по отношению к текущему элементу и находящегося в этой же таблице, и, возможно, ПОЛЕ СО ЗНАЧЕНИЕМ уровня иерархии (0 означает самый верхний уровень). Вот это и есть самая, что ни наесть, плоская таблица. Кстати, в 1С иерархические справочники построены именно на таких таблицах (в V7.7, по крайней мере).

8. По-моему, если уж и говорить об иерархических справочниках, то только как о наделённых более полезными и утилитарными свойствами, чем крайне субъективной и никем не оцененной (в РУБ, USD, EUR) способностью быть "удобными". Ну, папример, свойством предоставлять разный уровень доступа для разных пользователей к разным группам. Один пользователь видит из справочника "Сырьё, материалы и оборудование" только группу "Горюче-смазочные материалы", а другой - только "Металлопрокат". Или, например, автоматическое использование разных алгоритмов для групп "Начисления" и "Удержания" при расчёте заработной платы. Список этот может быть ограничен только вашей фантазией!

РЕЗЮМЕ.
- Иерархический справочник должен быть НАСТРАИВАЕМЫЙ. Т.е. для разных пользователей он должен быть свой (см. п.1), и отражать только те данные и значения, с такой группировкой и в такой совокупности, которые позволены данному конкретному пользователю его полномочиями, мерой ответственности и компетентности. Это, кстати, отвечает желанию MAZZY, "чтобы была возможность группировать фильтруемые поля в наборы". Только в случае настраиваемых "деревянных" справочников такие наборы фильтруемых полей будут представлять из себя наборы группировок разной глубины вложенности.
- Должны неукоснительно соблюдаться правила ограничений по применению иерархии (см. п.3). НО! Эти правила должны соблюдаться непосредственно самими пользователями или теми, кто настраивает и сопровождает ПО. А программное обеспечение должно предоставлять возможность работать с НЕОГРАНИЧЕННЫМ количеством уровней иерархии и набором группировок.
- Необходимо отделить структуру данных, хранящихся в базе данных, от визуального представления иерархического справочника. Пусть данные в базе лежат так, как им и положено по правилам нормализации и хранения в РСУБД, а справочник отображается так, как "удобно пользователю"!

Ну вот, вроде и всё. Приношу извинения за свою многословность и некоторую сумбурность мыслей, но хотелось быть немного полезным.

Удачи

З.Ы. Я 17 лет работаю в сфере ИТ-индустрии, своими собственными глазами видел, как всё начиналось (начиная с XT и AT286), своими собственными руками всё "пощупал", и, надеюсь, имею какое-то минимальное представление о предмете обсуждения.