Имя: Пароль:
1C
1С v8
Как в форме добавить новую строку на верхний уровень непустого дерева значений?
,
0 Fragster
 
гуру
06.05.13
20:20
Толстый клиент, как в форме добавить новую строку на верхний уровень непустого дерева значений? Добавляет на второй уровень :(

Пока сделал заляпуху с установкой текущей строкой строки верхнего уровня и копированием - но это бред же...
1 Fragster
 
гуру
06.05.13
20:23
Добавлять строку в данные не вариант, потому что тогда отмена редактирования не работает.
2 drongo-god
 
06.05.13
20:40
(0) Что ты имеешь в виду под "верхним уровнем"?
это первая строка в дереве или строка у которой нет владельца?
3 drongo-god
 
06.05.13
20:41
(2) точнее "родителя"
4 craxx
 
06.05.13
20:58
Стр=Дерево.Вставить(0)
не?
5 drongo-god
 
06.05.13
21:03
(4) А что будет со строкой у которой был индекс 0?
6 Fragster
 
гуру
06.05.13
21:04
(2) строка у которой нет родителя
(4) как это решит проблему интерактивности? т.е. при нажатии на esc строки как и не было?
7 ПесняПроЗайцев
 
06.05.13
21:56
Внезапно: дерево.добавить
8 ПесняПроЗайцев
 
06.05.13
21:57
*строки.добавить )
9 Fragster
 
гуру
06.05.13
21:58
(7) Еще раз. Нажми инсерт в таб. поле - попадаешь в режим редактиварония строки. Нажми эскейп - строки как и не было.
10 Fragster
 
гуру
06.05.13
21:58
мне нужно такое же поведение, но чтобы на "0" уровне строка добавлялась
11 ПесняПроЗайцев
 
06.05.13
22:04
(9) не путай тп, данные, и собственно принцип работы тп.
12 Fragster
 
гуру
06.05.13
23:00
(11) это ты не путай. мне нужно именно поведение формы.
13 Dethmont
 
07.05.13
02:57
Строки = ДЗ.Строки;
   Стр = Строки.Добавить();
   МаксимальныйИндексСтрокВерхнегоУровня = ДЗ.Строки.Количество()-1;
   Строки.Сдвинуть(Стр,-МаксимальныйИндексСтрокВерхнегоУровня);
14 MSII
 
07.05.13
07:11
(12) А если перед началом добавления присвоить Родителю Неопределено, не то самое поведение получится?
15 chelentano
 
07.05.13
07:20
(12) сразу добавить какую-нибудь строку 1-го уровня, которой будут подчинены все твои строки
16 kosts
 
07.05.13
07:58
Может так как-то? Но не уверен, что сработает...


Процедура ТабличноеПоле1ПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель)
   
   Отказ = Истина;
   Строка = ТабличноеПоле1.Строки.Добавить(); //Добавить куда нужно
   ЭлементыФормы.ТабличноеПоле1.ИзменитьСтроку();
   СвояНоваяСтрока = Истина;
   
КонецПроцедуры

Процедура ТабличноеПоле1ПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
   
   Если СвояНоваяСтрока и ОтменаРедактирования Тогда
       // Удалить строку
   КонецЕсли;
   
КонецПроцедуры

17 Fragster
 
гуру
07.05.13
11:13
(16) да, подобная заляпуха работает. лучше, чем вариант с копированием, но все равно страшный.