Как правильно удалить значения из объекта

1. Alex562035 16.08.21 19:39 Сейчас в теме
Всем привет, подскажите как правильно мне удалить значения из моего объекта. У меня есть данные нескольких Поставщиков которые я занес в ПлохойМассив за счет него я нахожу те Объекты, которые мне нужно удалить при этом название МенеджерПоСнабжению должен совпадать с моими удаляемыми Объектами.



Я все это реализовал, но проблема в том что у меня происходит смещение при удалении индекса, если удаляемых объектов будет несколько.

Вот как я это делаю

УдалениеПоставщиков = Новый Массив;
	// находим текущего менеджера с удаляемыми перебирая поставщиков из плохого массива
	Если ПлохойМассив.Количество() <> 0 Тогда
		Для Пт = 0 По Объект.Поставщики.Количество()-1 Цикл
			Для Пм = 0 По ПлохойМассив.Количество()-1 Цикл
				Если Объект.Поставщики[Пт].МенеджерПоСнабжению.Наименование = Элементы.ГруппаСтраницы.ТекущаяСтраница.Заголовок И Объект.Поставщики[Пт].Поставщик.Наименование = ПлохойМассив[Пм] Тогда
					УдалениеПоставщиков.Добавить(Пт);
				КонецЕсли;
			КонецЦикла;
		КонецЦикла;
		//удаляем объекты с нужными индексами
		Для Л = 0 По УдалениеПоставщиков.Количество()-1 Цикл
			Объект.Поставщики.Удалить(УдалениеПоставщиков[Л]);
		КонецЦикла;
		
	КонецЕсли;

Показать


Индексация моя нарушится при этом цикле во время удаления второго элемента, за счет чего в дальнейшем удаляются не те объекты. Возможно можно как-то подругому поступить в моем решении.

Для Л = 0 По УдалениеПоставщиков.Количество()-1 Цикл
	Объект.Поставщики.Удалить(УдалениеПоставщиков[Л]);
КонецЦикла;
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alxarz 32 16.08.21 19:59 Сейчас в теме
(1) циклы нужно в обратную сторону крутить - с большего к меньшему
3. Alex562035 16.08.21 20:01 Сейчас в теме
(2) блин точно что-то я тупанул в этом случае
4. Ivanov_OM 38 17.08.21 08:08 Сейчас в теме
Я так понимаю, что Объект.Поставщики это ТаблицаЗначений или ТабличнаяЧасть.
Тогда надо вот так:
Если ПлохойМассив.Количество() <> 0 Тогда
	Для Пм = 0 По ПлохойМассив.Количество()-1 Цикл
		Отбор = Новый Структура("Поставщик",ПлохойМассив[Пм]);
		УдалениеПоставщиков = Объект.Поставщики.НайтиСтроки(Отбор);
		Для Каждого СтрокаПоставщика из УдалениеПоставщиков Цикл
			Если СтрокаПоставщика.МенеджерПоСнабжению.Наименование = Элементы.ГруппаСтраницы.ТекущаяСтраница.Заголовок И СтрокаПоставщика.Поставщик.Наименование = ПлохойМассив[Пм] Тогда
				Объект.Поставщики.Удалить(СтрокаПоставщика);
			КонецЕсли;		
		КонецЦикла;         
	КонецЦикла;
КонецЕсли;
Показать
Оставьте свое сообщение

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