Позиционирование в дереве значений

1. Letos 267 13.10.21 01:38 Сейчас в теме
Есть объект дерево. В какой-то момент при изменении ячейки я пересчитываю всё дерево.
используя конструкцию

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


В результате дерево сворачивается. После чего я разворачиваю дерево обходя ветки используя

Дерево.Развернуть

Далее я хочу установить курсор на той строчке, где я делал редактирование. Использую для этого оброщение к БСП

ОбщегоНазначенияКлиентСервер.ПолучитьИдентификаторСтрокиДереваПоЗначениюПоля


Нужная мне строчка Становится Активной. Но курсор находится на первой строке Дерева. Получается, как бы 2 активные строки с ориентированием на первую строчку. Если у меня много строчек и есть прокрутка. То после пересчета, выделенная строчка улетает вниз, а экран переходит на первую строку. Что делаю не так?

Активную строку объявляю как:
//Вначале делал только эту строчку
         Элементы.Дерево.ТекущаяСтрока = ИдентификаторСтроки;
//Когда не получилось как я хотел, добавил эту. Н овсе равно прыгает наверх.	
	ЭтаФорма.ТекущийЭлемент = Элементы.Дерево;
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ISP 13.10.21 07:11 Сейчас в теме
ммм, может попробовать устанавливать через ПодключитьОбработчикОжидания. Сталкивался с такой не поняткой.
Или заполнить выделенную строку, хотя вряд ли
3. Evg-Lylyk 4614 13.10.21 09:36 Сейчас в теме
(1) Есть такая тема что после обновления дерева (при переполучении с сервера). Изменяются идентификаторы, нужно у строки завести свой идентификатор например (GUID), потом по нему найти нужную строку и активизировать.
Или делать все на клиенте или без обновления всего дерева, когда оно большое можно наблюдать замедление работы
4. Letos 267 13.10.21 09:46 Сейчас в теме
(3) Все так. По этому я и использую

[ОбщегоНазначенияКлиентСервер.ПолучитьИдентификаторСтрокиДереваПоЗначениюПоля]

Он находит новый идентификаторстроки. После чего по нему я и активирую ТекущуюСтроку. И нужная строка подсвечивается как активная. Но курсор остается на первой строке.



По факту у меня получается 2 активные строки, с позиционированием экрана и курсора на первой строке.
5. kuzev 47 13.10.21 09:48 Сейчас в теме
(4) В качестве текущего элемента нужно указать имя поля дерева, а не дерево.
Измените эту строчку
ЭтаФорма.ТекущийЭлемент = Элементы.Дерево;
6. Letos 267 13.10.21 09:51 Сейчас в теме
(5) Я понял, что это. Но не понял, какой она должна быть. Не могли бы вы уточнить? Спасибо.
8. kuzev 47 13.10.21 09:56 Сейчас в теме
(6) Давайте по-другому. Поменяйте местами строки. Напишите так:
ЭтаФорма.ТекущийЭлемент = Элементы.Дерево;
Элементы.Дерево.ТекущаяСтрока = ИдентификаторСтроки;
10. Letos 267 13.10.21 10:37 Сейчас в теме
(8) так я тоже пробовал - не работает. Все тоже самое.

Так же обратил внимание, что в отладчике если делаю так:

		Элементы.Дерево.ТекущаяСтрока         = ИдентификаторСтроки;
		ЭтаФорма.ТекущийЭлемент               = Элементы.Дерево;
		ЭтаФорма.ТекущийЭлемент.ТекущаяСтрока = ИдентификаторСтроки;


То ТекущийЭлемент.ТекущаяСтрока не присваивается новый индекс и он остается старым - что равно Индексу первой строки.
11. kuzev 47 13.10.21 10:50 Сейчас в теме
(10) Напишите так:
ЭтаФорма.ТекущийЭлемент = Элементы.Дерево;
Элементы.Дерево.ТекущаяСтрока = 2;

Все так же активна первая строка?
7. Evg-Lylyk 4614 13.10.21 09:55 Сейчас в теме
(4) Проверить под отладкой
У меня в проектах есть подобное. Устанавливаю ТекущуюСтрока и все, важно здесь передается идентификатор
Похоже что при установке идентификатор неверный, (может получаешь старый идентификатор)
Ну и как вариант попробовать ПодключитьОбработчикОжидания 0.1
Если смотреть рисунок сумму можно посчитать на клиенте. Скинь обработку пример или больше кода
9. Evg-Lylyk 4614 13.10.21 09:57 Сейчас в теме
5+ Можно просто ТекущийЭлемент
Я тут подумал может проблема связана с множественным выделением. Установить одиночное выделение ну или наверное задавать не текущую строку, а Выделенные строки
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот