Имя: Пароль:
1C
1С v8
ДеревоЗначений
,
0 YHVVH
 
11.08.11
15:41
Вопросик, как по номеру строки получить строку в деревезначений?
1 butterbean
 
11.08.11
15:42
у строк дерева нет номеров
2 PVV65
 
11.08.11
15:43
А что такое "номер строки"?
3 YHVVH
 
11.08.11
15:45
(1) я понимаю что нет, но в данном случае он есть
если в управляемой форме разместить деревозначений

Выбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
4 YHVVH
 
11.08.11
15:47
ВыбранаяСтрока и есть номер строки развернутого дерева
5 Stepa86
 
11.08.11
15:48
Это идентификатор, смотри НайтиПоИдентификатору(<Идентификатор>)
6 Ненавижу 1С
 
гуру
11.08.11
15:52
оппа

Функция ПолучитьСтрокуПоНомеру(Коллекция,Номер,ТекНомер)
   Для каждого Стр Из Коллекция Цикл
       Если Номер=ТекНомер Тогда
           Возврат Стр;
       КонецЕсли;    
       ТекНомер = ТекНомер+1;
       Значение = ПолучитьСтрокуПоНомеру(Стр.Строки,Номер,ТекНомер);
       Если Значение=Неопределено Тогда
           Продолжить;        
       КонецЕсли;
       Возврат Значение;
   КонецЦикла;
   Возврат Неопределено;
КонецФункции


Результат = ПолучитьСтрокуПоНомеру(Дерево,Номер,1);
7 YHVVH
 
11.08.11
16:00
(6) спасибо, помогло
8 Stepa86
 
11.08.11
16:01
(6) интерактивное изменение состава строк дерева не накроет твой алгоритм?
9 YHVVH
 
11.08.11
16:47
че за фигня

после

Дерево    = РеквизитФормыВЗначение("Дерево");
...
ЗначениеВРеквизитФормы(Дерево,"Дерево");

сбивается идентификатор строки он увеличивается для всех строк
на количество строк в дереве.
10 Ненавижу 1С
 
гуру
11.08.11
16:54
(8) а кому ща легко?
11 Stepa86
 
11.08.11
16:55
(9) ты чего хочешь то???
12 YHVVH
 
11.08.11
16:57
ко клику на дереве значений срабатывает
Выбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)

после того как на сервере я сделаю

Дерево    = РеквизитФормыВЗначение("Дерево");
ЗначениеВРеквизитФормы(Дерево,"Дерево");

ВыбранаяСтрока не соответствует выбранной
13 YHVVH
 
11.08.11
17:02
&НаКлиенте
Процедура НастройкаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
сообщить(ВыбраннаяСтрока);
Запуск();
Конецпроцедуры

&НаСервере
Процедура  Запуск();
 Дерево    = РеквизитФормыВЗначение("Дерево");
 ЗначениеВРеквизитФормы(Дерево,"Дерево");
Конецпроцедуры
14 YHVVH
 
11.08.11
17:03
Дерево - дерево значений на управляемой форме

по клику на нем срабатывает процедура НастройкаВыбор.
и каждый раз выбраннаястрока увеличивается на размер дерева.
15 Stepa86
 
11.08.11
17:09
я вот так изврашался



Процедура УстановитьТекущуюСтроку( пДерево, пТекСтрокаДерева )
   
   стек = Новый Массив;
   
   ЗаполнитьСтекАдресовКТекущемуЭлементу( стек, пТекСтрокаДерева, пДерево );
   
   текСтрока = ДеревоОбъектов;
   
   Для Каждого цИндекс Из стек Цикл
       
       текСтрока = текСтрока.ПолучитьЭлементы()[цИндекс];
       
   КонецЦикла;
   
   Элементы.ДеревоОбъектов.ТекущаяСтрока = текСтрока.ПолучитьИдентификатор();
   
КонецПроцедуры


Процедура ЗаполнитьСтекАдресовКТекущемуЭлементу( пСтек, текСтрока, Дерево )
   
   Если текСтрока = Неопределено Тогда
       Возврат;
   КонецЕсли;
   
   текРодитель = текСтрока.Родитель;
   
   Если текРодитель = Неопределено Тогда
       
       текРодитель = Дерево;
       
   КонецЕсли;
   
   пСтек.Вставить( 0 , текРодитель.Строки.Индекс( текСтрока ) );
   
   ЗаполнитьСтекАдресовКТекущемуЭлементу( пСтек, текСтрока.Родитель, Дерево );
   
КонецПроцедуры


16 YHVVH
 
11.08.11
22:11
(15) спасибо за код
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан