Удалить строки с нулевым количеством без пропусков

Учебные задачи

После удаления индексы сдвигаются. Обход с конца сохраняет корректность обработки соседних строк.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Таблица создаётся в памяти сервера.

  2. Две нулевые строки расположены подряд, чтобы обнаружить пропуск при неправильном обходе.

Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("Количество");
Таблица.Добавить().Количество = 0;
Таблица.Добавить().Количество = 0;
Таблица.Добавить().Количество = 5;
Индекс = Таблица.Количество() - 1;
Пока Индекс >= 0 Цикл
    СтрокаТаблицы = Таблица.Получить(Индекс);
    Если СтрокаТаблицы.Количество = 0 Тогда
        Таблица.Удалить(Индекс);
    КонецЕсли;
    Индекс = Индекс - 1;
КонецЦикла;
Сообщить(Таблица.Количество());
Сообщить(Таблица.Итог("Количество"));

Разбор по шагам

  1. Начинаем с последнего индекса.

  2. После удаления текущей строки необработанные строки слева сохраняют индексы.

  3. Уменьшаем индекс независимо от удаления.

Как проверить результат

  1. Остаётся одна строка, итог 5.

  2. Уберите все Добавить: пустая таблица должна обработаться без ошибки.

Ожидаемый результат

Удалены обе нулевые строки, оставлена строка с количеством 5.

На что обратить внимание

  1. Не удаляйте строки индексным обходом вперёд без поправки индекса.

  2. Правило нулевого количества здесь учебное; в реальных данных оно может быть другим.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.