Рекурсивный список в виде дерева (TREE)
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Игорь Столяров
- Ветеран движения
- Сообщения: 7648
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 23 раза
- Поблагодарили: 67 раз
Рекурсивный список в виде дерева (TREE)
Спасибо - понял ... Я это место видел и оно мне не нравилось.
У меня в ключе отбора - первое поле Level (уровень ветки) и в фильтре стояло Level = 0 (1,2) ...
Но прерывать по BREAK должно быть эффективней - буду пробовать !
У меня в ключе отбора - первое поле Level (уровень ветки) и в фильтре стояло Level = 0 (1,2) ...
Но прерывать по BREAK должно быть эффективней - буду пробовать !
Make Clarion Great Again !
- Игорь Столяров
- Ветеран движения
- Сообщения: 7648
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 23 раза
- Поблагодарили: 67 раз
Рекурсивный список в виде дерева (TREE)
Торговать нужно пойманной рыбой ! А учить делать удочки - это всегда было бесплатно ...
Make Clarion Great Again !
- Губин Игорь
- ✯ Ветеран ✯
- Сообщения: 2428
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 1 раз
- Поблагодарили: 23 раза
Рекурсивный список в виде дерева (TREE)
Очень эффективноИгорь Столяров писал(а): ↑29 Сентябрь 2023, 8:30 Но прерывать по BREAK должно быть эффективней - буду пробовать !
Вот и идите поискать другого, кто учит делать удочки забесплатноИгорь Столяров писал(а): ↑29 Сентябрь 2023, 8:34 А учить делать удочки - это всегда было бесплатно ...
IF level <> 0 then break. (это второе!!! условие)Игорь Столяров писал(а): ↑29 Сентябрь 2023, 8:30 У меня в ключе отбора - первое поле Level (уровень ветки) и в фильтре стояло Level = 0 (1,2) ...
Это я только кажусь дураком! На самом деле я полный идиот!
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4848
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 43 раза
Рекурсивный список в виде дерева (TREE)
Это не противоречит сказанному. Найдите группу, установите отбор по ней и работайте. Справочник товаров можно просматривать как с учётом групп, так и без. Хотя я не очень понимаю, что Вы там работаете. У нас прайс печатается автоматически, это отчёт с набором параметров. Есть коммерческое предложение, там может быть определённая предварительная обработка. Например, поставить персональную цену или привязать недостающее фото для товара. Но это тоже отчёт и все действия после того, как он сформирован, а не в справочнике товаров. В данном случае отчёт это окно, а не wmf.Игорь Столяров писал(а): ↑29 Сентябрь 2023, 6:18Например - отчёт прайс-лист. Перед печатью нам его нужно подготовить и проверить.
Для этого мы работаем в списке с определённой группой товаров, которые должны отфильтровать по классификатору.
Да, так и есть, кроме основного названия можно заполнить 2 реквизита, отображение для печати и для ценника. Реально бывает нужно не часто. Например, недавно название для ценника было задействовано в онлайн заказах обедов в офис. На производстве дописываю всякие свои пометки, так как много всяких вариантов блюд, а на сайте эти пометки не нужны.Игорь Столяров писал(а): ↑29 Сентябрь 2023, 6:18Тогда названий должно быть несколько. Поскольку название со всей родословной товара не влезет на компактный
ценник или будет жрать кассовую ленту печатаясь в несколько строк ...
Это, как правило, аналитические признаки. Они задаются у товарных групп или отдельных товаров. Бывает или-или, бывает приоритетеая схема, когда задается у группы, может быть перекрыта аналогичной установкой у товара внутри группы. Если у группы, то иногда бывает с учётом иерархии, хотя я предпочитаю такого избегать из-за возможных ошибок. В 1С несколько другая стратегия. Они все аналитические признаки привязываюсь к товарам, а для заполнения используют групповые обработки.Игорь Столяров писал(а): ↑29 Сентябрь 2023, 6:18Тогда это уже будет не название, а описание. И всё равно бывают классификаторы которые не добавить в название.
Некомплект, без упаковки, уценка и т.д. И по таким признакам ней тоже нужно получать выборки ассортимента ...
У меня в веб варианте электронных заказов тоже строка поиска (отбора) по фрагментам. Типа "дозим без" и все находится. Разумеется, всякие варианты есть, в зависимости от предметной области. Где-то нужны наборы свойств (аналитических признаков).Игорь Столяров писал(а): ↑29 Сентябрь 2023, 6:18Это да. Я вот смотрю на маркетплейсах - и видимо не получается у архитекторов больших данных работать с глубиной
дерева классификации по потребностям. И появляются "Товары для безопасности -> Дозиметры -> Дозиметры".
C6/C11, ШВС, tps/btrieve.
-
- ✯ Ветеран ✯
- Сообщения: 5077
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 10 раз
- Поблагодарили: 23 раза
Рекурсивный список в виде дерева (TREE)
Не понял. Сами будете шаблон писать? Или ошибки отлавливать у существующего?Игорь Столяров писал(а): ↑28 Сентябрь 2023, 21:42 Спасибо - но нет. Я попробую сам как-то разрулить это дерево, идеи есть.
We are hard at work… for you.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7648
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 23 раза
- Поблагодарили: 67 раз
Рекурсивный список в виде дерева (TREE)
Шаблоны делать не умею. Юзаю штатный. И что-то грустно - работать удобно только мышкой.
Большое дерево, предположим прошли три уровня иерархии - получили список ... и не запомнить.
При следующем открытии - всё заново нужно промышкивать щелкая по веткам.
Большое дерево, предположим прошли три уровня иерархии - получили список ... и не запомнить.
При следующем открытии - всё заново нужно промышкивать щелкая по веткам.
Make Clarion Great Again !
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4848
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 43 раза
Рекурсивный список в виде дерева (TREE)
Никогда не требовалось, но теоретически реализовать не должно быть сложно. Например, у меня есть кнопка поиска группы товара в свернутом дереве. То есть, когда список товаров без отбора по группе, подсвечиваем товар и жмем кнопку, в дереве подсвечивается группа этого товара и развертываются все вышестоящие уровни. Это из той же серии, сохранить выделенную группу при закрытии окна, а при повторном открытии прыгнуть на нее, раскрыв вышестоящие уровни. Или даже можно сохранять и восстанавливать все открытые уровни.Игорь Столяров писал(а): ↑29 Сентябрь 2023, 13:18 Шаблоны делать не умею. Юзаю штатный. И что-то грустно - работать удобно только мышкой.
Большое дерево, предположим прошли три уровня иерархии - получили список ... и не запомнить.
При следующем открытии - всё заново нужно промышкивать щелкая по веткам.
Надо понимать, что работа с деревьями существенно сложнее, чем с линейными списками. Например, если формируем отчет с группировками товаров и выводим итоги по каждому уровню, надо уметь их еще посчитать.
C6/C11, ШВС, tps/btrieve.
-
- ✯ Ветеран ✯
- Сообщения: 5077
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 10 раз
- Поблагодарили: 23 раза
Рекурсивный список в виде дерева (TREE)
Не знаю Вашу логику. Но у шаблона (если он тот) в свойствах на закладке "Дополнительно" есть галка "Позиционировать на запись из буфера файла". Работает.Игорь Столяров писал(а): ↑29 Сентябрь 2023, 13:18 Шаблоны делать не умею. Юзаю штатный. И что-то грустно - работать удобно только мышкой.
Большое дерево, предположим прошли три уровня иерархии - получили список ... и не запомнить.
При следующем открытии - всё заново нужно промышкивать щелкая по веткам.
"Штатный" - это тот, который мы все для себя здесь правим? Если так, нужно ли идти по граблям? Многие здесь уже прошли.
We are hard at work… for you.
- Губин Игорь
- ✯ Ветеран ✯
- Сообщения: 2428
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 1 раз
- Поблагодарили: 23 раза
Рекурсивный список в виде дерева (TREE)
Что-то вы, батенька, не то делаете. У меня дерево в стандартном шаблоне не сворачивается (иначе девочки сразу устроили бы мне полнолуние ) и позиция не теряется. Да, мышка наше всё, но и дерево, мягко сказать, не предназначено для работы с клавиатурой.Игорь Столяров писал(а): ↑29 Сентябрь 2023, 13:18 При следующем открытии - всё заново нужно промышкивать щелкая по веткам.
Это я только кажусь дураком! На самом деле я полный идиот!
- Игорь Столяров
- Ветеран движения
- Сообщения: 7648
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 23 раза
- Поблагодарили: 67 раз
Рекурсивный список в виде дерева (TREE)
Здесь скорей мои завышенные ожидания.
Дерево - это по сути старый Legacy шаблон, и как говорят, ещё и с косяками.
Судя по незатейливому коду - делалось для небольших вспомогательных справочников из пары сотен записей ...
Здесь надо либо погружаться в тему и делать то что нужно или пока отложить сие ...
Make Clarion Great Again !
- Губин Игорь
- ✯ Ветеран ✯
- Сообщения: 2428
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 1 раз
- Поблагодарили: 23 раза
Рекурсивный список в виде дерева (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 ), то сможешь творить что хочешь с рукописным кодом (дерево у меня в программе основной способ отображения и работы с данными)
Это я только кажусь дураком! На самом деле я полный идиот!
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4848
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 43 раза
Рекурсивный список в виде дерева (TREE)
Про поля и ключи все правильно. А про алиасы и далее по тексту, ну ты извращенец. Всё достаточно просто делается на одном файле. Кто-то давно выкладывал форк single tree для abc, я за ненадобностью не сохранял. Можно дернуть шаблон из ШВС, там должно быть все понятно. Смысл в том, что при раскрытии ветки в очередь подкачиваются подчиненные записи, при свертывании удаляются.
C6/C11, ШВС, tps/btrieve.
-
- ✯ Ветеран ✯
- Сообщения: 5077
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 10 раз
- Поблагодарили: 23 раза
Рекурсивный список в виде дерева (TREE)
У нас тысячи записей. Отрабатывает быстро. Но адаптирован для SQL.Игорь Столяров писал(а): ↑29 Сентябрь 2023, 18:12 Судя по незатейливому коду - делалось для небольших вспомогательных справочников из пары сотен записей ...
Здесь надо либо погружаться в тему и делать то что нужно или пока отложить сие ...
We are hard at work… for you.
- Губин Игорь
- ✯ Ветеран ✯
- Сообщения: 2428
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 1 раз
- Поблагодарили: 23 раза
Рекурсивный список в виде дерева (TREE)
Дерево, отображаемое в LIST, в любом случае требует полной подкачки файла, хочешь или не хочешь. Можно извращаться с постраничной загрузкой, но ключевое тут "извращаться"
Это я только кажусь дураком! На самом деле я полный идиот!
- Губин Игорь
- ✯ Ветеран ✯
- Сообщения: 2428
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 1 раз
- Поблагодарили: 23 раза
Рекурсивный список в виде дерева (TREE)
Видел вариант с динамической подкачкой веток и перестройкой очереди при операции "раскрыть/сжать". Даже игрался с ним. Но не пошло. Нет у меня таких огромных деревьев.
Это я только кажусь дураком! На самом деле я полный идиот!