Индекс находится за границами массива

1. user1619761 11.03.22 21:20 Сейчас в теме
Доброго времени суток. Подскажите, пожалуйста, куда копать? Индекс = 56, ТаблицаЗначений.Количество() - 1 = 55.
Для Индекс = 0 По ТаблицаЗначений.Количество() - 1 Цикл
        
        Номенклатура = Справочники.Номенклатура.НайтиПоКоду(СокрЛП(ТаблицаЗначений[Индекс].КодНоменклатуры));
        
        Если Номенклатура.Пустая() Тогда
            
            Сообщить("Номенклатура с кодом " + СокрЛП(ТаблицаЗначений[Индекс].КодНоменклатуры) + " отсутствует.", СтатусСообщения.Внимание);
            ТаблицаЗначений.Удалить(Индекс);
            
        КонецЕсли;
        
    КонецЦикла;
Показать
По теме из базы знаний
Найденные решения
4. ishelper 11.03.22 22:16 Сейчас в теме
(3) А еще позиционирование сбивается: удалили вы например, пятую строку, на ее место стала бывшая шестая. То есть, она теперь - №5, а вы на следующем шаге обрабатываете 6-ю, т.е. бывшую №7, а 6-я остается необработанной.

В таких случаях таблицу обрабатывают снизу вверх - от последней строки к первой.
Lapitskiy; user1619761; lefthander; +3 Ответить
2. Akuji 22 11.03.22 21:26 Сейчас в теме
При удалении строк из тз количество строк в ней также уменьшается..
user1619761; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Akuji 22 11.03.22 21:26 Сейчас в теме
При удалении строк из тз количество строк в ней также уменьшается..
user1619761; +1 Ответить 3
3. user1619761 11.03.22 21:30 Сейчас в теме
(2) блин, точно, спасибо!
4. ishelper 11.03.22 22:16 Сейчас в теме
(3) А еще позиционирование сбивается: удалили вы например, пятую строку, на ее место стала бывшая шестая. То есть, она теперь - №5, а вы на следующем шаге обрабатываете 6-ю, т.е. бывшую №7, а 6-я остается необработанной.

В таких случаях таблицу обрабатывают снизу вверх - от последней строки к первой.
Lapitskiy; user1619761; lefthander; +3 Ответить
5. user1619761 12.03.22 01:52 Сейчас в теме
6. Lapitskiy 1062 13.03.22 15:14 Сейчас в теме
Как вариант - сначала обойти таблицу, и собрать индексы строк, которые надо удалить, в массив, а потом по этому массиву уже удалить строки.
Оставьте свое сообщение

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