Я не сам такое придумал, подсмотрел в свое время в 1С и творчески адаптировал. Для большинства людей такая схема привычная, так как 1С самое распространённое ПО. И это очень удобно на самом деле. Например, для быстрой переброски элементов между группами - выделяем элемент справа, целевую группу слева и жмем кнопку перенести. Или другие различные операции внутри дерева, например, привязка группы к другому родителю и т.п.kreator писал(а): 05 Октябрь 2023, 15:39Это конечно специфично, мягко говоря. Как пользователю объяснить, что справа список, не связанный со списком слева?finsoftrz писал(а): 04 Октябрь 2023, 18:32 Нет, конечно. Перемещение по дереву групп слева и отображение товаров справа не связаны. Чтобы отобразить товары группы, нада 2 раза щелкнуть в дереве. Выбранная группа показывается сверху над деревом, и это вторые блюда, а не коньяк.
У нас вот так:
tree.png
Чтобы отобразить весь правый список, надо в дереве слева встать на самый верх.
Рекурсивный список в виде дерева (TREE)
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5232
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
Рекурсивный список в виде дерева (TREE)
C6/C12, ШВС, tps/btrieve.
-
- ✯ Ветеран ✯
- Сообщения: 5158
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Рекурсивный список в виде дерева (TREE)
Да нет такого в 1С. Вам приснилось наверно. Двойной клик на дереве - либо вызов формы редактирования, либо выбор записи в соответствующем режиме. Перетаскивание веток в шаблоне реализовано очень хорошо. Можно и drag-n-drop задействовать, только юзабилити хромает при больших деревьях.
We are hard at work… for you. 

- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5232
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
Рекурсивный список в виде дерева (TREE)
Ну, у меня деменция вроде пока не наступила. Но засомневался, сходил посмотреть.kreator писал(а): 06 Октябрь 2023, 14:01 Да нет такого в 1С. Вам приснилось наверно. Двойной клик на дереве - либо вызов формы редактирования, либо выбор записи в соответствующем режиме. Перетаскивание веток в шаблоне реализовано очень хорошо. Можно и drag-n-drop задействовать, только юзабилити хромает при больших деревьях.

Речь именно про отдельное дерево групп слева, а не дерево справа, в котором и элементы, и группы.
C6/C12, ШВС, tps/btrieve.
-
- ✯ Ветеран ✯
- Сообщения: 5158
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Рекурсивный список в виде дерева (TREE)
А как делается выбор? А как выход на редактирование?
We are hard at work… for you. 

- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5232
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
Рекурсивный список в виде дерева (TREE)
Не очень понял вопрос, выбор чего? Двойной щелчек в дереве групп устанавливает отбор товаров этой группы в соседнем списке. Редактирование групп обычно из контекстного меню, их состав часто не меняется. Иногда кнопки размещаются. Хорошо было бы управлять работой с деревом групп из тулбаре фрейма, но как-то это не совсем просто, так как подобные элементы заточены под линейные списки, это другой контрол шаблон. Выбор группы в каком-то другом окне оформляется отдельным диалогом, без элементов. Деревья не часто используются, работать с ними не очень удобно по сравнению с обычным списками.
C6/C12, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8024
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 94 раза
Рекурсивный список в виде дерева (TREE)
Информация для тех кому интересна теория сабжа.
2 дня назад OZON начал переход в API на новую структуру справочника категорий товаров,
отказавшись от рекурсивного дерева с произвольным уровнем вложенности.
Теперь два верхних уровня - это фиксированное дерево + [тип товара] (Электроника -> Компьютеры -> [Ноутбуки])
Но дальше характеристики (Процессор и т.д.) и их значения (Intel Celeron и т.д.) - уже содержат в себе полную
идентификацию крайней категории и типа товара, что по сути архитектуры данных уже является срезом классификатора.
Такова жись. Видимо красивая идея с рекурсивным деревом классификации не работает на больших данных. Увы !
2 дня назад OZON начал переход в API на новую структуру справочника категорий товаров,
отказавшись от рекурсивного дерева с произвольным уровнем вложенности.
Теперь два верхних уровня - это фиксированное дерево + [тип товара] (Электроника -> Компьютеры -> [Ноутбуки])
Но дальше характеристики (Процессор и т.д.) и их значения (Intel Celeron и т.д.) - уже содержат в себе полную
идентификацию крайней категории и типа товара, что по сути архитектуры данных уже является срезом классификатора.
Такова жись. Видимо красивая идея с рекурсивным деревом классификации не работает на больших данных. Увы !

