Имя: Пароль:
1C
 
Начальное отображение дерева
0 selenat
 
07.11.07
13:05
На форме табл. поле с типом ДеревоЗначений. По нажатию на кнопку программно формирую дерево, с которым связано это ТП. У ТП свойство "Начальное отображение дерева" = РаскрыватьВсеУровни. Но дерево в ТП все равно формируется в свернутом виде. Вопрос - почему и как развернуть все уровни при его формировании?
1 selenat
 
07.11.07
13:15
ап
2 GenV
 
07.11.07
13:23
(0) Тоже с такой же гадостью столкнулся :( Как я понял этот флаг влияет на первоначальное отображение дерева.

Можно, например, менять строку к данным дерева и создавать колонки или как-нибудь через эмуляцию вызовов клавиатуры извернуться.
3 selenat
 
07.11.07
13:32
(2) через эмуляцию вызовов клавиатуры - это сильно.
Видимо придется сделать у дерева еще одно булево поле, устанавливать для него истина при формировании дерева, а потом в ПриВыводеСтроки если истина, то разворачивать ее и присваивать этому полю ложь. Хотя некошерно как-то. Какие еще есть идеи?
4 rs
 
07.11.07
13:48
ТабличноеПоле (TableBox)
Развернуть (Expand)
Синтаксис:
Развернуть(<Строка>, <С подчиненными>)
Параметры:
<Строка> (обязательный)
Строка табличного поля. Тип значения строки табличного поля приведен в описаниях расширений табличного поля у соответствующий объектов.
<С подчиненными> (необязательный)
Тип: Булево. Определяет необходимость раскрытия подчиненных узлов. Истина - раскрывать подчиненные узлы, Ложь - не раскрывать подчиненные узлы.
Значение по умолчанию: Ложь
Описание:
Разворачивает узел в указанной строке дерева.
Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
Примечание:
Используется в случае, если с табличным полем связано дерево значений или список справочника в виде дерева.
Пример:
// Разворот текущей строки в дереве:
Строка = ЭлементыФормы.ТабличноеПоле.ТекущаяСтрока;
ЭлементыФормы.ТабличноеПоле.Развернуть(Строка, Истина);
5 GenV
 
07.11.07
14:03
(4) Это вариант! Только придется цикл делать по верхним строкам, что бы все развернуть ...
6 selenat
 
07.11.07
14:23
(5) и на что этот цикл вешать?
7 GenV
 
07.11.07
14:29
(6) А зачем вешать? Заполнил ДЗ по кнопке, в конце прошелся по первому уровню и развернул.
8 selenat
 
07.11.07
14:39
(7) а как пройтись по первому уровню?
Для каждого СтрокаТП из ЭлементыФормы.Бонусы Цикл
выдает ошибку "Итератор для значения не определен".
9 selenat
 
07.11.07
15:01
Так как можно обойти строки ТП?
10 rs
 
07.11.07
15:02
Для каждого СтрокаТП из ЭлементыФормы.Бонусы.Строки Цикл
11 selenat
 
07.11.07
15:07
(10) Такое я тоже пробовал:
Поле объекта не обнаружено (Строки)
Еще варианты?
12 GenV
 
07.11.07
15:08
(11) Немного некоректно тебе сказали. Для каждого СтрокаТП из Бонусы.Строки Цикл, где Бонусы - данные ДЗ из таблицного поля.
13 rs
 
07.11.07
15:09
Для каждого СтрокаТП из Бонусы.Строки Цикл
14 selenat
 
07.11.07
15:11
(12) как перебрать строки дерева (а не табличного поля, с ним связанного) я знаю. Но "Развернуть"  - это ведь метод строки табличного поля...
15 selenat
 
07.11.07
15:16
Для каждого СтрокаТП из Бонусы.Строки Цикл
   ЭлементыФормы.Бонусы.Развернуть(СтрокаТП,Истина);
КонецЦикла;    
Сваливает предприятие без всяких сообщений об ошибках.
16 rs
 
07.11.07
15:16
Для каждого СтрокаТП из Бонусы.Строки Цикл
ЭлементыФормы.ТабличноеПоле.Развернуть(СтрокаТП , Истина);
КонецЦикла;
17 selenat
 
07.11.07
15:18
(16) :)))
18 rs
 
07.11.07
15:22
(17) :) а не получиться сделать корневую строку одну, остальные подчинить ей и развернуть уже эту корневую строку?
19 selenat
 
07.11.07
15:26
(18) некрасиво будет выглядеть. Юзеры этого не поймут.
20 rs
 
07.11.07
15:27
(17) Это рабочий код
   ДеревоМетаданных.Строки.Очистить();
   
   СтрМетаданные = ДеревоМетаданных.Строки.Добавить();
   СтрМетаданные.Метаданные = "Метаданные";
   
   СтрТипОбъекта = СтрМетаданные.Строки.Добавить();
   СтрТипОбъекта.Метаданные = "Справочники";
   
   Для Каждого Стр Из Метаданные.Справочники Цикл
       СтрОбъект = СтрТипОбъекта.Строки.Добавить();
       СтрОбъект.Метаданные = Стр;
   КонецЦикла;    
   ЭлементыФормы.ДеревоМетаданных.Развернуть(СтрМетаданные, Истина);
21 rs
 
07.11.07
15:34
(19) Проверил код из (15) на 8.1.9 работает
22 selenat
 
07.11.07
15:35
(20) Да. А вот так действительно работает. Спасибо большое! Делаю в цикле после создания строки верхнего уровня
ЭлементыФормы.Бонусы.Развернуть(СтрокаВозврат,Истина);
и это срабатывает. В чем разница по сравнению с (15) - неясно. В обоих случаях в Развернуть подставляется строка дерева значений...
23 selenat
 
07.11.07
15:38
(21) интересно. у меня 8.0.18...
24 GenV
 
07.11.07
15:47
(15) +1 именно это я и емил ввиду.

(23) На 8.0.18 тоже работает. А у тебя никаких зацикливаний при выводе строки и т.п. не может быть?
25 rs
 
07.11.07
15:50
(24) +1 проверил (15) еще и на 8.0.18 тоже работает
26 selenat
 
07.11.07
15:52
(24,25) да действительно. Воткнул не туда. Тоже работает. Еще раз спасибо!
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.