|
Программное удаление строк с табличной части, помогите правильно удалить | ☑ | ||
---|---|---|---|---|
0
location
naïve
17.11.16
✎
12:52
|
Есть табличная часть с количеством допустим 10. Выбираем первые 2 строки из списка жмем кнопочку, и если все условия соблюдены, то данные строки удаляются.
Но происходит следующие: При удалении первой строки, вторая строка получается первой. и при следующем обходе уже выбирается 3 строка которая была изначально до удаления. Как правильно удалять строки со смещением? |
|||
1
location
naïve
17.11.16
✎
12:54
|
получается вторая строка остается не удаленной, так как номер строки у нее изменился. и на нее не попало.
|
|||
2
DrShad
17.11.16
✎
12:54
|
удаляй прямо строки, в чем проблема? а не по индексу или идентификатору
собери сначала массив удаляемых строк и удаляй обходом массива |
|||
3
rbcvg
17.11.16
✎
12:55
|
так ты по номеру строки удаляешь или по условию?
|
|||
4
location
naïve
17.11.16
✎
12:56
|
Для каждого Строка ИЗ Таблица
Если УсловияСоблюдены() Тогда Таблица.Удалить(Строка) Конецесли; Конеццикла |
|||
5
olegves
17.11.16
✎
12:57
|
+(2) или обходи и удаляй таблицу с конца
|
|||
6
Fish
17.11.16
✎
12:58
|
(4) Делай обход таблицы с конца.
|
|||
7
polosov
17.11.16
✎
12:58
|
(0) МассивДляУдаления = Новый Массив;
Для Каждого СтрокТЧ ИЗ Объект.ТвояТЧ Цикл Если НадоУдалить Тогда МассивДляУдаления.Добавить(СтрокаТЧ); КонецЕсли; КонецЦикла; Для Каждого ЭлементМассива ИЗ МассивДляУдаления Цикл Объект.ТвояТЧ.Удалить(ЭлементМассива); КонецЦикла; Как-то так. |
|||
8
location
naïve
17.11.16
✎
12:59
|
(6) как сделать обход с конца?
|
|||
9
Fish
17.11.16
✎
13:04
|
(8) Через цикл Пока по индексу строки.
|
|||
10
DrShad
17.11.16
✎
13:04
|
(4) у тебя же выборка нарушается - классическая ошибка, за которую надо увольнять
|
|||
11
youalex
17.11.16
✎
13:07
|
(8) Для Сч = -ТЗ.Количество()+ 1 ПО 0 Цикл
ТЗ.Удалить(-Сч); |
|||
12
EvgeniuXP
17.11.16
✎
13:08
|
для нс = -тз.кол-во() по -1 цикл
|
|||
13
olegves
17.11.16
✎
13:52
|
(11) за это: ТЗ.Количество()
в цикле тоже надо увольнять |
|||
14
youalex
17.11.16
✎
17:24
|
(13) думаешь оно каждый раз считается?
|
|||
15
НастоящееИмя
17.11.16
✎
17:28
|
(14) А почему нет-то?
|
|||
16
youalex
17.11.16
✎
17:31
|
(15) потому что - число итераций определяется один раз, при инициализации цикла.
|
|||
17
Мимохожий Однако
17.11.16
✎
17:31
|
Я бы выбрал (2) или аналогичное (7)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |