Управление текущей строкой табличной части документа (тонкий клиент)

1. kentavr27 97 04.09.15 18:44 Сейчас в теме
Вроде сабж звучит банально, но как корректно управлять текущей строкой -- всю голову сломал, не вижу решения. Мож. кто занимался плотно этим вопросом.
текущая пратформа 8.3.734, тонкий клиент.
Задача следующая: идет набор документа с помощью сканера. Требуется сделать текущей новую строку или найденную строку в этом документе (когда товар уже был выбран). Делается это довольно просто.
НайденныеСтроки=Объект.Товары.НайтиСтроки(НайденныйТовар);
Если ЗначениеЗаполнено(НайденныеСтроки) Тогда 
	СтрокаДокумента=НайденныеСтроки[НайденныеСтроки.ВГраница()];
Иначе
	СтрокаДокумента=Объект.Товары.Добавить();
	ЗаполнитьЗначенияСвойств(СтрокаДокумента,НайденныйТовар);
КонецЕсли;
ИндексСтроки=Объект.Товары.Индекс(СтрокаДокумента);
СтрокаДокумента.Количество=СтрокаДокумента.Количество+1;
Элементы.Товары.ТекущаяСтрока=ИндексСтроки;
Показать

Но как только пользователь удаляет, например, строки 1-3, начинаются танцы с бубном.
Объект.Товары.Индекс(СтрокаДокумента) получает индекс уже с учетом удаленных строк (т.е. фактически НомерТекущиестроки-1). А Элементы.Товары.ТекущаяСтрока имеют старые индексы. если пставить курсор на первую строку и заглянуть в это свойство, мы увидем значение 3, но не 0. И соответственно строка документа с номером 10 будет иметь индекс 12, но не 9. А метод Объект.Товары.Индекс(СтрокаДокумента) вернет для первой строки инд. 0, для десятой инд.9.
Кто не верит -- вставляем в любой документ код
&НаКлиенте
Процедура ТоварыПриАктивизацииСтроки(Элемент)
	Сообщить(""+Объект.Товары.Индекс(Элемент.ТекущиеДанные)+" - "+Элементы.Товары.ТекущаяСтрока)
КонецПроцедуры
и ходим по табличной части сразу после открытия, потом удаляем несколько первых строк и опять ходим по табличной части. Смотрим на результат в окне сообщений. Потом можем переместить строку(ки) снизу вверх и посмотреть ее индекс.
Так как же все таки получить верный для свойства .ТекущаяСтрока индекс? Без бубна способы есть?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. 1cUserAndrew 63 04.09.15 21:58 Сейчас в теме
Ну почему ж не верит? )) Все правильно.

Выражение
Элементы.Товары.ТекущаяСтрока

возвращает не индекс строки, а идентификатор строки. А он для каждой строки постоянен.

Соответственно, свойству "ТекущаяСтрока" нужно присваивать не индекс, а идентификатор строки, получив его соответствующим методом.
Элементы.Товары.ТекущаяСтрока = СтрокаДокумента.ПолучитьИдентификатор();
MaQo; begemot; orientir1C; deletel; RomanKod; maksa2005; baltbereg; _Rif; ВРедная; wowik; vit00lya; 7OH; AlexF1983; dyuha; kentavr27; +15 Ответить
3. kentavr27 97 05.09.15 13:59 Сейчас в теме
(2) 1cUserAndrew, Да. Конечно же, именно так! Спасибо блин большое :)
7. user_2010 902 17.11.20 10:42 Сейчас в теме
(2) в некоторые табличные части документов добавили реквизит ИдентификаторСтроки.
СтрокаДокумента.ПолучитьИдентификатор(); - возвращает реквизит ИдентификаторСтроки? или что-то другое?

Спасибо!
8. FatPanzer 17.11.20 10:52 Сейчас в теме
(7) Что-то другое. Платформенные методы могут возвращать только платформенные сущности, а не те, которые разработчик добавляет в конфигураторе.
9. user_2010 902 17.11.20 11:25 Сейчас в теме
4. burni4 87 16.03.16 16:48 Сейчас в теме
Может кому и поможет, тк сам ломал голову

Инвентаризация - наша Табличная часть
Все это делаем на клиенте

НСтроки = объект.Инвентаризация.НайтиПоИдентификатору(Элементы.Инвентаризация.ТекущаяСтрока).НомерСтроки; // получаем номер строки
	
		//код который меняет ваши табличные части  
		
		Идентификатор =  Объект.Инвентаризация[НСтроки-1].ПолучитьИдентификатор();
		Элементы.Инвентаризация.ТекущаяСтрока = Идентификатор;
AnPet; ichhh; bnik_n; viplelik; djl; _Rif; Михаська; Detache; a.chechulina; +9 Ответить
5. a.chechulina 30.11.16 18:04 Сейчас в теме
6. Salavat88 10.11.17 13:24 Сейчас в теме
Спасибо! При копировании строки и сортировки табличной части курсор прыгал на первую строку Тоже 2-3 часа ломал голову. Получилось так:

&НаКлиенте
Процедура ДанныеОВремениПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
	
	ТекСтрока = Элементы.ДанныеОВремени.ТекущаяСтрока;
	НСтроки   =  Объект.ДанныеОВремени.НайтиПоИдентификатору(ТекСтрока).НомерСтроки;
	УчетРабочегоВремениРасширенныйКлиент.ТабельДанныеОВремениПередНачаломДобавления(ЭтаФорма, Элемент, Отказ, Копирование, Родитель, Группа);
	
	СортироватьПоВозрастаниюНаСервере();
	
	НовыйИд = Объект.ДанныеОВремени[НСтроки - 1].ПолучитьИдентификатор();
	Элементы.ДанныеОВремени.ТекущаяСтрока = НовыйИд;
	
КонецПроцедуры
Показать
MonteCriZto; cleaner_it; bnik_n; djl; chiki-79; +5 Ответить
Оставьте свое сообщение

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