Команда для удаление строки

```1c
    ИндексСтроки = Элементы.СписокСловДляКонтроля.ТекущаяСтрока;
    СписокСловДляКонтроля.Удалить(ИндексСтроки);
```

Событие "Выбор" для ТЗ

```1c
    &НаКлиенте
    Процедура СписокСловДляКонтроляВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    // Вставить содержимое обработчика.
    сСписокСловДляКонтроля = СписокСловДляКонтроля[ВыбраннаяСтрока];
    текПеревод = ПолучитьПеревод(сСписокСловДляКонтроля.Слово);

    ПоказатьПредупреждение(,текПеревод);
    КонецПроцедуры

    &НаСервереБезКонтекста
    Функция ПолучитьПеревод(вхСлово)
    Возврат вхСлово.Перевод;

    КонецФункции
```

Казалось бы все просто, но не работает. После удаление строки. Если "выбрать" строку ниже удаленной, выдает данные на строку ниже, хотя отображает верно.

Пример:
Состояние 1 строки
1
2
3
4
5

Удаляем 2
Выбираем 3
На экране видим сообщение по 4 строке.

Что я не так делаю?
---
Попробуйте удалять так:

```1c
    ИД = Элементы.Реквизит1.ТекущаяСтрока;
    Реквизит1.Удалить(Реквизит1.НайтиПоИдентификатору(ИД));
```
---
Обсуждалось уже много раз. Делайте обход выборки с конца. Тогда смещение индекса не будет мешать.
---
Где вы видите выборку? Где вы видите обход выборки?
---
ну надо же было что то написать:)
---
если нету то нужно сделать обход выборки, и с конца, иначе индексы сбиваются.
---
хватит бредить, человек удаляет одну строку, конкретную причекм тут обходы и выборки?
---
А. Извиняюсь. Затупил. Заголовок только прочитал)
---
СписокСловДляКонтроляВыбор

а что это за событие - Событие "Выбор" для ТЗ ?
НачалоВыбора, НачалоВыбораИзСписка, ОбработкаВыбора... а просто Выбор не видно такого

сорри
---
ИМХО можно сделать так:

&НаКлиенте
Процедура СписокСловДляКонтроляВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    сСписокСловДляКонтроля = СписокСловДляКонтроля[Элемент.ТекущаяСтрока];
---
ессно... удаление приводит к смещению индекса, ту столько копий уже поломали на подобных удалениях
я для себя привык нужные позиции выгружать в пустой клон таблицы или списка, пропуская те, которые нужно удалить, потом чищу исходную таблицу и загружаю в нее из клона "отфильтрованные" нужные позиции...
да, может не очень практично, зато без ошибок ))
---
Все логично, удаляете строку, ТЗ изменяется и на место удаленной попадает следующая за ней, а вы получаете строку по индексу до удаления в результате получаете следующую строку относительно той которую хотели.
---
А мне не логично.
Я удаляю первую строку. И вижу на экране что удаляется первая строка.
Теперь делаю выбор первой строки (которая раньше была второй), и получаю индекс строки 1.
Мне не понятно почему 1, когда я вижу на экране что строка первая, а значит индекс строки должен быть 0.
---
здесь (в УФ индекс немного не то), надо работать с Идентификаторами, а они не меняются от удаления строк
т.е. добавили в таблицу 10 строк, потом первые 9 удалили, оставшаяся будет все равно иметь идентификатор 10
---
Это не индекс. "ВыбраннаяСтрока" в обработчике выбора - это идентификатор строки.
---
ага или массив... так то
---
Да. Но можно на это закрыть глаза. Когда массив - ты и так будешь точно знать, что как вариант ожидаешь массив :)
---
Попробуйте удалять так:

```1c
    ИД = Элементы.Реквизит1.ТекущаяСтрока;
    Реквизит1.Удалить(Реквизит1.НайтиПоИдентификатору(ИД));
```
---
Спасибо
---
Всегда пожалуйста, земеля:)
---
Попробую по-другому объяснить.
Есть ТЗ, эта ТЗ размещена на форме в виде Табличного поля.

Добавляю обработку Выбор, в которой хочу получить строку таблицы значений связанную с выбранной строкой Табличного поля.

Для меня казалось логичным, что ТекущаяСтрока в ТабличномПоле и ТЗ одна и та же. Но оказывается нет.

Как добраться до строки в ТЗ?
---
Тебе уже сказали в (12). Через НайтиПоИдентификатору().
Если очень хочется индекс, то его можно получить через РеквизитТЗ.Индекс(РеквизитТЗ.НайтиПоИдентификатору(ВыбраннаяСтрока))
---
да так то можно на все закрыть глаза, просто пользователь выбирает две строки, и тыкает два раза мышью.... и что дальше будет?
---
А разве не успеет перевыбраться одна строка?
---
Гы. Если кликать на подсвеченной строке, то нет :)
Но разве так кто-то делает?
---
поверь делают, вот пример из Акселота

```1c
    &НаКлиенте
    Процедура ТоварыЯчейкаПриИзменении(Элемент)

    текСтрока = Элементы.Товары.ТекущиеДанные;
    Для Каждого текВыдСтрока Из Элементы.Товары.ВыделенныеСтроки Цикл
    Товары.НайтиПоИдентификатору(текВыдСтрока).Ячейка = текСтрока.Ячейка;
    КонецЦикла;

    КонецПроцедуры
```

выделил несколько строк, в одной выбрал нужное значение, во всех выделенных заполнилось тем же значением поле
---
Прикольно. Только суть моего замечания в том, что либо ты изначально реализовываешь обработку множественного выбора (и тогда вопрос не стоит), либо он не предусмотрен. И если забыли его отключить, то упасть по эксепшну в случае если пользователь его ошибочно произвел - абсолютно нормально. В итоге либо будет запрещен множественный выбор, либо реализован (если пользователям это нужно).
---
ну так то да