Рекурсивный список в виде дерева (TREE)

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7515
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 18 раз
Поблагодарили: 53 раза

Рекурсивный список в виде дерева (TREE)

Сообщение Игорь Столяров »

Спасибо - понял ... Я это место видел и оно мне не нравилось.
У меня в ключе отбора - первое поле Level (уровень ветки) и в фильтре стояло Level = 0 (1,2) ...
Но прерывать по BREAK должно быть эффективней - буду пробовать ! :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7515
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 18 раз
Поблагодарили: 53 раза

Рекурсивный список в виде дерева (TREE)

Сообщение Игорь Столяров »

Губин Игорь писал(а): 29 Сентябрь 2023, 8:22 И забесплатно
Торговать нужно пойманной рыбой ! А учить делать удочки - это всегда было бесплатно ... :idied:
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2391
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Благодарил (а): 1 раз
Поблагодарили: 20 раз

Рекурсивный список в виде дерева (TREE)

Сообщение Губин Игорь »

Игорь Столяров писал(а): 29 Сентябрь 2023, 8:30 Но прерывать по BREAK должно быть эффективней - буду пробовать !
Очень эффективно :lol:
Игорь Столяров писал(а): 29 Сентябрь 2023, 8:34 А учить делать удочки - это всегда было бесплатно ...
Вот и идите поискать другого, кто учит делать удочки забесплатно :lol:
Игорь Столяров писал(а): 29 Сентябрь 2023, 8:30 У меня в ключе отбора - первое поле Level (уровень ветки) и в фильтре стояло Level = 0 (1,2) ...
IF level <> 0 then break. (это второе!!! условие)
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4754
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 38 раз

Рекурсивный список в виде дерева (TREE)

Сообщение finsoftrz »

Игорь Столяров писал(а): 29 Сентябрь 2023, 6:18
finsoftrz писал(а): 28 Сентябрь 2023, 23:31 Классификаторы для отбора, группировки, подсчета итогов в отчетах
Например - отчёт прайс-лист. Перед печатью нам его нужно подготовить и проверить.
Для этого мы работаем в списке с определённой группой товаров, которые должны отфильтровать по классификатору.
Это не противоречит сказанному. Найдите группу, установите отбор по ней и работайте. Справочник товаров можно просматривать как с учётом групп, так и без. Хотя я не очень понимаю, что Вы там работаете. У нас прайс печатается автоматически, это отчёт с набором параметров. Есть коммерческое предложение, там может быть определённая предварительная обработка. Например, поставить персональную цену или привязать недостающее фото для товара. Но это тоже отчёт и все действия после того, как он сформирован, а не в справочнике товаров. В данном случае отчёт это окно, а не wmf.
Игорь Столяров писал(а): 29 Сентябрь 2023, 6:18
finsoftrz писал(а): 28 Сентябрь 2023, 23:31 то название должно содержать эту информацию
Тогда названий должно быть несколько. Поскольку название со всей родословной товара не влезет на компактный
ценник или будет жрать кассовую ленту печатаясь в несколько строк ...
Да, так и есть, кроме основного названия можно заполнить 2 реквизита, отображение для печати и для ценника. Реально бывает нужно не часто. Например, недавно название для ценника было задействовано в онлайн заказах обедов в офис. На производстве дописываю всякие свои пометки, так как много всяких вариантов блюд, а на сайте эти пометки не нужны.
Игорь Столяров писал(а): 29 Сентябрь 2023, 6:18
finsoftrz писал(а): 28 Сентябрь 2023, 23:31 Если это игровая мышка logitech, то название должно содержать эту информацию.
Тогда это уже будет не название, а описание. И всё равно бывают классификаторы которые не добавить в название.
Некомплект, без упаковки, уценка и т.д. И по таким признакам ней тоже нужно получать выборки ассортимента ...
Это, как правило, аналитические признаки. Они задаются у товарных групп или отдельных товаров. Бывает или-или, бывает приоритетеая схема, когда задается у группы, может быть перекрыта аналогичной установкой у товара внутри группы. Если у группы, то иногда бывает с учётом иерархии, хотя я предпочитаю такого избегать из-за возможных ошибок. В 1С несколько другая стратегия. Они все аналитические признаки привязываюсь к товарам, а для заполнения используют групповые обработки.
Игорь Столяров писал(а): 29 Сентябрь 2023, 6:18
finsoftrz писал(а): 28 Сентябрь 2023, 23:31 могут быть альтернативные группы или дополнительные группы
Это да. Я вот смотрю на маркетплейсах - и видимо не получается у архитекторов больших данных работать с глубиной
дерева классификации по потребностям. И появляются "Товары для безопасности -> Дозиметры -> Дозиметры". :(
У меня в веб варианте электронных заказов тоже строка поиска (отбора) по фрагментам. Типа "дозим без" и все находится. :-) Разумеется, всякие варианты есть, в зависимости от предметной области. Где-то нужны наборы свойств (аналитических признаков).
C6/C11, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 5047
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 23 раза

