Дерево по одному файлу

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
PavelNK
Старожил
Сообщения: 279
Зарегистрирован: 15 Март 2011, 8:02

Дерево по одному файлу

Сообщение PavelNK »

Лет 15 назад решал аналогичные проблемы. Правда шаблонов не было, все писал в рукопашную. Все делается одним файлом без всяких алиасов, кол-во уровней не ограничено. Расписывать долго, суть тут - http://network-journal.mpei.ac.ru/cgi-b ... &pa=4&ar=1
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Дерево по одному файлу

Сообщение Shur »

kreator писал(а):Удивлён. Всегда думал, что дерево по одному файлу актуальная вещь. Например, в торговых системах. Удобная группировка товара. Опять же, можно аналитику делать по определённому уровня. Ещё пример. Вот сейчас у меня в проекте орг. структура предприятия выложена таким образом (филиалы-цеха-участки-бригады).
Посмотрел класс/шаблон UltraTree, поддержка дерева только через алиасы. Получается - тоже неактуально для народа.
Склоняюсь тогда о реализации через алиасы и шаблон SV дерева, но алиасы попробовать делать не на каждый уровень, а циклически связать два-три алиаса. Посмотрел на свои данные. 5-6 уровней - ещё реально, а больше уже нет. Думаю вероятность использования больше десяти уровней близка к нулю.
Вот я тоже удивляюсь, Kreator. Одна, не вполне удачная, как я понимаю, реализация (но там шаблон, возможно по-другому его было не написать), накладывает отпечаток на принятие современного решения.
Если реализовывать механизм руками, то я в упор здесь не вижу никаких множественных алиасов (кроме, возможно, одного -- для апдейта).
Каково общее задание: филиал-цех-участок-бригада? И что с этим всем надо уметь делать?
Ал
✯ Ветеран ✯
Сообщения: 1038
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия
Поблагодарили: 1 раз

Дерево по одному файлу

Сообщение Ал »

Shur писал(а):
kreator писал(а):...Если реализовывать механизм руками, то я в упор здесь не вижу никаких множественных алиасов (кроме, возможно, одного -- для апдейта)...
Зачем? для апдейта тож не надо :mrgreen:
Аватара пользователя
Олег
Ветеран движения
Сообщения: 122
Зарегистрирован: 16 Июль 2005, 2:35
Откуда: Москва
Контактная информация:

Дерево по одному файлу

Сообщение Олег »

Использую еще с пятерки доработанный контрол SingleFileTree из ШВС. Сейчас использую в девятке, немного "допиленные" для работы с SQL.
Вообще без алиасов. Спокойно держит несколько десятков уровней - где-то в районе третьего десятка уровней есть ограничение самого лист-контрола, что приводит к проблемам с отображением. Одна update-форма.
Универсальный инструмент для сетевых структур и организации каталога товаров с широким ассортиментом!
Под абс не делал за ненадобностью. В виде класса решил с самого начала не заморачиваться в виду неактуальности - и так спокойно можно вставлять несколько деревьев в одну форму (увеличение размера кода не сильно напрягает).
Ал
✯ Ветеран ✯
Сообщения: 1038
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия
Поблагодарили: 1 раз

Дерево по одному файлу

Сообщение Ал »

тоже когда-то потребовалось по работе), перелопатил много всего разного, из "коробки" для того случая не прошло, в итоге брал что-то простое за основу и "нагромоздил" для себя вокруг все чего надо было.
для "абс" нетрудно тоже, особенно если надо для дела - есть стимул :lol: , ну и никто не мешает сделать/оставить в шаблоне возможность вставки кода для дальнейшего ручного шлифования/манипулирования в разных вариациях/ситуациях...
kreator
✯ Ветеран ✯
Сообщения: 5158
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Дерево по одному файлу

Сообщение kreator »

