Алгоритм удаляет не все строки ТЗ, а через одну

1. Mechanik21 24 28.03.23 13:22 Сейчас в теме
Здравствуйте!
Тема избитая, но, видимо, у меня глаз замылился настолько, что ошибки не вижу, поэтому прошу прощения
Может ли такой алгоритм удалять не все строки, а через одну?
Для каждого СтрокаВозврата Из ТабВозврат Цикл
			
ОтгруженныеПартии = ТабВозврат.НайтиСтроки(Новый Структура("Номенклатура, СчетУчета", СтрокаВозврата.Номенклатура, СтрокаВозврата.СчетУчета));

		Для каждого СтрокаОтгрузки Из ОтгруженныеПартии Цикл  	
			ТабВозврат.Удалить(СтрокаОтгрузки);	
		КонецЦикла;	
						
	КонецЦикла;


Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
4. spacecraft 28.03.23 13:42 Сейчас в теме +0.1 $m
(1) пример:
Обход в цикле Для Каждого. Получили первую строку. Удалили первую строку. Вторая строка становится первой, третья второй и т.д. Второй проход цикла получает вторую строку, которая ранее была третьей.
Смысл понятен?
Остальные ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
3. Sashares 34 28.03.23 13:42 Сейчас в теме
(1)
Может ли такой алгоритм удалять не все строки, а через одну?

Конечно. Вы удаляете в том же цикле, поэтому такой результат.
Прикрепленные файлы:
4. spacecraft 28.03.23 13:42 Сейчас в теме +0.1 $m
(1) пример:
Обход в цикле Для Каждого. Получили первую строку. Удалили первую строку. Вторая строка становится первой, третья второй и т.д. Второй проход цикла получает вторую строку, которая ранее была третьей.
Смысл понятен?
2. Naumov 24 28.03.23 13:40 Сейчас в теме
Потому что по науке сперва делают массив удаляемых строк, а потом удаляют по собранному в массиве. Иначе выборка неправильно позиционируется. Точнее позиционируется правильно, просто количество элементов изменилось.

Нужно что-то типа
УдаляемыеСтроки = новый Массив
Для каждого СтрокаОтгрузки Из ОтгруженныеПартии Цикл      
       УдаляемыеСтроки.Добавить(СтрокаОтгрузки);
 КонецЦикла;    
Для каждого Стр из УдаляемыеСтроки цикл
      ТабВозврат.Удалить(Стр);    
КонецЦикла;


а уж если вы хотите очистить ТЧ полностью, то проще использовать метод Очистить() для ТЧ.
5. -AI- 28.03.23 13:59 Сейчас в теме
(2)
Потому что по науке
если нет доп условий
(напр. первый элемент берем, с его контекстом, а дубли удаляем)
лучше с конца обходить...

к тому же, это будет быстрее...

т.к. удаление с хвоста, удаляет уже почищенные хвост, а если начинать с первого элемента,
то удаление первых элементов будет каждый раз сдвигать все последующие, в т.ч. те, которые впоследствии будут удалены.
Оставьте свое сообщение

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