Make Clarion Great Again ! 
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5232
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
Рекурсивный список в виде дерева (TREE)
У меня в вебе дерево грузится целиком. Наверно, можно сделать и с подгрузкой веток, используя аякс запросы. Тут, видимо, другие причины. Не очень понял фразу, скорее всего вынесли характеристики отдельно, так как могут дублироваться в разных ветках дерева. Потом, с большой вложенностью просто неудобно работать.Игорь Столяров писал(а): 08 Октябрь 2023, 9:44 Такова жись. Видимо красивая идея с рекурсивным деревом классификации не работает на больших данных. Увы !![]()
C6/C12, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8024
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 94 раза
Рекурсивный список в виде дерева (TREE)
Нет, они и так были отдельно. Тут вопрос даже не про "работает-не работает", а про идею построение самого дерева.finsoftrz писал(а): 08 Октябрь 2023, 9:55 скорее всего вынесли характеристики отдельно, так как могут дублироваться в разных ветках дерева
Возьмём понятный пример ветки: Электроника -> Компьютеры -> Ноутбуки -> Процессор -> Celeron
В теории построения рекурсивного дерева - каждая ветка имеет уникальный ID и связана только с родителем.
Т.е. "Celeron" привязан только к "Процессору", а "Процессор" к "Ноутбуку".
Если где-то (например в серверах) есть ещё ветка с названием "Процессор" - то у неё уже совсем другой ID.
Это и есть красивая структура рекурсивного дерева- мы можем легко оторвать / переставить / объединить ветку на любом уровне.
Но мы не можем выбрать все товары с процессорами Celeron - кроме как контекстным перебором всего дерева.
Так вот теперь они сделали так, что:
- "Процессор" привязан к группе "Компьютеры + Ноутбуки"
- а "Celeron" привязан к группе "Компьютеры + Ноутбуки + Процессор"
Поэтому для ветки "Celeron" можно сразу получить отношение к компьютерам (не проходя ветки "Ноутбуки" и "Процессоры").
Make Clarion Great Again ! 
-
- ✯ Ветеран ✯
- Сообщения: 5158
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Рекурсивный список в виде дерева (TREE)
С Вами неинтересно. Я про выбор записи из дерева в режиме SelectRecord. А также про режим редактирования. Двойной клик должен вызывать форму редактирования.finsoftrz писал(а): 07 Октябрь 2023, 20:40Не очень понял вопрос, выбор чего? Двойной щелчек в дереве групп устанавливает отбор товаров этой группы в соседнем списке. Редактирование групп обычно из контекстного меню, их состав часто не меняется. Иногда кнопки размещаются. Хорошо было бы управлять работой с деревом групп из тулбаре фрейма, но как-то это не совсем просто, так как подобные элементы заточены под линейные списки, это другой контрол шаблон. Выбор группы в каком-то другом окне оформляется отдельным диалогом, без элементов. Деревья не часто используются, работать с ними не очень удобно по сравнению с обычным списками.
We are hard at work… for you. 

-
- ✯ Ветеран ✯
- Сообщения: 5158
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Рекурсивный список в виде дерева (TREE)
Я тупой. Смысла этого не понимаю. Я обычно что-то ищу на Озоне по названию. При этом пофиг структура рекурсивного дерева. Либо целенаправленно иду на определённую ветку, например - "Комплектующие для компьютера->Процессоры->Intel->Celeron".Игорь Столяров писал(а): 08 Октябрь 2023, 9:44 Информация для тех кому интересна теория сабжа.
2 дня назад OZON начал переход в API на новую структуру справочника категорий товаров,
отказавшись от рекурсивного дерева с произвольным уровнем вложенности.
Теперь два верхних уровня - это фиксированное дерево + [тип товара] (Электроника -> Компьютеры -> [Ноутбуки])
Но дальше характеристики (Процессор и т.д.) и их значения (Intel Celeron и т.д.) - уже содержат в себе полную
идентификацию крайней категории и типа товара, что по сути архитектуры данных уже является срезом классификатора.
Такова жись. Видимо красивая идея с рекурсивным деревом классификации не работает на больших данных. Увы !![]()
Другое дело, что нет смысла делать ветку "Intel" и "Celeron". Это просто характеристики. Но это вроде как давно реализовано. У всех наверно. Может фиксированное дерево - это ограничение двумя уровнями? Для удобства аналитики. Не знаю. В Биг Дата всё равно кубы строят.
We are hard at work… for you. 

- Игорь Столяров
- Ветеран движения
- Сообщения: 8024
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 94 раза
Рекурсивный список в виде дерева (TREE)
Конечно. Но для их выбора - мы всё равно проходим все ветки дерева ...
У нас никогда не будет реальных справочников с сотнями тысяч классификаторов и миллионами товаров.
Посмотреть какими новыми инструментами и методами решаются подобные задачи - очень интересно.
Может, что-то найдём полезное и для себя.