Олег писал(а):Использую еще с пятерки доработанный контрол SingleFileTree из ШВС. Сейчас использую в девятке, немного "допиленные" для работы с SQL.
Использую этот шаблон, всё тоже самое. Но меня напрягает отсутствие интеграции с ABC-классами, плюс напрягает принципиально другое программирование (если сделал и забыл - это одно, а если часто приходится что-то изменять?), плюс напрягает периодически выскакивающие ниоткуда глюки, в т.ч. при смене версий Клариона (подозреваю, что опять же из-за плохой совместимости с ABC). Как пример, недавно столкнулся, что описание очередей шаблон лепит в модульные переменные, и, если в модуле две процедуры с этим шаблоном, то проблема обеспечена. А так шаблон продвинутый, продуманный и функциональный, ничего не могу сказать. По факту, хотелось бы заменить его чем-то более новым, либо вовсе отказаться в пользу какого-то другого решения (как вариант - RelationTree от SV с алиасами).
We are hard at work… for you. :)
Аватара пользователя
Олег
Ветеран движения
Сообщения: 122
Зарегистрирован: 16 Июль 2005, 2:35
Откуда: Москва
Контактная информация:

Дерево по одному файлу

Сообщение Олег »

Этот шаблон изначально не был предназначен для интеграции с абс и сама его структура очень плохо-совместима с абс!
А от модульных переменных, которые Вадим использовал для возможности рекурсивного вызова рутинок, избавился сразу же, заменив их на локальный псевдо-стек.
Что касается альтернатив с алиасами - даже не смотрел в ту сторону - в моих проектах (сетевые структуры) глубина деревьев не может быть ограничена.
Roman_55
Новичок
Сообщения: 5
Зарегистрирован: 11 Июнь 2013, 8:58

Дерево по одному файлу

Сообщение Roman_55 »

Я вместо алиасов использовал InMemory набор из близнецов файла оригинала (того самого, со всем деревом внутри себя).
Всех усилий - Ctrl-С Ctrl-V понажимать. Процедура формирования занимает 100 строк при 7 уровнях.
Основной запрос

Код: Выделить всё

 SQL_FILE{PROP:SQL}='SELECT t1.PLACEINSTALL AS lvl1, t1.IDPLACE AS ID1, t1.PARENTID AS PD1, ' & |
                           't2.PLACEINSTALL AS lvl2, t2.IDPLACE AS ID2, t2.PARENTID AS PD2, ' & |
                           't3.PLACEINSTALL AS lvl3, t3.IDPLACE AS ID3, t3.PARENTID AS PD3, ' & |
                           't4.PLACEINSTALL AS lvl4, t4.IDPLACE AS ID4, t4.PARENTID AS PD4, ' & |
                           't5.PLACEINSTALL AS lvl5, t5.IDPLACE AS ID5, t5.PARENTID AS PD5, ' & |
                           't6.PLACEINSTALL AS lvl6, t6.IDPLACE AS ID6, t6.PARENTID AS PD6, ' & |
                           't7.PLACEINSTALL AS lvl7, t7.IDPLACE AS ID7, t7.PARENTID AS PD7' & |
                           ' FROM PlacesInst AS t1' & |
                           ' LEFT JOIN PlacesInst AS t2 ON t2.PARENTID = t1.IDPLACE ' & |
                           ' LEFT JOIN PlacesInst AS t3 ON t3.PARENTID = t2.IDPLACE ' & |
                           ' LEFT JOIN PlacesInst AS t4 ON t4.PARENTID = t3.IDPLACE ' & |
                           ' LEFT JOIN PlacesInst AS t5 ON t5.PARENTID = t4.IDPLACE ' & |
                           ' LEFT JOIN PlacesInst AS t6 ON t6.PARENTID = t5.IDPLACE ' & |
                           ' LEFT JOIN PlacesInst AS t7 ON t7.PARENTID = t6.IDPLACE ' & |
                           ' WHERE t1.PARENTID = 0 '  
Потом в цикле разносим по таблицам в памяти

Код: Выделить всё

    Li:PlaceInstall=SQL:COL_i+1
     Li:IdPlace=SQL:COL_i+2
     Li:ParentID=SQL:COL_i+3
Где i - номер очередной таблица и поля SQL файла
И отображаем.
kreator
✯ Ветеран ✯
Сообщения: 5158
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Дерево по одному файлу

Сообщение kreator »

А вот вопрос от профана в In-Memory - как насчёт редактирования записей в In-Memory (в т.ч. и в данном случае). Отобразить дерево не проблема. Если погуглить (пояндексить :mrgreen: ), можно найти формирование дерева без каких-либо ограничений посредством рекурсивной хранимки (советую посмотреть, Roman_55). А вот можно ли прикрутить более-менее стандартный механизм добавления, изменения, удаления? Или всё в рукопашную?
We are hard at work… for you. :)
Ответить