Удаление строки из ТЧ

1. Farhat95 18.10.23 13:40 Сейчас в теме
Добрый день! Написал простой код но что то не простое происходит )


Табл = Объект.Запасы;
Таблица = Табл.Выгрузить();

Для Каждого Строка Из Таблица Цикл
Если Строка.Количество<>Строка.КоличествоДоИзменения Тогда
Продолжить
Иначе

Таблица.Удалить(Строка);
КонецЕсли;
КонецЦикла;
Табл.Очистить();
Табл.Загрузить(Таблица);

Приходится нажимать на кнопку пару раз чтобы все очистилось. При нажатии удаляет все верно но не все. В чем может быть дело ?
По теме из базы знаний
Найденные решения
2. platonov.e 160 18.10.23 13:48 Сейчас в теме
Вы идете по таблице, и тут же удаляете строки из нее.
Складывайте строки, которые нужно удалить в отдельный массив, и после выхода из цикла, удаляйте строки из таблице, на основе массива.
Farhat95; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Vinzor 107 18.10.23 17:57 Сейчас в теме
(1) Есть более изящные решения.

Раз.
Для сч = -ТЗ.Количество() + 1 По 0 Цикл
Если ТЗ[-сч].Номер % 2 = 0 Тогда // ваше условие для удаления
ТЗ.Удалить(-сч);
КонецЕсли;
КонецЦикла;

Два. (мой любимый)
сч = ТЗ.Количество();
Пока сч>0 Цикл
сч = сч - 1;
Если ТЗ[сч].Номер % 2 = 0 Тогда // ваше условие для удаления
ТЗ.Удалить(сч);
КонецЕсли;
КонецЦикла;

Три.
сч = 0;
Пока сч<ТЗ.Количество() Цикл
Если ТЗ[сч].Номер %2 = 0 Тогда // ваше условие для удаления
ТЗ.Удалить(сч);
сч = сч - 1;
КонецЕсли;
сч = сч + 1;
КонецЦикла;


Во всех этих решениях самое главное, как видно, проверка и удаление происходит с конца коллекции.
Хватит? :)
karamazoff; +1 Ответить
5. Farhat95 19.10.23 13:39 Сейчас в теме
(4) Хватит, хватит ) Но я уже массивом удалил. Спасибо тебе!
2. platonov.e 160 18.10.23 13:48 Сейчас в теме
Вы идете по таблице, и тут же удаляете строки из нее.
Складывайте строки, которые нужно удалить в отдельный массив, и после выхода из цикла, удаляйте строки из таблице, на основе массива.
Farhat95; +1 Ответить
3. Farhat95 18.10.23 14:53 Сейчас в теме
Оставьте свое сообщение

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