Удаляет дубли строк таблицы по указанным колонкам, если не указано, то ищет дубли во всем.
Функция УдалитьДублиСтрокТаблицыЗначений(Таблица, Колонки = "") Экспорт
Если ПустаяСтрока(Колонки) Тогда
// Просто свернем таблицу по всем колонкам
Для каждого Колонка Из Таблица.Колонки Цикл
Колонки = Колонки + ?(ПустаяСтрока(Колонки), "", ",") + Колонка.Имя;
КонецЦикла;
ТаблицаРезультат = Таблица.Скопировать();
ТаблицаРезультат.Свернуть(Колонки);
Иначе
КолонкиЗапроса = "ТЗ." + СтрЗаменить(Колонки, ",", ",ТЗ.");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| " + КолонкиЗапроса + "
|ПОМЕСТИТЬ ВТ_ТЗ
|ИЗ
| &ТЗ КАК ТЗ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| " + СтрЗаменить(КолонкиЗапроса, "ТЗ.", "ВТ_ТЗ.") + "
|ИЗ
| ВТ_ТЗ КАК ВТ_ТЗ
|";
Запрос.УстановитьПараметр("ТЗ", Таблица);
РезультатЗапроса = Запрос.Выполнить();
ТаблицаЗапроса = РезультатЗапроса.Выгрузить();
ТаблицаРезультат = Таблица.СкопироватьКолонки();
Для каждого СтрокаТЗ Из ТаблицаЗапроса Цикл
СтруктураОтбора = Новый Структура(Колонки);
ЗаполнитьЗначенияСвойств(СтруктураОтбора, СтрокаТЗ);
РезультатОтбора = Таблица.НайтиСтроки(СтруктураОтбора);
Для каждого СтрокаОтбора Из РезультатОтбора Цикл
НоваяСтрока = ТаблицаРезультат.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаОтбора);
Прервать;
КонецЦикла;
КонецЦикла;
КонецЕсли;
Возврат ТаблицаРезультат;
КонецФункции // УдалитьДублиСтрокТаблицыЗначений()
Описание строки в таблице значений
Преобразовать строку таблицы значений в структуру
СтрокаТаблицыЗначенийВСтруктуру (БСП)