Make Clarion Great Again ! 
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5232
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
Рекурсивный список в виде дерева (TREE)
Вы путаете варианты, когда дерево используется только для групп, и когда в дереве выводятся и группы, и элементы.kreator писал(а): 08 Октябрь 2023, 21:54 С Вами неинтересно. Я про выбор записи из дерева в режиме SelectRecord. А также про режим редактирования. Двойной клик должен вызывать форму редактирования.
Я написал уже, что для выбора группы используется отдельное окно, в котором нет элементов. Там двойным щелчком или enter.
Двойной клик никому ничего не должен. Как решим, так он и будет.

C6/C12, ШВС, tps/btrieve.
-
- ✯ Ветеран ✯
- Сообщения: 5158
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Рекурсивный список в виде дерева (TREE)
Я за однообразие. Если выбор из обычного листа через двойной клик или Enter, то и в дереве должно быть так. У Вас группы и элементы две разных таблицы/файла?finsoftrz писал(а): 09 Октябрь 2023, 8:15Вы путаете варианты, когда дерево используется только для групп, и когда в дереве выводятся и группы, и элементы.kreator писал(а): 08 Октябрь 2023, 21:54 С Вами неинтересно. Я про выбор записи из дерева в режиме SelectRecord. А также про режим редактирования. Двойной клик должен вызывать форму редактирования.
Я написал уже, что для выбора группы используется отдельное окно, в котором нет элементов. Там двойным щелчком или enter.
Двойной клик никому ничего не должен. Как решим, так он и будет.![]()
В любом случае как-то странно. Группа одна, а содержимое другой группы.
We are hard at work… for you. 

- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5232
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 63 раза
Рекурсивный список в виде дерева (TREE)
Да, группы и элементы в 2 разных таблицах. В 1С в одной. Мне это всегда не нравилось, разные сущности и структуры.kreator писал(а): 09 Октябрь 2023, 19:00Я за однообразие. Если выбор из обычного листа через двойной клик или Enter, то и в дереве должно быть так. У Вас группы и элементы две разных таблицы/файла?finsoftrz писал(а): 09 Октябрь 2023, 8:15Вы путаете варианты, когда дерево используется только для групп, и когда в дереве выводятся и группы, и элементы.kreator писал(а): 08 Октябрь 2023, 21:54 С Вами неинтересно. Я про выбор записи из дерева в режиме SelectRecord. А также про режим редактирования. Двойной клик должен вызывать форму редактирования.
Я написал уже, что для выбора группы используется отдельное окно, в котором нет элементов. Там двойным щелчком или enter.
Двойной клик никому ничего не должен. Как решим, так он и будет.![]()
В любом случае как-то странно. Группа одна, а содержимое другой группы.
Название выбранной группы выводится над деревом синим цветом. Видно, какие элементы показываются в списке элементов.
В 1С в конфигураторе был признак выводить дерево слева от справочника элементов. Когда установлен, то поведение похоже, как у меня, только у них элементы остаются вперемежку с группами в основном списке элементов.
C6/C12, ШВС, tps/btrieve.
-
- ✯ Ветеран ✯
- Сообщения: 5158
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Рекурсивный список в виде дерева (TREE)
Попробуйте. Ничего красивого не придумал (Всё сделано на рутинах, как и положено в Clarion. Но для рекурсии автору пришлось писать процедуры с прототипами, а для них понадобились очереди с признаком TYPE. И сразу проблема c областью видимости переменных). Тупо на шаблоне сделал закладку "Классы". Там можно изменить префикс. Поменяется везде кроме Вашего ручного кода. Мои правки в тексте шаблона помечены. Можете их перенести в свой. Ранние правки не помечены. Был я молод и горяч, этим не заморачивался.gopstop2007 писал(а): 04 Октябрь 2023, 21:35Ваш модернизированный шаблон позволяет, несколько шаблонов в одном модуле? Или если не сложно выложте пожалуйста исправленную версию, спасибо.kreator писал(а): 28 Сентябрь 2023, 21:26 Есть шаблон "Дерево по одному файлу". Он не ABC, но сойдёт. Там проблема с SQL таблицами, но я её обошёл. Ещё ошибок там куча, я периодически их вылавливаю. Могу выложить мою исправленную версию. Автора, честно говоря уже не помню.
А как вы до сих пор дерево рисовали? Список товаров логично в дерево вписывается.

Будут проблемы - телеграфируйте.
- Вложения
-
- ABSTREE.ZIP
- (11.52 КБ) 149 скачиваний
We are hard at work… for you. 
