Имя: Пароль:
1C
1С v8
Работа с деревом значений. Вопрос
,
0 mzelensky
 
26.06.13
08:58
Доброго всем!
Что-то немного подтупливаю. Обычная форма. Размещаю там дерево значений и командную панель к ней. В дереве 2 колонки (кол1 и кол2). У "Кол1" стоит признак "отображать иерархию".

Захожу в пользовательский режим (дерево пустое), нажимаю добавить строку - строка добавляется в первый уровень дерева. Нажимаю еще раз добавить строку - строка создается в иерархии первой строки.
А далее картина такая - при создании новой строки, она довавляется в иерархию активной строки. При этом создать строку в первом уровне просто не удается! Единственный вариант скопировать первую строчку, а затем редактировать ее.

Что я делаю не так? Как по-нормальному добавить строку в первый уровень дерева?
1 Smallrat
 
26.06.13
09:00
2 Smallrat
 
26.06.13
09:00
3 mzelensky
 
26.06.13
09:04
(1)(2) как-то это бредово. Они там либо копируют (как я и предполагал), либо делают ВСЕГДА ввод строки новой в корень ,а потом типа перетягивать нужно.

не ужели нормально никак?!
4 kosts
 
26.06.13
09:08
(0) Создай верхний Уровень - корень
5 Smallrat
 
26.06.13
09:09
вот фрагстер разбирался - если он заляпуху сделал, то без нее наверное никак
v8: Как в форме добавить новую строку на верхний уровень непустого дерева значений?
6 mzelensky
 
26.06.13
09:13
(5) ну, я уже начал свою "ляпуху" кодить...но это реально ЛАЖА!
7 mzelensky
 
26.06.13
09:14
(4) Просто создать первую строку и назвать ее "КОРЕНЬ"?

В иерархическом справочнике есть настрока иакая....типа оторажать первый уровень или нет, вот в дереве такого не вижу.
8 kosts
 
26.06.13
09:18
Можно кнопку добавить "Создать на этом же уровне"
9 mzelensky
 
26.06.13
09:19
(8) уже создал 2 кнопки :) наверзем уровне и вложенно.

Вот теперь думаю отрубить стандартные кнопки на панели и контекстном меню. А еще нужно бы кнопку "инсерт" как-то переназначить на свою процедуру
10 mzelensky
 
26.06.13
09:25
А стандартного диалога переноса строки из одного родителя в другой случайно нет?
11 SanGvin
 
26.06.13
09:26
зажать контрол и ткнуть на уже выбранную. и снова попробовать добавить.
12 mzelensky
 
26.06.13
09:29
(11) и что при этом должно произойти?
13 SanGvin
 
26.06.13
09:33
(12) ничего =( думал если деселект строки сделать то получится, проверил, не получается =(
14 kosts
 
26.06.13
09:35
(9) >А еще нужно бы кнопку "инсерт" как-то переназначить на свою процедуру

См. Перед началом добавления
15 mzelensky
 
26.06.13
09:37
Ладно, дальше разберемся. А то я как-то сперва испугался, что совсем уже крыша поехала - не могу найти как строку в корень добавить (без доп. ухищрений)...а тут оказывается я не один такой :)
16 mzelensky
 
26.06.13
09:37
Всем спасибо!
17 kosts
 
26.06.13
09:38
Можно стандартную кнопку не отрубать, а показывать менюшку для выбора на этом же уровне создавать или подчиненном.
18 mzelensky
 
26.06.13
12:58
Очередная трабла!
Новую ветку создавать не буду, напишу здесь!
19 mzelensky
 
26.06.13
13:01
Заполнил я дерево значений. Далее мне его необходимо хранить в базе, а следовательно хочу перегнать его в табличную часть.

Обойти рекурсивно дерево и записать в ТЧ не проблема, встает другйо косяк - в дальнейшем нужно эту ТЧ обратко конвертить в дерево. Для этого нужно знать кто кому подчиняется (короче говоря родителя наду записывать в ТЧ), но я никак не могу придумать ключ уникальности для строки дерева что потом его использовать в качестве ориентира.

Т.е. по какому "ключу" можно организовать иерархию ?
20 kosts
 
26.06.13
13:16
(19) Я по простому числу связку делал.
21 kosts
 
26.06.13
13:17
(20) В смысле не по "простому", а просто по числу :)
22 mzelensky
 
26.06.13
13:18
(21) а число это что значит, откуда взял?

Я сперва хотел делать по индексу строки, но как в итоге оказалось индекс строки дерева не уникален во всем дереве :(
23 mzelensky
 
26.06.13
13:19
(22) можно было бы уникальный идентификатор сформировать, но опять таки вопрос..на основании чего его формировать...
24 kosts
 
26.06.13
13:24
(22) Новый ключ = Макс(Нужные ключи) + 1;
25 kosts
 
26.06.13
13:24
(23) Уникальный можно и без оснований формировать. Но думаю он здесь лишний, да и запросы как потом делать с ним...
26 mzelensky
 
26.06.13
13:25
(24) а есть пример как обратно ТЗ в дерево развернуть по этому ключу?!
27 kosts
 
26.06.13
13:27
(26) Под рукой нету. Далеко.
В строке должны быть поля:
Код строки|Код родителя| Другие поля
28 mzelensky
 
26.06.13
13:31
(27) Так вроде и делаю, но что-то сегодня тяжело с интелектуальной работой...не могу красивую рекурсию написать.

В тч легко записал, а обратно что-то не получается красиво.
Независимо от того, куда вы едете — это в гору и против ветра!