1С таблица значений удалить дубли

Столкнулся с задачей удаления дублей строк в таблице значений, при этом важным критерием для меня является производительность, из-за большых размеров таблиц значений. Написал процедуру, возможно эта процедура кому-нибудь еще будет полезной.

Специальные предложения

(4) CagoBHuK, это при условии что все поля строк одинаковые.

Если, например, в таблице 4 колонки и дубли удалять надо только по 3 колонкам, то вариант стар как мир и даже описан в синтакс-помощнике (осторожно, код в стиле "капитан очевидность"):

Можно использовать и запрос, спорить не буду. Таблицу нужно будет подготовить – описать типы колонок, и также добавить колонку, по которой будет происходить суммирование.
Далее почти по тексту, только нужно будет выбирать не различные, а группировать по нужному списку колонок (строить запрос динимически), и добавить в запрос условие "Имеющие сумма(КолонкаСуммирования) = 1". (просто различные использовать нельзя из-за значений в других колонках таблицы). Далее эту сгруппированную временную таблицу нужно будет джойнить с первоначальной временной таблицей, в условиях связи прописывать равенство по выбранным полям (строить условие динамически), плюс нужно будет в случае если нужно не удалить все дублирующие строки, а оставить по одной из удаляемых тоже это предусмотреть.

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

Вариант написанный на коленке возможно будет эффективнее, если предоставится возможность, хотел бы на него посмотреть и возможно использовать с Вашего разрешения.

МассивДублей = Новый Массив;
МассивСотрудников = Новый Массив; // проверяемое на дубль значение

Для каждого Строка Из ТЗНачисления Цикл

Читайте также:  Что такое модуль сотовой связи в планшете

Если Строка.СпособРасчета = Перечисления.СпособыРасчетаОплатыТруда.СдельныйЗаработок Тогда // критерий сравнения на дубль, может быть любой

Если Элем = Неопределено Тогда // это первое вхождение проверяемого на дубль сотрудника

Иначе // а это – уже мы дубль встретили, по данному сотруднику и по данному критерию проверки на дубль

Если МассивДублей.Количество() > 0 Тогда

Для каждого Элем Из МассивДублей Цикл

Вся проверка делается за один проход. Очень просто.

Удаляет строку таблицы значений.

Метод Удалить() имеет следующий синтаксис:

А также альтернативный англоязычный синтаксис:

Параметры

Описание параметров метода Удалить() :

Имя параметра Тип Описание
Строка Число Индекс удаляемой строки
СтрокаТаблицыЗначений Удаляемая строка таблицы значений
Жирным шрифтом выделены обязательные параметры

Описание

Метод Удалить() удаляет строку таблицы значений.

Доступность

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).

Пример использования

Пример кода с использованием метода Удалить() :

Описание:

Таблица значений – это несохраняемый в базе данных объект, который позволяет строить динамические наборы значений и манипулировать ими (добавлять, редактировать, удалять элементы, сортировать). Он может быть наполнен значениями любого типа, т.е. в одной таблице типы хранимых значений могут быть разными. Одним из примеров использования данного объекта может служить организация представления в форме списка элементов справочника, отобранных по сложному алгоритму.

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

Элементы коллекции: СтрокаТаблицыЗначений

Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции.

Читайте также:  Чем открыть файл мод

Возможно обращение к элементу коллекции посредством оператора [. ]. В качестве аргумента передается индекс строки (нумерация с 0).

Оцените статью
Добавить комментарий

Adblock detector