Имя: Пароль:
1C
1С v8
Как убрать автоматический переход фокуса при изменении данных в строке
0 HomoAlbus
 
15.06.15
16:40
Всем привет. УФ, имеется ТаблицаФормы, в которую программно подгружаются данные. У строк есть некоторый ИД, по которому после загрузки данных я определяю на какой строке находился пользователь до загрузки.
Делаю это так:
ТекущийИД = ЭтаФорма.Элементы.ДанныеСписка.ТекущиеДанные.ИдентификаторЗаписи;    
        ОбновитьДанныеСпискаНаСервере();
        МассивПоИД = ДанныеСписка.НайтиСтроки(Новый Структура("ИдентификаторЗаписи", ТекущийИД));
        Если МассивПоИД.Количество() > 0 Тогда
            ЭтаФорма.Элементы.ДанныеСписка.ТекущаяСтрока = МассивПоИД[0].ПолучитьИдентификатор();
        КонецЕсли;

Нужная мне строка становится выделенной, однако, кроме нее автоматически выделяется и первая строка в списке, получается что выделено как бы 2 строки сразу, несмотря на то, что для ТаблицыФормы отключен множественный выбор. Собственно вопрос, как избавиться от автоматического перехода фокуса на первую строку при обновлении таблицы? Мне необходимо что бы была выделена только та строка, на которой был фокус пользователя.

Гран мерси, заранее.
1 Aprobator
 
15.06.15
16:48
Когда народ научится ИТС читать? Лови - восстановление позиции после сортировки. Суть та же самая. За добавление реквизита для поиска строки - по ушам!


СтрокаКоллекции = Объект.Товары.НайтиПоИдентификатору(Элементы.Товары.ТекущаяСтрока);
ИндексСтрокиКоллекции = Объект.Товары.Индекс(СтрокаКоллекции);

ТЗ = Объект.Товары.Выгрузить();
СтрокаВыгруженнойТаблицы = ТЗ.Получить(ИндексСтрокиКоллекции);

ТЗ.Сортировать("Цена");

ИндексСтрокиПослеСортировки = ТЗ.Индекс(СтрокаВыгруженнойТаблицы);

Объект.Товары.Загрузить(ТЗ);

СтрокаКоллекции = Объект.Товары.Получить(ИндексСтрокиПослеСортировки);
Элементы.Товары.ТекущаяСтрока = СтрокаКоллекции.ПолучитьИдентификатор();
2 Aprobator
 
15.06.15
16:56
Взято с ИТС - раздел "Книги и периодика" - Разработка управляемого интерфейса - Программирование форм - Работа с таблицей на форме
3 HomoAlbus
 
15.06.15
17:40
(2) Спасибо за участие. Но во-первых, ИдентификаторЗаписи - это значение некоторого идентификатора из внешней системы, который хранится в регистре, данные из которого я загружаю в ТЧ. Так что я его не для позиционирования на строке добавлял :).

В остальном код аналогичен моему, если я иначе сохраню ИД строки, при окончании редактирования фокус в списке, все равно переместится на первый элемент, так что проблему это не решит.
4 HomoAlbus
 
16.06.15
10:15
Все еще актуально :)
5 Aprobator
 
16.06.15
12:04
А еще одна строка точно подсвечивается именно выделением, а не, к примеру, условным оформлением?
6 Aprobator
 
16.06.15
12:07
кстати, о птичках - одна строка светится потому что выделена, а вторая потому что курсор на ней. Тоже вариант.
В любом случае через отладчик ЭлементыФормы.Товары.ВыделенныеСтроки - можно посмотреть реально выделенные строки.
7 Aprobator
 
16.06.15
12:10
Ну и, соответственно, удалить из ВыделенныеСтроки, если их там вдруг оказалось несколько идентификаторы строк, которые не соответствуют текущей строке.
8 HomoAlbus
 
16.06.15
14:49
(7) Смотрю в отладчике, в массиве ВыделенныеСтроки - только одна моя строка, но, что интересно, ЭтаФорма.Элементы.ДанныеСписка.ТекущаяСтрока - попрежнему Неопределено, даже после того, как я ей идентификатор строки присвоил. Очень странно.
9 Aprobator
 
16.06.15
18:05
ЭтаФорма - зачем тут надо?
10 Aprobator
 
16.06.15
18:12
И, сдаётся мне, что какая то засада в ОбновитьДанныеСпискаНаСервере. Другого в голову не приходит. Такое ощущение, что Данные и Элементы.Данные - разные вещи.