Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 11:43

Текущий элемент в табличной части

Автор Vdmit, 05 дек 2018, 10:42

0 Пользователей и 1 гость просматривают эту тему.

Vdmit

Подскажите идейку , столкнулся с такой проблемой
в программном коде использую индекс текущего элемента в табличной части формы
Инд=ЭтаФорма.ТекущийЭлемент.ТекущаяСтрока
Все бы ничего , когда добавляются строки в таблицу , все отрабатывает ОК!
А вот стоит удалить, причем из середины таблицы, то индексы удаленных строк пропадают вместе с ними!
Т.е. если удалил 3 строку, индекса 2 уже нет. Идут 0,1,3 и т.д.!
После удаления строки в таблице данные исчезают , отображение изменяется, строки номера строк идут попорядку.
Если переоткрыть документ , все нормализуется по порядку !
Пробовал и так, один фиг !
ЭтаФорма.Элементы.МояТаблица.ТекущаяСтрока

Удаление делаю программно !
ТекСтрока.ЭтаФОрма.Объект.МояТаблица.Получить(Инд);
ТекСтрока.Удалить

oleg-x

А не пробовали не ТекущаяСтрока, а ТекущиеДанные.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

wise

(0)ЖКК
Удаление элементов коллекции в цикле
--------------------------------------------------------------------------------
При необходимости удаления некоторых элементов из какой-либо коллекции элементов, обладающей свойством неявного сдвига элементов при удалении (например, таблица значений, набор записей регистра и т.д.), необходимо использовать следующий алгоритм:
{
КолвоЭлементовКоллекции = Коллекция.Количество();
Для ОбратныйИндекс = 1 По КолвоЭлементовКоллекции Цикл
     ЭлементКоллекции = Коллекция[КолвоЭлементовКоллекции - ОбратныйИндекс];
     Если <Условие> Тогда
          Коллекция.Удалить(ЭлементКоллекции);
     КонецЕсли;
КонецЦикла;

}
Где Коллекция – обрабатываемая коллекция элементов.
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Vdmit

Цитата: oleg-x от 05 дек 2018, 11:43
А не пробовали не ТекущаяСтрока, а ТекущиеДанные.

Попробовал
Сообщить(ЭтаФорма.ТекущийЭлемент.ТекущиеДанные.ПолучитьИдентификатор());
выдает тоже самое
вот эти три записи при событии выделения строки сообщают мне одни и те же числа
Сообщить(ЭтаФорма.Элементы.МояТаблица.ТекущаяСтрока);
Сообщить(ЭтаФорма.ТекущийЭлемент.ТекущаяСтрока);
Сообщить(ЭтаФорма.ТекущийЭлемент.ТекущиеДанные.ПолучитьИдентификатор())
Добавлено: 05 дек 2018, 15:21


Цитата: wise от 05 дек 2018, 11:46
(0)ЖКК
Удаление элементов коллекции в цикле
--------------------------------------------------------------------------------
При необходимости удаления некоторых элементов из какой-либо коллекции элементов, обладающей свойством неявного сдвига элементов при удалении (например, таблица значений, набор записей регистра и т.д.), необходимо использовать следующий алгоритм:
{
КолвоЭлементовКоллекции = Коллекция.Количество();
Для ОбратныйИндекс = 1 По КолвоЭлементовКоллекции Цикл
     ЭлементКоллекции = Коллекция[КолвоЭлементовКоллекции - ОбратныйИндекс];
     Если <Условие> Тогда
          Коллекция.Удалить(ЭлементКоллекции);
     КонецЕсли;
КонецЦикла;

}
Где Коллекция – обрабатываемая коллекция элементов.

Мне не нужно в цикле по условию удалять данные ! Мне нужно после удаления получать индексы строк , а они не изменились после удаления, а просто выпали из списка ! Удалили 4 строку , ее нет в таблице , но и нет индекса 3!
Нужно как то в мозгах ему перечитать индексы строк уже измененной таблицы! После удаления, если закрыть документ и заново открыть, тогда все в норме опять !

wise

(3)
Цитата: Vdmit от 05 дек 2018, 10:42Т.е. если удалил 3 строку, индекса 2 уже нет. Идут 0,1,3 и т.д.!

я ТУТ даже НЕ знаю, как сказать... но индекс [ТРИ] не бывает в массиве с тремя элементами...
максимальный индекс ВСЕГДА (Количество-1)... что-то Вы НЕ договариваете...
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск