Имя: Пароль:
1C
1С v8
Обход строк дерева
0 bUbA
 
22.05.13
12:04
Есть такая процедура

Процедура ОбойтиСтрокиДерева(ДеревоЗагрузки)
   дзНаше = Новый ДеревоЗначений;
   Для Каждого СтрокаДерева ИЗ ДеревоЗагрузки.Строки Цикл
       Если ЭлементыФормы.ДеревоЗагрузки.ТекущаяСтрока.ЭтоГруппа = Ложь Тогда
           Продолжить;    
       КонецЕсли;
       НС = ДеревоЗагрузки.Строки.Добавить();
       ЗаполнитьЗначенияСвойств(НС,дзНаше);
   КонецЦикла;            
   дзНаше.ВыбратьСтроку();
КонецПроцедуры

Необходимо, чтобы строки дерева заполнялись только элементами. Что здесь не так?
1 Maxus43
 
22.05.13
12:06
что не работает говори, или надо догадаться?
и это чего? Если ЭлементыФормы.ДеревоЗагрузки.ТекущаяСтрока.ЭтоГруппа = Ложь Тогда ? работает разве?
2 bUbA
 
22.05.13
12:10
(1) если курсор установлен на группе, то получается какой то бесконечный цикл, а если на элементе, то появляется просто пустая строка
3 Alex S D
 
22.05.13
12:12
бред какой-то, обходишь дерево и туда же добавляешь строки?
4 1Сергей
 
22.05.13
12:13
(3) + 1
5 Maxus43
 
22.05.13
12:14
Обходи копию дерева, а добавляй в доугое
6 Maxus43
 
22.05.13
12:15
ЗаполнитьЗначенияСвойств(НС,дзНаше);

дак дзНаше - пустая, чо заполнить хочешь?
7 Alex S D
 
22.05.13
12:16
видимо так надо
НС = дзНаше.Строки.Добавить();
8 Alex S D
 
22.05.13
12:16
+ ЗаполнитьЗначенияСвойств(НС,СтрокаДерева);
9 bUbA
 
22.05.13
12:19
(8) теперь на группе бесконечного цикла нету, но всё равно ДЗ пустое получается
10 1Сергей
 
22.05.13
12:20
(9) колонки ещё надо создать
11 Alex S D
 
22.05.13
12:20
пустое, у тебя же колонок нет там
12 Maxus43
 
22.05.13
12:20
(9) тут задача не программирования, а простой логике.
Да и дзНаше у тебя абсолютно пуста, без колонок. что он будет добавлять?
13 bUbA
 
22.05.13
12:23
(12) а если очистить это дерево и туда же добавить результаты этой процедуры?
14 Maxus43
 
22.05.13
12:24
(13) какое очистить?
дзНаше = ДеревоЗагрузки.Скопировать();
дзНаше.Очистить();

так хоть одинаковая структура будет
15 bUbA
 
22.05.13
12:28
(14) почему то всё равно пустые строки получаются, даже с колонками
16 Alex S D
 
22.05.13
12:28
(15) а где ты смотришь? в отладчике?
17 Maxus43
 
22.05.13
12:29
(15) смотри отладчиком, там увидишь где косяк поидее
18 bUbA
 
22.05.13
12:31
ну а как допустим сделать так, чтобы выбирались все элементы открытой группы, независимо установлен там курсор или нет?
19 Alex S D
 
22.05.13
12:33
не понял...
20 bUbA
 
22.05.13
12:36
(19) т.е. при нажатии на кнопку ДеревоЗагрузки очищалось и вместо него там появлялись все элементы, которые ранее входили в группу в очищенном дереве
21 Alex S D
 
22.05.13
12:42
это правила обмена?
22 bUbA
 
22.05.13
12:48
(21) это вы о чём?
сейчас это ДЗ заполняется, но совсем не так как надо, если курсор установлен на элементе, то появляется пустая строка. Если на группе, то открываются не все элементы этой группы, а копируется просто строка с её названием

дзНаше = ДеревоЗагрузки.Скопировать();
   дзНаше.Строки.Очистить();
   Для Каждого СтрокаДерева ИЗ ДеревоЗагрузки.Строки Цикл
       Если ЭлементыФормы.ДеревоЗагрузки.ТекущаяСтрока.ЭтоГруппа = Ложь Тогда
           Продолжить;    
       КонецЕсли;
       НС = дзНаше.Строки.Добавить();
       ЗаполнитьЗначенияСвойств(НС,СтрокаДерева);
   КонецЦикла;            
   дзНаше.ВыбратьСтроку();