Я не сам такое придумал, подсмотрел в свое время в 1С и творчески адаптировал. Для большинства людей такая схема привычная, так как 1С самое распространённое ПО. И это очень удобно на самом деле. Например, для быстрой переброски элементов между группами - выделяем элемент справа, целевую группу слева и жмем кнопку перенести. Или другие различные операции внутри дерева, например, привязка группы к другому родителю и т.п.
Рекурсивный список в виде дерева (TREE)
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4629
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Рекурсивный список в виде дерева (TREE)
C6/C11, ШВС, tps/btrieve.
-
- ✯ Ветеран ✯
- Сообщения: 4988
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Рекурсивный список в виде дерева (TREE)
Да нет такого в 1С. Вам приснилось наверно. Двойной клик на дереве - либо вызов формы редактирования, либо выбор записи в соответствующем режиме. Перетаскивание веток в шаблоне реализовано очень хорошо. Можно и drag-n-drop задействовать, только юзабилити хромает при больших деревьях.
We are hard at work… for you.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4629
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Рекурсивный список в виде дерева (TREE)
Ну, у меня деменция вроде пока не наступила. Но засомневался, сходил посмотреть. В 1С77 и в 1С8 (классический интерфейс) делается именно так, как я написал. У них только в списке элементов справа еще и группы отображаются, параллельно с деревом. В 1С8 (тонкий клиент), в той конфигурации, которая под рукой, номенклатурный справочник без дерева групп слева. Скорее всего, это опциональная штука, задается в конфигураторе.kreator писал(а): ↑06 Октябрь 2023, 14:01 Да нет такого в 1С. Вам приснилось наверно. Двойной клик на дереве - либо вызов формы редактирования, либо выбор записи в соответствующем режиме. Перетаскивание веток в шаблоне реализовано очень хорошо. Можно и drag-n-drop задействовать, только юзабилити хромает при больших деревьях.
Речь именно про отдельное дерево групп слева, а не дерево справа, в котором и элементы, и группы.
C6/C11, ШВС, tps/btrieve.
-
- ✯ Ветеран ✯
- Сообщения: 4988
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Рекурсивный список в виде дерева (TREE)
А как делается выбор? А как выход на редактирование?
We are hard at work… for you.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4629
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Рекурсивный список в виде дерева (TREE)
Не очень понял вопрос, выбор чего? Двойной щелчек в дереве групп устанавливает отбор товаров этой группы в соседнем списке. Редактирование групп обычно из контекстного меню, их состав часто не меняется. Иногда кнопки размещаются. Хорошо было бы управлять работой с деревом групп из тулбаре фрейма, но как-то это не совсем просто, так как подобные элементы заточены под линейные списки, это другой контрол шаблон. Выбор группы в каком-то другом окне оформляется отдельным диалогом, без элементов. Деревья не часто используются, работать с ними не очень удобно по сравнению с обычным списками.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7384
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 14 раз
- Поблагодарили: 49 раз
Рекурсивный список в виде дерева (TREE)
Информация для тех кому интересна теория сабжа.
2 дня назад OZON начал переход в API на новую структуру справочника категорий товаров,
отказавшись от рекурсивного дерева с произвольным уровнем вложенности.
Теперь два верхних уровня - это фиксированное дерево + [тип товара] (Электроника -> Компьютеры -> [Ноутбуки])
Но дальше характеристики (Процессор и т.д.) и их значения (Intel Celeron и т.д.) - уже содержат в себе полную
идентификацию крайней категории и типа товара, что по сути архитектуры данных уже является срезом классификатора.
Такова жись. Видимо красивая идея с рекурсивным деревом классификации не работает на больших данных. Увы !
2 дня назад OZON начал переход в API на новую структуру справочника категорий товаров,
отказавшись от рекурсивного дерева с произвольным уровнем вложенности.
Теперь два верхних уровня - это фиксированное дерево + [тип товара] (Электроника -> Компьютеры -> [Ноутбуки])
Но дальше характеристики (Процессор и т.д.) и их значения (Intel Celeron и т.д.) - уже содержат в себе полную
идентификацию крайней категории и типа товара, что по сути архитектуры данных уже является срезом классификатора.
Такова жись. Видимо красивая идея с рекурсивным деревом классификации не работает на больших данных. Увы !
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4629
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Рекурсивный список в виде дерева (TREE)
У меня в вебе дерево грузится целиком. Наверно, можно сделать и с подгрузкой веток, используя аякс запросы. Тут, видимо, другие причины. Не очень понял фразу, скорее всего вынесли характеристики отдельно, так как могут дублироваться в разных ветках дерева. Потом, с большой вложенностью просто неудобно работать.Игорь Столяров писал(а): ↑08 Октябрь 2023, 9:44 Такова жись. Видимо красивая идея с рекурсивным деревом классификации не работает на больших данных. Увы !
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7384
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 14 раз
- Поблагодарили: 49 раз
Рекурсивный список в виде дерева (TREE)
Нет, они и так были отдельно. Тут вопрос даже не про "работает-не работает", а про идею построение самого дерева.
Возьмём понятный пример ветки: Электроника -> Компьютеры -> Ноутбуки -> Процессор -> Celeron
В теории построения рекурсивного дерева - каждая ветка имеет уникальный ID и связана только с родителем.
Т.е. "Celeron" привязан только к "Процессору", а "Процессор" к "Ноутбуку".
Если где-то (например в серверах) есть ещё ветка с названием "Процессор" - то у неё уже совсем другой ID.
Это и есть красивая структура рекурсивного дерева- мы можем легко оторвать / переставить / объединить ветку на любом уровне.
Но мы не можем выбрать все товары с процессорами Celeron - кроме как контекстным перебором всего дерева.
Так вот теперь они сделали так, что:
- "Процессор" привязан к группе "Компьютеры + Ноутбуки"
- а "Celeron" привязан к группе "Компьютеры + Ноутбуки + Процессор"
Поэтому для ветки "Celeron" можно сразу получить отношение к компьютерам (не проходя ветки "Ноутбуки" и "Процессоры").
За теми кто отстал - не возвращаться. (С) Кодекс
-
- ✯ Ветеран ✯
- Сообщения: 4988
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Рекурсивный список в виде дерева (TREE)
С Вами неинтересно. Я про выбор записи из дерева в режиме SelectRecord. А также про режим редактирования. Двойной клик должен вызывать форму редактирования.finsoftrz писал(а): ↑07 Октябрь 2023, 20:40Не очень понял вопрос, выбор чего? Двойной щелчек в дереве групп устанавливает отбор товаров этой группы в соседнем списке. Редактирование групп обычно из контекстного меню, их состав часто не меняется. Иногда кнопки размещаются. Хорошо было бы управлять работой с деревом групп из тулбаре фрейма, но как-то это не совсем просто, так как подобные элементы заточены под линейные списки, это другой контрол шаблон. Выбор группы в каком-то другом окне оформляется отдельным диалогом, без элементов. Деревья не часто используются, работать с ними не очень удобно по сравнению с обычным списками.
We are hard at work… for you.
-
- ✯ Ветеран ✯
- Сообщения: 4988
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Рекурсивный список в виде дерева (TREE)
Я тупой. Смысла этого не понимаю. Я обычно что-то ищу на Озоне по названию. При этом пофиг структура рекурсивного дерева. Либо целенаправленно иду на определённую ветку, например - "Комплектующие для компьютера->Процессоры->Intel->Celeron".Игорь Столяров писал(а): ↑08 Октябрь 2023, 9:44 Информация для тех кому интересна теория сабжа.
2 дня назад OZON начал переход в API на новую структуру справочника категорий товаров,
отказавшись от рекурсивного дерева с произвольным уровнем вложенности.
Теперь два верхних уровня - это фиксированное дерево + [тип товара] (Электроника -> Компьютеры -> [Ноутбуки])
Но дальше характеристики (Процессор и т.д.) и их значения (Intel Celeron и т.д.) - уже содержат в себе полную
идентификацию крайней категории и типа товара, что по сути архитектуры данных уже является срезом классификатора.
Такова жись. Видимо красивая идея с рекурсивным деревом классификации не работает на больших данных. Увы !
Другое дело, что нет смысла делать ветку "Intel" и "Celeron". Это просто характеристики. Но это вроде как давно реализовано. У всех наверно. Может фиксированное дерево - это ограничение двумя уровнями? Для удобства аналитики. Не знаю. В Биг Дата всё равно кубы строят.
We are hard at work… for you.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7384
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 14 раз
- Поблагодарили: 49 раз
Рекурсивный список в виде дерева (TREE)
Конечно. Но для их выбора - мы всё равно проходим все ветки дерева ...
У нас никогда не будет реальных справочников с сотнями тысяч классификаторов и миллионами товаров.
Посмотреть какими новыми инструментами и методами решаются подобные задачи - очень интересно.
Может, что-то найдём полезное и для себя.
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4629
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Рекурсивный список в виде дерева (TREE)
Вы путаете варианты, когда дерево используется только для групп, и когда в дереве выводятся и группы, и элементы.
Я написал уже, что для выбора группы используется отдельное окно, в котором нет элементов. Там двойным щелчком или enter.
Двойной клик никому ничего не должен. Как решим, так он и будет.
C6/C11, ШВС, tps/btrieve.
-
- ✯ Ветеран ✯
- Сообщения: 4988
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Рекурсивный список в виде дерева (TREE)
Я за однообразие. Если выбор из обычного листа через двойной клик или Enter, то и в дереве должно быть так. У Вас группы и элементы две разных таблицы/файла?finsoftrz писал(а): ↑09 Октябрь 2023, 8:15Вы путаете варианты, когда дерево используется только для групп, и когда в дереве выводятся и группы, и элементы.
Я написал уже, что для выбора группы используется отдельное окно, в котором нет элементов. Там двойным щелчком или enter.
Двойной клик никому ничего не должен. Как решим, так он и будет.
В любом случае как-то странно. Группа одна, а содержимое другой группы.
We are hard at work… for you.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4629
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Рекурсивный список в виде дерева (TREE)
Да, группы и элементы в 2 разных таблицах. В 1С в одной. Мне это всегда не нравилось, разные сущности и структуры.kreator писал(а): ↑09 Октябрь 2023, 19:00Я за однообразие. Если выбор из обычного листа через двойной клик или Enter, то и в дереве должно быть так. У Вас группы и элементы две разных таблицы/файла?finsoftrz писал(а): ↑09 Октябрь 2023, 8:15Вы путаете варианты, когда дерево используется только для групп, и когда в дереве выводятся и группы, и элементы.
Я написал уже, что для выбора группы используется отдельное окно, в котором нет элементов. Там двойным щелчком или enter.
Двойной клик никому ничего не должен. Как решим, так он и будет.
В любом случае как-то странно. Группа одна, а содержимое другой группы.
Название выбранной группы выводится над деревом синим цветом. Видно, какие элементы показываются в списке элементов.
В 1С в конфигураторе был признак выводить дерево слева от справочника элементов. Когда установлен, то поведение похоже, как у меня, только у них элементы остаются вперемежку с группами в основном списке элементов.
C6/C11, ШВС, tps/btrieve.
-
- ✯ Ветеран ✯
- Сообщения: 4988
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Рекурсивный список в виде дерева (TREE)
Попробуйте. Ничего красивого не придумал (Всё сделано на рутинах, как и положено в Clarion. Но для рекурсии автору пришлось писать процедуры с прототипами, а для них понадобились очереди с признаком TYPE. И сразу проблема c областью видимости переменных). Тупо на шаблоне сделал закладку "Классы". Там можно изменить префикс. Поменяется везде кроме Вашего ручного кода. Мои правки в тексте шаблона помечены. Можете их перенести в свой. Ранние правки не помечены. Был я молод и горяч, этим не заморачивался. Как мне помнится, сделаны дополнительные вставки (Embeds), чтобы напрямую написать SQL код и обойти стандартные вызовы set, get, reget.gopstop2007 писал(а): ↑04 Октябрь 2023, 21:35Ваш модернизированный шаблон позволяет, несколько шаблонов в одном модуле? Или если не сложно выложте пожалуйста исправленную версию, спасибо.kreator писал(а): ↑28 Сентябрь 2023, 21:26 Есть шаблон "Дерево по одному файлу". Он не ABC, но сойдёт. Там проблема с SQL таблицами, но я её обошёл. Ещё ошибок там куча, я периодически их вылавливаю. Могу выложить мою исправленную версию. Автора, честно говоря уже не помню.
А как вы до сих пор дерево рисовали? Список товаров логично в дерево вписывается.
Будут проблемы - телеграфируйте.
- Вложения
-
- ABSTREE.ZIP
- (11.52 КБ) 40 скачиваний
We are hard at work… for you.