Страница 2 из 2
Дерево по одному файлу
Добавлено: 25 Май 2015, 14:20
PavelNK
Лет 15 назад решал аналогичные проблемы. Правда шаблонов не было, все писал в рукопашную. Все делается одним файлом без всяких алиасов, кол-во уровней не ограничено. Расписывать долго, суть тут -
http://network-journal.mpei.ac.ru/cgi-b ... &pa=4&ar=1
Дерево по одному файлу
Добавлено: 25 Май 2015, 16:47
Shur
kreator писал(а):Удивлён. Всегда думал, что дерево по одному файлу актуальная вещь. Например, в торговых системах. Удобная группировка товара. Опять же, можно аналитику делать по определённому уровня. Ещё пример. Вот сейчас у меня в проекте орг. структура предприятия выложена таким образом (филиалы-цеха-участки-бригады).
Посмотрел класс/шаблон UltraTree, поддержка дерева только через алиасы. Получается - тоже неактуально для народа.
Склоняюсь тогда о реализации через алиасы и шаблон SV дерева, но алиасы попробовать делать не на каждый уровень, а циклически связать два-три алиаса. Посмотрел на свои данные. 5-6 уровней - ещё реально, а больше уже нет. Думаю вероятность использования больше десяти уровней близка к нулю.
Вот я тоже удивляюсь, Kreator. Одна, не вполне удачная, как я понимаю, реализация (но там шаблон, возможно по-другому его было не написать), накладывает отпечаток на принятие современного решения.
Если реализовывать механизм руками, то я в упор здесь не вижу никаких множественных алиасов (кроме, возможно, одного -- для апдейта).
Каково общее задание: филиал-цех-участок-бригада? И что с этим всем надо уметь делать?
Дерево по одному файлу
Добавлено: 25 Май 2015, 18:34
Ал
Shur писал(а):kreator писал(а):...Если реализовывать механизм руками, то я в упор здесь не вижу никаких множественных алиасов (кроме, возможно, одного -- для апдейта)...
Зачем? для апдейта тож не надо

Дерево по одному файлу
Добавлено: 26 Май 2015, 1:41
Олег
Использую еще с пятерки доработанный контрол SingleFileTree из ШВС. Сейчас использую в девятке, немного "допиленные" для работы с SQL.
Вообще без алиасов. Спокойно держит несколько десятков уровней - где-то в районе третьего десятка уровней есть ограничение самого лист-контрола, что приводит к проблемам с отображением. Одна update-форма.
Универсальный инструмент для сетевых структур и организации каталога товаров с широким ассортиментом!
Под абс не делал за ненадобностью. В виде класса решил с самого начала не заморачиваться в виду неактуальности - и так спокойно можно вставлять несколько деревьев в одну форму (увеличение размера кода не сильно напрягает).
Дерево по одному файлу
Добавлено: 26 Май 2015, 6:19
Ал
тоже когда-то потребовалось по работе), перелопатил много всего разного, из "коробки" для того случая не прошло, в итоге брал что-то простое за основу и "нагромоздил" для себя вокруг все чего надо было.
для "абс" нетрудно тоже, особенно если надо для дела - есть стимул

, ну и никто не мешает сделать/оставить в шаблоне возможность вставки кода для дальнейшего ручного шлифования/манипулирования в разных вариациях/ситуациях...
Дерево по одному файлу
Добавлено: 26 Май 2015, 9:52
kreator
Олег писал(а):Использую еще с пятерки доработанный контрол SingleFileTree из ШВС. Сейчас использую в девятке, немного "допиленные" для работы с SQL.
Использую этот шаблон, всё тоже самое. Но меня напрягает отсутствие интеграции с ABC-классами, плюс напрягает принципиально другое программирование (если сделал и забыл - это одно, а если часто приходится что-то изменять?), плюс напрягает периодически выскакивающие ниоткуда глюки, в т.ч. при смене версий Клариона (подозреваю, что опять же из-за плохой совместимости с ABC). Как пример, недавно столкнулся, что описание очередей шаблон лепит в модульные переменные, и, если в модуле две процедуры с этим шаблоном, то проблема обеспечена. А так шаблон продвинутый, продуманный и функциональный, ничего не могу сказать. По факту, хотелось бы заменить его чем-то более новым, либо вовсе отказаться в пользу какого-то другого решения (как вариант - RelationTree от SV с алиасами).
Дерево по одному файлу
Добавлено: 26 Май 2015, 10:33
Олег
Этот шаблон изначально не был предназначен для интеграции с абс и сама его структура очень плохо-совместима с абс!
А от модульных переменных, которые Вадим использовал для возможности рекурсивного вызова рутинок, избавился сразу же, заменив их на локальный псевдо-стек.
Что касается альтернатив с алиасами - даже не смотрел в ту сторону - в моих проектах (сетевые структуры) глубина деревьев не может быть ограничена.
Дерево по одному файлу
Добавлено: 17 Июль 2015, 14:49
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 файла
И отображаем.
Дерево по одному файлу
Добавлено: 18 Июль 2015, 14:30
kreator
А вот вопрос от профана в In-Memory - как насчёт редактирования записей в In-Memory (в т.ч. и в данном случае). Отобразить дерево не проблема. Если погуглить (пояндексить

), можно найти формирование дерева без каких-либо ограничений посредством рекурсивной хранимки (советую посмотреть, Roman_55). А вот можно ли прикрутить более-менее стандартный механизм добавления, изменения, удаления? Или всё в рукопашную?