Удаление дублей из таблицы значений

1. applesound 1 13.04.22 11:19 Сейчас в теме
Добрый день.
Как из массива убрать дубли строк ? Дубли строк в данном случае это строки содержащие повторяющиеся значения только в одной колонке. При удалении необходимо оставить первую строку обрабатываемых дублей.

В образце необходимо удалить только жёлтую строку.
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
14. user1203706 13 13.04.22 12:26 Сейчас в теме
(1) удаляйте причину, а не следствие.

Эта ТЗ откуда взялась ? Поди с запроса ? Вот текст запроса и исправляйте.
16. SlavaKron 13.04.22 14:40 Сейчас в теме
КлючиПоискаДублей = "Характеристика";

ТЗ_Ключи = ТЗ.СкопироватьКолонки(КлючиПоискаДублей);
ТЗ_Ключи.Индексы.Добавить(КлючиПоискаДублей);

СтруктураПоиска = Новый Структура(КлючиПоискаДублей);

МассивУдалить = Новый Массив;

Для Каждого Стр Из ТЗ Цикл
	ЗаполнитьЗначенияСвойств(СтруктураПоиска, Стр);
	Если ТЗ_Ключи.НайтиСтроки(СтруктураПоиска).Количество() > 0 Тогда
		МассивУдалить.Добавить(Стр);
	Иначе
		НоваяСтрока = ТЗ_Ключи.Добавить();
		ЗаполнитьЗначенияСвойств(НоваяСтрока, Стр);
	КонецЕсли;
КонецЦикла;

Для Каждого Стр Из МассивУдалить Цикл
	ТЗ.Удалить(Стр);
КонецЦикла;
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. WWWWW 10 13.04.22 11:44 Сейчас в теме
(1)Сортируем по этой колонке и когда делаем обход всех значений, то сравниваем текущее значение с предыдущим.
tetraren; +1 Ответить
2. uk09 13.04.22 11:29 Сейчас в теме
Добрый день!
Дубли убрать из массива или из таблицы значений ?
10. applesound 1 13.04.22 12:15 Сейчас в теме
(2)В моём случае из массива.
3. BackinSoda 13.04.22 11:35 Сейчас в теме
Если такой пример, где "уникальным" считается только колонка характеристик, а не все три, то можно обойти все строки циклом
"для каждого стр из ТЧ цикл" , создать соответствие до цикла , и в цикле проверять на наличие в соответствии такой характеристики, если её нет, то добавить, если есть то пропуск этой строки..
4. uk09 13.04.22 11:40 Сейчас в теме
(3)
если её нет, то добавить, если есть то пропуск этой строки..

Так автору - не добавить надо, а удалить )))
6. BackinSoda 13.04.22 11:54 Сейчас в теме
(4) я подразумевал что будет в итоге НоваяТЧ (копия колонок предыдущей) в которую будут добавляться только уникальные строки.. А отбираться всё это дело будет через соответствие.
Либо создать массивСтрокНаУдаление - в него добавлять строки из таблицы, если прям выпилить нужно из оригинальной тч
7. uk09 13.04.22 12:02 Сейчас в теме
(6)
тогда, согласна. Но для выдачи оптимизированного предложения, хорошо бы, если ТС ответил бы на мой вопрос: из массива удалять или из ТЗ ? Решать задачу перебором очень неоптимально по ресурсам, предполагается же, что количество строк не 5-10...
11. applesound 1 13.04.22 12:20 Сейчас в теме
(6) Особо не принципиально выпилить из текущего массива или создать новый уже без дублей. Конечная цель избавиться от жёлтой строки, потому-что в ней повторилась Характеристика.
13. BackinSoda 13.04.22 12:26 Сейчас в теме
(11) ну идея та же, можно воспользоваться соответствием. Либо если не важна производительность - создать таблицу с одной колонкой и в конце ТЗ.Свернуть("вашаКолонка");
12. applesound 1 13.04.22 12:26 Сейчас в теме
(6) Можно поподробнее, не уловил мысль.
15. BackinSoda 13.04.22 12:29 Сейчас в теме
(12) какой из способов поподробнее ?)
8. belousows 3 13.04.22 12:04 Сейчас в теме
(0)Выбрать различные
из ТЗ
9. gybson 13.04.22 12:11 Сейчас в теме
Создать новую ТЗ и добавлять туда строки предварительно проведя поиск дублей
14. user1203706 13 13.04.22 12:26 Сейчас в теме
(1) удаляйте причину, а не следствие.

Эта ТЗ откуда взялась ? Поди с запроса ? Вот текст запроса и исправляйте.
18. applesound 1 13.04.22 16:12 Сейчас в теме
(14) Хорошая мысль. Спасибо. Так и сделал.
16. SlavaKron 13.04.22 14:40 Сейчас в теме
КлючиПоискаДублей = "Характеристика";

ТЗ_Ключи = ТЗ.СкопироватьКолонки(КлючиПоискаДублей);
ТЗ_Ключи.Индексы.Добавить(КлючиПоискаДублей);

СтруктураПоиска = Новый Структура(КлючиПоискаДублей);

МассивУдалить = Новый Массив;

Для Каждого Стр Из ТЗ Цикл
	ЗаполнитьЗначенияСвойств(СтруктураПоиска, Стр);
	Если ТЗ_Ключи.НайтиСтроки(СтруктураПоиска).Количество() > 0 Тогда
		МассивУдалить.Добавить(Стр);
	Иначе
		НоваяСтрока = ТЗ_Ключи.Добавить();
		ЗаполнитьЗначенияСвойств(НоваяСтрока, Стр);
	КонецЕсли;
КонецЦикла;

Для Каждого Стр Из МассивУдалить Цикл
	ТЗ.Удалить(Стр);
КонецЦикла;
Показать
17. applesound 1 13.04.22 16:10 Сейчас в теме
Оставьте свое сообщение

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