Имя: Пароль:
1C
1С v8
Список слов преобразовать в дерево значений
,
0 1cnik123
 
15.06.13
15:38
Есть допустим список:
Линейка М-100
Линейка М-100 21
Карандаш П10
Карандаш Белый

Как из такого списка (тз) сделать дерево?

Линейка
-М-100
--21
Карандаш
-П10
-Белый

подскажите алгоритм или запрос...
1 Alterife
 
15.06.13
15:53
(0) Для начала - отсортировать.
2 GANR
 
15.06.13
16:01
(0) Посредством рекурсии или массива, заменяющего стек вызовов рекурсивной процедуры. Ночку полежать - алгоритм и придет на ум  ))).
3 1cnik123
 
15.06.13
16:10
(1)(2) будем искать...
4 ale-sarin
 
15.06.13
16:37
(3) Сразу задумайтесь, что будете делать например с "Бумага писчая А4" и "Бумага писчая А5".

Бумага
- Писчая А4
- Писчая А5

или

Бумага писчая
- А4
- А5.

Т.е. по первому слову или по совпадению слева?
5 exwill
 
15.06.13
18:29
(4) А (0) почитать внимательно?
6 mikecool
 
15.06.13
18:39
иерархию сделать в базе и не парить себе моск
7 Wobland
 
15.06.13
18:41
а ещё можно задаться вопросом "кто породил этоу ТЗ?"
8 DirecTwiX
 
15.06.13
18:43
а в чем проблема то?
разбиваешь  строку по словам, а  дальше если находишь  элемент в  узле,  то в  узел  ставишь найденный  и  переходишь к  следующему  слову.  Не находишь  узла -  создаешь  свой

Но  зачем такое надо?  Выглядит  бредово
9 mistеr
 
15.06.13
18:44
(7) Лень-матушка.
10 1cnik123
 
15.06.13
19:10
(4) должно быть
Бумага
- писчая
--а4
--а5
11 1cnik123
 
15.06.13
19:11
(8) задача больше алгоритмическая, не для нужд пользователей
12 Asmody
 
15.06.13
19:23
Процедура СтрокуВДерево(Строка, ДЗ)
Массив = СтрокуВМассив(Строка, "");
УровеньДЗ = ДЗ;
Для каждого элемент из массив цикл
 УровеньДЗ = НайтиИлиДобавитьВДерево(элемент);
КонецЦикла;
КонецПроцедуры


недостающее очевидно, сам допишешь
13 Asmody
 
15.06.13
19:24
пропустил
УровеньДЗ = НайтиИлиДобавитьВДерево(элемент, УровеньДЗ);
14 1cnik123
 
15.06.13
19:45
(12)НайтиИлиДобавитьВДерево - ты там предлагаешь брать подслово и искать? если не нашли добавили узел?