![]() |
![]() |
![]() |
|
Спозиционироваться на строке дерева значений | ☑ | ||
---|---|---|---|---|
0
pavig
17.02.11
✎
17:07
|
Выполняется код:
ТекСтрока = ПолучитьВеткуПоПозицииСтроки(текДЗ, мПозицияСтроки); // функция возвращает строку дерева значений по параметру Если ТекСтрокаДЗ <> Неопределено Тогда текТП.ТекущаяСтрока = ТекСтрокаДЗ; КонецЕсли; текТП - это текущее табличное поле формы, с установленным признаком ДЕРЕВО; текДЗ - это данные текущего табличного поля, тип - дерево значений; смотрю через отладчик и вижу, что текТП.ТекущаяСтрока как было Неопределено так им же и остается, хотя ТекСтрокаДЗ имеет значение Строки дерева значений (на которую мне и нужно спозиционироваться) Другими словами, текущая строка не устанавливается. Куда рыть что курить и как быть подскажите плиз кто сталкивался :-) |
|||
1
Mort
17.02.11
✎
17:09
|
ТекСтрока <> ТекСтрокаДЗ ?
|
|||
2
pavig
17.02.11
✎
17:15
|
(1) моя очепятка
ТекСтрока = ТекСтрокаДЗ |
|||
3
pavig
17.02.11
✎
17:35
|
апну немного что ли
|
|||
4
pavig
17.02.11
✎
18:01
|
вввввееееерх
|
|||
5
pavig
18.02.11
✎
09:46
|
еще раз вверх...
|
|||
6
Axel2009
18.02.11
✎
09:48
|
платформа то хоть какая?
|
|||
7
pavig
18.02.11
✎
09:50
|
1с 8.1
|
|||
8
pavig
18.02.11
✎
09:50
|
(7)
8.1.15.14 |
|||
9
Axel2009
18.02.11
✎
09:55
|
стр1_1 = ДЗ.Строки.Добавить();
стр1_1.колонка1 = "кол1_1"; стр1_1.колонка2 = "кол2_1"; стр1_2 = ДЗ.Строки.Добавить(); стр1_2.колонка1 = "кол1_2"; стр1_2.колонка2 = "кол2_2"; стр1_3 = ДЗ.Строки.Добавить(); стр1_3.колонка1 = "кол1_3"; стр1_3.колонка2 = "кол2_3"; стр1_1_1 = стр1_1.Строки.Добавить(); стр1_1_1.колонка1 = "кол1_1_1"; стр1_1_1.колонка2 = "кол2_1_1"; ЭлементыФормы.ДЗ.ТекущаяСтрока = стр1_1_1; такой код у меня работает нормально. значит не строку дерева передаете. показывайте свою нетленную функцию |
|||
10
pavig
18.02.11
✎
10:00
|
(9)
Функция ПолучитьВеткуПоПозицииСтроки(Дерево, НомерСтроки) Для Каждого Ветка Из Дерево.Строки Цикл Если Ветка.НомерСтрокиДЗ = НомерСтроки Тогда Возврат Ветка; Иначе НайденнаяСтрока = ПолучитьВеткуПоПозицииСтроки(Ветка, НомерСтроки); Если НайденнаяСтрока <> Неопределено Тогда Возврат НайденнаяСтрока; КонецЕсли; КонецЕсли; КонецЦикла; Возврат Неопределено; КонецФункции |
|||
11
Axel2009
18.02.11
✎
10:02
|
а если встать на какую либо строку самому в дереве, а потом запустить код какойнить и посмотреть что хранится в элементыформы.текдз.текущаястрока?
|
|||
12
Mitriy
18.02.11
✎
10:03
|
(10) а не проще Дерево.Строки.Найти??? или НайтиСтроки...
|
|||
13
kosts
18.02.11
✎
10:05
|
У меня работает (8.2)
Процедура Кнопка2Нажатие(Элемент) Строки = Дерево.Строки.НайтиСтроки(Новый Структура("Колонка1",1), Истина); Если Строки.Количество() > 0 Тогда ЭлементыФормы.Дерево.ТекущаяСтрока = Строки[0]; Сообщить("Позиционирование на строке", СтатусСообщения.Информация); КонецЕсли; КонецПроцедуры т = Дерево.Строки.Добавить(); т.Строки.Добавить(); т.Строки.Добавить(); т.Строки.Добавить(); т = Дерево.Строки.Добавить(); т.Строки.Добавить(); т1 = т.Строки.Добавить(); т1.Колонка1 = 1; т.Строки.Добавить(); т = Дерево.Строки.Добавить(); т.Строки.Добавить(); т.Строки.Добавить(); т.Строки.Добавить(); |
|||
14
pavig
18.02.11
✎
10:05
|
(11)
допустим при редактировании ДЗ.ТекущаяСтрока имеет значение СтрокаДереваЗначений, тип - СтрокаДереваЗначений, что совпадает с возвращаемым функцией значением... |
|||
15
Mitriy
18.02.11
✎
10:07
|
(14) может у тебя разные деревья?
|
|||
16
Axel2009
18.02.11
✎
10:08
|
скорее всего то что хранится в ТекДЗ не совпадает с данными в ТекТП..
так не работает: стр1_1 = ДЗ.Строки.Добавить(); стр1_1.колонка1 = "кол1_1"; стр1_1.колонка2 = "кол2_1"; стр1_2 = ДЗ.Строки.Добавить(); стр1_2.колонка1 = "кол1_2"; стр1_2.колонка2 = "кол2_2"; стр1_3 = ДЗ.Строки.Добавить(); стр1_3.колонка1 = "кол1_3"; стр1_3.колонка2 = "кол2_3"; стр1_1_1 = стр1_1.Строки.Добавить(); стр1_1_1.колонка1 = "кол1_1_1"; стр1_1_1.колонка2 = "кол2_1_1"; стр1_1 = ДЗ1.Строки.Добавить(); стр1_1.колонка1 = "кол1_1"; стр1_1.колонка2 = "кол2_1"; стр1_2 = ДЗ1.Строки.Добавить(); стр1_2.колонка1 = "кол1_2"; стр1_2.колонка2 = "кол2_2"; стр1_3 = ДЗ1.Строки.Добавить(); стр1_3.колонка1 = "кол1_3"; стр1_3.колонка2 = "кол2_3"; стр1_1_1 = стр1_1.Строки.Добавить(); стр1_1_1.колонка1 = "кол1_1_1"; стр1_1_1.колонка2 = "кол2_1_1"; ЭлементыФормы.ДЗ.ТекущаяСтрока = стр1_3; |
|||
17
pavig
18.02.11
✎
10:15
|
(12)
проще конечно, но результат не меняется. (15), (16) в отладчике забиваю: текТП.Значение = текДЗ, выдает Истина. |
|||
18
Axel2009
18.02.11
✎
10:16
|
текТП.текущаястрока = текТП.Значение.Строки[0];
работает? |
|||
19
pavig
18.02.11
✎
10:21
|
(18) не работает(((
|
|||
20
pavig
18.02.11
✎
10:22
|
значит где-то еще идет перестроение дерева.
|
|||
21
pavig
18.02.11
✎
10:22
|
щас поищу
|
|||
22
Axel2009
18.02.11
✎
10:26
|
(20) перестроение дерева, событие дерева. вообще сбросить текущую строку в неопределено обычным присваиванием не сделать. это только при формировании строк заново.
|
|||
23
pavig
18.02.11
✎
12:10
|
Событие ПослеУдаления, устанавливаю текущую строку указанным способом -- все работает;
Событие ПриОкончанииРедактирования устанавливаю текущую строку -- не работает. печально. |
|||
24
kosts
18.02.11
✎
12:18
|
(23) Чиорт. простите.
|
|||
25
Axel2009
18.02.11
✎
12:19
|
а что нужно встать на строку, отличную от текущей редактируемой?
|
|||
26
pavig
18.02.11
✎
12:26
|
(25)
суть: есть Дерево в табличном поле формы, у которого есть виртуальные группировки, которые содержат общие для подчиненных данные. После редактирования строки интерактивно происходит перестроение дерева, и текущая строка уходит в Неопределено; проблема такова: нужно чтобы после редактирования и перестроения дерева текущая строка возвращалась в предыдущее (до редактирования) положение. При удалении строки прием полностью прокатывает; при редактировании строки -- прием не прокатывает. |
|||
27
pavig
18.02.11
✎
12:27
|
(24) весьма неуместно
|
|||
28
pavig
18.02.11
✎
12:32
|
текТП.ТекущаяСтрока = ТекСтрокаДЗ;
если код выполняется после удаления строки, то сразу после него возникает событие ПриВыводеСтроки, и для текТП ТекущаяСтрока встает на текСтрокаДЗ. если же код выполняется после редактирования строки (ПриОкончанииРедактирования) то ничего не происходит вообще, ТекущаяСтрока как была Неопределено так ей же и остается. |
|||
29
kosts
18.02.11
✎
12:33
|
(26) Программно удали строку и вставь новую в нужное место.
(27) Беда пришла не с той стороны где ее ждали... |
|||
30
pavig
18.02.11
✎
12:35
|
(29)
"Беда пришла не с той стороны где ее ждали..." в общем-то да |
|||
31
Axel2009
18.02.11
✎
12:50
|
(30) подключайте обработчик на 1мс, в котором уже устанавливайте строку на какую нужно..
|
|||
32
pavig
18.02.11
✎
13:44
|
(31) очень даже прокатило
спасибо за помощь!!! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |