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

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

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

Массив доступен как на клиенте, так и на сервере. Массивы не хранятся в базе данных и используются для работы с временными наборами данных. Доступ к элементам массива осуществляется по индексу через оператор […] (первый элемент имеет индекс ). Также для массива возможен обход посредством оператора Для каждого … Из … Цикл. Имеется возможность организовывать многомерные массивы.

Рассмотрим на примерах работу с этим программным объектом.

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

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

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

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

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

Читайте также:  Пакет обновлений для windows 7 32 bit

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

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

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

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

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

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

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

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

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

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

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

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

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

Параметры

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

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

Описание

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

Доступность

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

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

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

Ссылка на основную публикацию
Adblock detector