Работа с деревом значений. Вопрос #670595


#0 by mzelensky
Доброго всем! Что-то немного подтупливаю. Обычная форма. Размещаю там дерево значений и командную панель к ней. В дереве 2 колонки (кол1 и кол2). У "Кол1" стоит признак "отображать иерархию". Захожу в пользовательский режим (дерево пустое), нажимаю добавить строку - строка добавляется в первый уровень дерева. Нажимаю еще раз добавить строку - строка создается в иерархии первой строки. А далее картина такая - при создании новой строки, она довавляется в иерархию активной строки. При этом создать строку в первом уровне просто не удается! Единственный вариант скопировать первую строчку, а затем редактировать ее. Что я делаю не так? Как по-нормальному добавить строку в первый уровень дерева?
#1 by Smallrat
#2 by Smallrat
#3 by mzelensky
как-то это бредово. Они там либо копируют (как я и предполагал), либо делают ВСЕГДА ввод строки новой в корень ,а потом типа перетягивать нужно. не ужели нормально никак?!
#4 by kosts
Создай верхний Уровень - корень
#5 by Smallrat
вот фрагстер разбирался - если он заляпуху сделал, то без нее наверное никак
#6 by mzelensky
ну, я уже начал свою "ляпуху" кодить...но это реально ЛАЖА!
#7 by mzelensky
Просто создать первую строку и назвать ее "КОРЕНЬ"? В иерархическом справочнике есть настрока иакая....типа оторажать первый уровень или нет, вот в дереве такого не вижу.
#8 by kosts
Можно кнопку добавить "Создать на этом же уровне"
#9 by mzelensky
уже создал 2 кнопки :) наверзем уровне и вложенно. Вот теперь думаю отрубить стандартные кнопки на панели и контекстном меню. А еще нужно бы кнопку "инсерт" как-то переназначить на свою процедуру
#10 by mzelensky
А стандартного диалога переноса строки из одного родителя в другой случайно нет?
#11 by SanGvin
зажать контрол и ткнуть на уже выбранную. и снова попробовать добавить.
#12 by mzelensky
и что при этом должно произойти?
#13 by SanGvin
ничего =( думал если деселект строки сделать то получится, проверил, не получается =(
#14 by kosts
>А еще нужно бы кнопку "инсерт" как-то переназначить на свою процедуру См. Перед началом добавления
#15 by mzelensky
Ладно, дальше разберемся. А то я как-то сперва испугался, что совсем уже крыша поехала - не могу найти как строку в корень добавить (без доп. ухищрений)...а тут оказывается я не один такой :)
#16 by mzelensky
Всем спасибо!
#17 by kosts
Можно стандартную кнопку не отрубать, а показывать менюшку для выбора на этом же уровне создавать или подчиненном.
#18 by mzelensky
Очередная трабла! Новую ветку создавать не буду, напишу здесь!
#19 by mzelensky
Заполнил я дерево значений. Далее мне его необходимо хранить в базе, а следовательно хочу перегнать его в табличную часть. Обойти рекурсивно дерево и записать в ТЧ не проблема, встает другйо косяк - в дальнейшем нужно эту ТЧ обратко конвертить в дерево. Для этого нужно знать кто кому подчиняется (короче говоря родителя наду записывать в ТЧ), но я никак не могу придумать ключ уникальности для строки дерева что потом его использовать в качестве ориентира. Т.е. по какому "ключу" можно организовать иерархию ?
#20 by kosts
Я по простому числу связку делал.
#21 by kosts
В смысле не по "простому", а просто по числу :)
#22 by mzelensky
а число это что значит, откуда взял? Я сперва хотел делать по индексу строки, но как в итоге оказалось индекс строки дерева не уникален во всем дереве :(
#23 by mzelensky
можно было бы уникальный идентификатор сформировать, но опять таки вопрос..на основании чего его формировать...
#24 by kosts
Новый ключ = Макс(Нужные ключи) + 1;
#25 by kosts
Уникальный можно и без оснований формировать. Но думаю он здесь лишний, да и запросы как потом делать с ним...
#26 by mzelensky
а есть пример как обратно ТЗ в дерево развернуть по этому ключу?!
#27 by kosts
Под рукой нету. Далеко. В строке должны быть поля: Код строки|Код родителя| Другие поля
#28 by mzelensky
Так вроде и делаю, но что-то сегодня тяжело с интелектуальной работой...не могу красивую рекурсию написать. В тч легко записал, а обратно что-то не получается красиво.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С