Рекурсивный список в виде дерева (TREE)

Сообщение kreator »

Игорь Столяров писал(а): 28 Сентябрь 2023, 21:42 Спасибо - но нет. Я попробую сам как-то разрулить это дерево, идеи есть.
Не понял. Сами будете шаблон писать? Или ошибки отлавливать у существующего?
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7515
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 18 раз
Поблагодарили: 53 раза

Рекурсивный список в виде дерева (TREE)

Сообщение Игорь Столяров »

Шаблоны делать не умею. :( Юзаю штатный. И что-то грустно - работать удобно только мышкой.
Большое дерево, предположим прошли три уровня иерархии - получили список ... и не запомнить.
При следующем открытии - всё заново нужно промышкивать щелкая по веткам. :(
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4754
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 38 раз

Рекурсивный список в виде дерева (TREE)

Сообщение finsoftrz »

Игорь Столяров писал(а): 29 Сентябрь 2023, 13:18 Шаблоны делать не умею. :( Юзаю штатный. И что-то грустно - работать удобно только мышкой.
Большое дерево, предположим прошли три уровня иерархии - получили список ... и не запомнить.
При следующем открытии - всё заново нужно промышкивать щелкая по веткам. :(
Никогда не требовалось, но теоретически реализовать не должно быть сложно. Например, у меня есть кнопка поиска группы товара в свернутом дереве. То есть, когда список товаров без отбора по группе, подсвечиваем товар и жмем кнопку, в дереве подсвечивается группа этого товара и развертываются все вышестоящие уровни. Это из той же серии, сохранить выделенную группу при закрытии окна, а при повторном открытии прыгнуть на нее, раскрыв вышестоящие уровни. Или даже можно сохранять и восстанавливать все открытые уровни.
Надо понимать, что работа с деревьями существенно сложнее, чем с линейными списками. Например, если формируем отчет с группировками товаров и выводим итоги по каждому уровню, надо уметь их еще посчитать.
C6/C11, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 5047
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 23 раза

Рекурсивный список в виде дерева (TREE)

Сообщение kreator »

Игорь Столяров писал(а): 29 Сентябрь 2023, 13:18 Шаблоны делать не умею. :( Юзаю штатный. И что-то грустно - работать удобно только мышкой.
Большое дерево, предположим прошли три уровня иерархии - получили список ... и не запомнить.
При следующем открытии - всё заново нужно промышкивать щелкая по веткам. :(
Не знаю Вашу логику. Но у шаблона (если он тот) в свойствах на закладке "Дополнительно" есть галка "Позиционировать на запись из буфера файла". Работает.
"Штатный" - это тот, который мы все для себя здесь правим? Если так, нужно ли идти по граблям? Многие здесь уже прошли.
We are hard at work… for you. :)
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2391
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Благодарил (а): 1 раз
Поблагодарили: 20 раз

Рекурсивный список в виде дерева (TREE)

Сообщение Губин Игорь »

Игорь Столяров писал(а): 29 Сентябрь 2023, 13:18 При следующем открытии - всё заново нужно промышкивать щелкая по веткам.
Что-то вы, батенька, не то делаете. :nono: У меня дерево в стандартном шаблоне не сворачивается (иначе девочки сразу устроили бы мне полнолуние :dizzy: ) и позиция не теряется. Да, мышка наше всё, но и дерево, мягко сказать, не предназначено для работы с клавиатурой.
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7515
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 18 раз
Поблагодарили: 53 раза

Рекурсивный список в виде дерева (TREE)

Сообщение Игорь Столяров »

Губин Игорь писал(а): 29 Сентябрь 2023, 14:46 Что-то вы, батенька, не то делаете
Здесь скорей мои завышенные ожидания. :nr:
Дерево - это по сути старый Legacy шаблон, и как говорят, ещё и с косяками.
Судя по незатейливому коду - делалось для небольших вспомогательных справочников из пары сотен записей ...
Здесь надо либо погружаться в тему и делать то что нужно или пока отложить сие ... ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2391
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Благодарил (а): 1 раз
Поблагодарили: 20 раз

Рекурсивный список в виде дерева (TREE)

Сообщение Губин Игорь »

Игорь Столяров писал(а): 29 Сентябрь 2023, 18:12 Здесь надо либо погружаться в тему и делать то что нужно или пока отложить сие ...
Я особо и не погружался. В минимальном варианте

Прописываем в файле поля
1. принадлежность дерева к какому-то объекту (человек, товар...)
2. уникальный номер ветки
3. номер предшествующей ветки в дереве (поле 2) (0 - корневая ветка)
Создаём в файле ключи
1. поле 1 + поле 2
2. поле 2 (автоинкремент, примари)

1. Прикидываем максимально возможное количество уровней.
2. Создаём нужное количество алиасов в словаре (по 1 на уровень)
3. Прописываем во всех файлах алиасов связь много к 1 для всех нижеследующих веток (по ключу 2)
3. Открываем шаблон и тщательно заполняем все поля.
4. Долго и нудно делаем процедуры форм или, как я, одну процедуру с соответствующей логикой.
5. Вносим требуемое исправление в точку вставки.
6. Наслаждаемся.

В принципе, поля и ключи это блок для работы с любым деревом. Когда немного потренируешься (лет через 10 :nr: ), то сможешь творить что хочешь с рукописным кодом (дерево у меня в программе основной способ отображения и работы с данными)
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4754
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 10 раз
Поблагодарили: 38 раз

Рекурсивный список в виде дерева (TREE)

Сообщение finsoftrz »

Про поля и ключи все правильно. А про алиасы и далее по тексту, ну ты извращенец. :-) Всё достаточно просто делается на одном файле. Кто-то давно выкладывал форк single tree для abc, я за ненадобностью не сохранял. Можно дернуть шаблон из ШВС, там должно быть все понятно. Смысл в том, что при раскрытии ветки в очередь подкачиваются подчиненные записи, при свертывании удаляются.
C6/C11, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 5047
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 23 раза

Рекурсивный список в виде дерева (TREE)

Сообщение kreator »

Игорь Столяров писал(а): 29 Сентябрь 2023, 18:12 Судя по незатейливому коду - делалось для небольших вспомогательных справочников из пары сотен записей ...
Здесь надо либо погружаться в тему и делать то что нужно или пока отложить сие ...
У нас тысячи записей. Отрабатывает быстро. Но адаптирован для SQL.
We are hard at work… for you. :)
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2391
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Благодарил (а): 1 раз
Поблагодарили: 20 раз

Рекурсивный список в виде дерева (TREE)

Сообщение Губин Игорь »

kreator писал(а): 04 Октябрь 2023, 15:27 У нас тысячи записей. Отрабатывает быстро.
Дерево, отображаемое в LIST, в любом случае требует полной подкачки файла, хочешь или не хочешь. Можно извращаться с постраничной загрузкой, но ключевое тут "извращаться"
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2391
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Благодарил (а): 1 раз
Поблагодарили: 20 раз

Рекурсивный список в виде дерева (TREE)

Сообщение Губин Игорь »

Видел вариант с динамической подкачкой веток и перестройкой очереди при операции "раскрыть/сжать". Даже игрался с ним. Но не пошло. Нет у меня таких огромных деревьев.
Это я только кажусь дураком! На самом деле я полный идиот!
Ответить