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