Как в документе найти дубли

Проверка на наличие дублирующихся строк в табличных частях

Время прочтения — 7 мин.

Получить бесплатную консультацию

Думаю, каждый программист рано или поздно сталкивался с подобной задачей: как реализовать проверку на наличие дублирующихся строк в табличных частях. Кому-то просто нужно проверить: есть, или нет, дубли. Кому-то нужно известить пользователя, и сообщить ему номера строк с дублями. Это вопросы будут рассмотрены в данной статье. Но давайте сразу определимся с терминологией: поля, по которым будет осуществляться контроль, назовем «ключевые».


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



Рассмотрим следующие ситуации:


1) Проверка на наличие дублирующихся строк на уровне есть/нет.
Реализация ее будет выглядеть следующим образом:

Запрос = Новый Запрос;
Запрос.УстановитьПараметр(«Ссылка», Ссылка);
Запрос.Текст =
«ВЫБРАТЬ
| ТабЧасть.Качество,
| ТабЧасть.Номенклатура,
| ТабЧасть.СерияНоменклатуры,
| ТабЧасть.Склад,
| ТабЧасть.ХарактеристикаНоменклатуры,
| КОЛИЧЕСТВО(ТабЧасть.НомерСтроки) КАК КоличествоДублей
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК ТабЧасть
|ГДЕ
| ТабЧасть.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ТабЧасть.Качество,
| ТабЧасть.Номенклатура,
| ТабЧасть.СерияНоменклатуры,
| ТабЧасть.Склад,
| ТабЧасть.ХарактеристикаНоменклатуры
|
|ИМЕЮЩИЕ
| КОЛИЧЕСТВО(ТабЧасть.НомерСтроки) > 1″;
РезЗапроса = Запрос.Выполнить();
Если Не РезЗапроса.Пустой() Тогда
              Сообщить(«Имеются дубли строк!!!»); 
КонецЕсли;

Здесь все достаточно просто. Обращаемся к данным табличной части документа, группируем по ключевым полям с использование агрегатной функции для подсчета количества номеров строк. Накладываем условие по вычисленному значению агрегатной функции. Все.

2) Классика жанра. Выведем в сообщении пользователю номера всех тех строк табличной части, которые являются дублями.

Запрос = Новый Запрос; 

Запрос.УстановитьПараметр(«Ссылка», Ссылка); 

Запрос.Текст =
«ВЫБРАТЬ 
| ТабЧасть.Качество, 
| ТабЧасть.Номенклатура, 
| ТабЧасть.СерияНоменклатуры, 
| ТабЧасть.Склад, 
| ТабЧасть.ХарактеристикаНоменклатуры, 
| ТабЧасть.НомерСтроки КАК НомерСтроки 
|ПОМЕСТИТЬ ВТ_ТабЧасть 
|ИЗ 
| Документ.РеализацияТоваровУслуг.Товары КАК ТабЧасть 
|ГДЕ 
| ТабЧасть.Ссылка = &Ссылка 
|; 
| |//////////////////////////////////////////////////////////////////////////////// 
|ВЫБРАТЬ 
| ТабЧасть.Качество КАК Качество, 
| ТабЧасть.Номенклатура КАК Номенклатура, 
| ТабЧасть.СерияНоменклатуры КАК СерияНоменклатуры, 
| ТабЧасть.Склад КАК Склад, 
| ТабЧасть.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, 
| ТабЧасть.НомерСтроки КАК НомерСтроки 
|ИЗ 
| ВТ_ТабЧасть КАК ТабЧасть 
|ГДЕ 
| (ТабЧасть.Качество, ТабЧасть.Номенклатура, ТабЧасть.СерияНоменклатуры, ТабЧасть.Склад, ТабЧасть.ХарактеристикаНоменклатуры) В 
| (ВЫБРАТЬ 
| ВТ.Качество, 
| ВТ.Номенклатура, 
| ВТ.СерияНоменклатуры, 
| ВТ.Склад, 
| ВТ.ХарактеристикаНоменклатуры 
| ИЗ 
| ВТ_ТабЧасть КАК ВТ 
| СГРУППИРОВАТЬ ПО 
| ВТ.Качество, 
| ВТ.Номенклатура, 
| ВТ.СерияНоменклатуры, 
| ВТ.Склад, 
| ВТ.ХарактеристикаНоменклатуры 
| ИМЕЮЩИЕ 
| КОЛИЧЕСТВО(ВТ.НомерСтроки) > 1) 

|УПОРЯДОЧИТЬ ПО 
| НомерСтроки 
|ИТОГИ ПО 
| Качество, 
| Номенклатура, 
| СерияНоменклатуры, 
| Склад»;
РезЗапроса = Запрос.Выполнить(); 
Если Не РезЗапроса.Пустой() Тогда 
Выб_Качество = РезЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); 
Пока Выб_Качество.Следующий() Цикл 
Выб_Номенклатура = Выб_Качество.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); 
Пока Выб_Номенклатура.Следующий() Цикл 
Выб_СерияНоменклатуры = Выб_Номенклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); 
Пока Выб_СерияНоменклатуры.Следующий() Цикл 
Выб_Склад = Выб_СерияНоменклатуры.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); 
Пока Выб_Склад.Следующий() Цикл 
Выборка = Выб_Склад.Выбрать(); 
ТекстСообщения = «»; 
Пока Выборка.Следующий() Цикл 
ТекстСообщения = ТекстСообщения + ?(ПустаяСтрока(ТекстСообщения), «», «, «) + Выборка.НомерСтроки; 
КонецЦикла; 
ТекстСообщения = «Обнаружено дублирование строк: » + ТекстСообщения; Сообщить(ТекстСообщения); 
КонецЦикла; 
КонецЦикла; 
КонецЦикла; 
КонецЦикла; 

КонецЕсли

Здесь все тоже не слишком сложно. Обратились к данным табличной части документа, поместили их во временную таблицу. Далее работаем со временной таблицей. Обращаемся к ней, отбираем те данные, по которым есть дубли (условие с использованием вложенного запроса). А далее, для того, чтобы сохранить все множество значений номеров строк, нам необходимо по ключевым полям объявить итоги. В таком случае в результате запроса, при использовании механизма итогов, появляются дополнительные строки, в которых хранится итог для того, или иного поля, а сам результат принимает иерархический вид, или вид дерева. Для того, чтобы вывести пользователю сообщение, нам нужно обойти результат запроса, и по каждому набору ключевых полей скомпоновать текст сообщения, и выдать его пользователю.


А теперь попробуем оценить перспективу доработки. Допустим, у нас изменился состав ключевых полей в сторону увеличения их количества: добавились ЕдиницаИзмерения и ЗаказПокупателя. Чтобы контроль дублей строк не перестал работать, нам нужно доработать запрос и обход результата запроса следующим образом:


Запрос = Новый Запрос; 
Запрос.УстановитьПараметр(«Ссылка», Ссылка); 
Запрос.Текст = 
«ВЫБРАТЬ
| ТабЧасть.ЕдиницаИзмерения, 
| ТабЧасть.ЗаказПокупателя, 
| ТабЧасть.Качество, 
| ТабЧасть.Номенклатура, 
| ТабЧасть.СерияНоменклатуры, 
| ТабЧасть.Склад, 
| ТабЧасть.ХарактеристикаНоменклатуры, 
| ТабЧасть.НомерСтроки КАК НомерСтроки 
|ПОМЕСТИТЬ ВТ_ТабЧасть 
|ИЗ 
| Документ.РеализацияТоваровУслуг.Товары КАК ТабЧасть 
|ГДЕ 
| ТабЧасть.Ссылка = &Ссылка 
|; 

|//////////////////////////////////////////////////////////////////////////////// 
|ВЫБРАТЬ 
| ТабЧасть.ЕдиницаИзмерения КАК ЕдиницаИзмерения, 
| ТабЧасть.ЗаказПокупателя КАК ЗаказПокупателя, 
| ТабЧасть.Качество КАК Качество, 
| ТабЧасть.Номенклатура КАК Номенклатура, 
| ТабЧасть.СерияНоменклатуры КАК СерияНоменклатуры, 
| ТабЧасть.Склад КАК Склад, 
| ТабЧасть.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, 
| ТабЧасть.НомерСтроки КАК НомерСтроки 
|ИЗ 
| ВТ_ТабЧасть КАК ТабЧасть 
|ГДЕ 
| (ТабЧасть.ЕдиницаИзмерения, ТабЧасть.ЗаказПокупателя, ТабЧасть.Качество, ТабЧасть.Номенклатура, ТабЧасть.СерияНоменклатуры, ТабЧасть.Склад, ТабЧасть.ХарактеристикаНоменклатуры) В 
| (ВЫБРАТЬ 
| ВТ.ЕдиницаИзмерения, 
| ВТ.ЗаказПокупателя, 
| ВТ.Качество, 
| ВТ.Номенклатура, 
| ВТ.СерияНоменклатуры, 
| ВТ.Склад, 
| ВТ.ХарактеристикаНоменклатуры 
| ИЗ 
| ВТ_ТабЧасть КАК ВТ 
| СГРУППИРОВАТЬ ПО 
| ВТ.ЕдиницаИзмерения, 
| ВТ.ЗаказПокупателя, 
| ВТ.Качество, 
| ВТ.Номенклатура, 
| ВТ.СерияНоменклатуры, 
| ВТ.Склад, 
| ВТ.ХарактеристикаНоменклатуры 
| ИМЕЮЩИЕ 
| КОЛИЧЕСТВО(ВТ.НомерСтроки) > 1) 

|УПОРЯДОЧИТЬ ПО 
| НомерСтроки 
|ИТОГИ ПО 
| Качество, 
| Номенклатура, 
| СерияНоменклатуры,
| Склад, 
| ХарактеристикаНоменклатуры, 
| ЕдиницаИзмерения»;
РезЗапроса = Запрос.Выполнить(); 
Если Не РезЗапроса.Пустой() Тогда 
Выб_Качество = РезЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); 
Пока Выб_Качество.Следующий() Цикл 
Выб_Номенклатура = Выб_Качество.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); 
Пока Выб_Номенклатура.Следующий() Цикл 
Выб_СерияНоменклатуры = Выб_Номенклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); 
Пока Выб_СерияНоменклатуры.Следующий() Цикл 
Выб_Склад = Выб_СерияНоменклатуры.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); 
Пока Выб_Склад.Следующий() Цикл 
Выб_ХарактеристикаНоменклатуры = Выб_Склад.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); 
Пока Выб_ХарактеристикаНоменклатуры.Следующий() Цикл 
Выб_ЕдиницаИзмерения=Выб_ХарактеристикаНоменклатуры.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); 
Пока Выб_ЕдиницаИзмерения.Следующий() Цикл 
ТекстСообщения = «»; 
Выборка = Выб_ЕдиницаИзмерения.Выбрать(); 
Пока

Подпишитесь на дайджест!

Подпишитесь на дайджест, и получайте ежемесячно подборку полезных статей.

3) Альтернативный вариант. 

Реализация предыдущего варианта другим способом. Предлагаю использовать особенность запросов 1С, позволяющих обращаться к данным табличных частей, как к обычным полям выборки. Ну все-таки не совсем обычным, но все же полям выборки. Кроме того, нам придётся использовать не самый оптимальный способ соединения данных — декартово произведение. Почему так — опишу ниже.

ШаблонОшибки = «Табличная часть ‘Товары’: по реквизитам ‘Качество, Номенклатура, СерияНоменклатуры, Склад, ХарактеристикаНоменклатуры’ обнаружено дублирование строк ‘%1′»; 
Запрос = Новый Запрос; 
Запрос.УстановитьПараметр(«Ссылка», Объект.Ссылка); 
Запрос.Текст
«ВЫБРАТЬ
| ТабЧасть.Ссылка, 
| МИНИМУМ(ТабЧасть.НомерСтроки) КАК МинНомерСтроки, 
| ТабЧасть.Качество, 
| ТабЧасть.Номенклатура, 
| ТабЧасть.СерияНоменклатуры, 
| ТабЧасть.Склад, 
| ТабЧасть.ХарактеристикаНоменклатуры 
|ПОМЕСТИТЬ ВТ_ТабЧасть 
|ИЗ 
| Документ.РеализацияТоваровУслуг.Товары КАК ТабЧасть 
|ГДЕ 
| ТабЧасть.Ссылка = &Ссылка 

|СГРУППИРОВАТЬ ПО 
| ТабЧасть.Ссылка, 
| ТабЧасть.Качество, 
| ТабЧасть.Номенклатура, 
| ТабЧасть.СерияНоменклатуры, 
| ТабЧасть.Склад, 
| ТабЧасть.ХарактеристикаНоменклатуры 
| |ИМЕЮЩИЕ 
| КОЛИЧЕСТВО(ТабЧасть.НомерСтроки) > 1 
|; 

|//////////////////////////////////////////////////////////////////////////////// 
|ВЫБРАТЬ 
| ТабЧасть.Ссылка, 
| ТабЧасть.Качество, 
| ТабЧасть.Номенклатура, 
| ТабЧасть.СерияНоменклатуры, 
| ТабЧасть.Склад, 
| ТабЧасть.ХарактеристикаНоменклатуры, 
| Док.Товары.( 
| НомерСтроки, 
| Качество, 
| Номенклатура, 
| СерияНоменклатуры, 
| Склад, 
| ХарактеристикаНоменклатуры 
| ) КАК ДублиСтрок 
|ИЗ 
| (ВЫБРАТЬ 
| Док.Товары.( 
| НомерСтроки, 
| Качество, 
| Номенклатура, 
| СерияНоменклатуры, 
| Склад, 
| ХарактеристикаНоменклатуры 
| ) КАК Товары 
| ИЗ 
| Документ.РеализацияТоваровУслуг КАК Док 
| ГДЕ 
| Док.Ссылка = &Ссылка 
| И (Док.Товары.Качество, Док.Товары.Номенклатура, Док.Товары.СерияНоменклатуры, Док.Товары.Склад, Док.Товары.ХарактеристикаНоменклатуры) В 
| (ВЫБРАТЬ 
| ВТ.Качество, 
| ВТ.Номенклатура, 
| ВТ.СерияНоменклатуры, 
| ВТ.Склад, 
| ВТ.ХарактеристикаНоменклатуры 
| ИЗ 
| ВТ_ТабЧасть КАК ВТ)) КАК Док 
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ТабЧасть КАК ТабЧасть 
| ПО (ИСТИНА) 
|ГДЕ 
| Док.Товары.Качество = ТабЧасть.Качество 
| И Док.Товары.Номенклатура = ТабЧасть.Номенклатура 
| И Док.Товары.СерияНоменклатуры = ТабЧасть.СерияНоменклатуры 
| И Док.Товары.Склад = ТабЧасть.Склад 
| И Док.Товары.ХарактеристикаНоменклатуры = ТабЧасть.ХарактеристикаНоменклатуры 

|УПОРЯДОЧИТЬ ПО 
| ТабЧасть.МинНомерСтроки, 
| Док.Товары.НомерСтроки»;
ТЗ_Результат = Запрос.Выполнить().Выгрузить(); 
Для Каждого СтрТЗ Из ТЗ_Результат Цикл 
Сообщить(СтрШаблон(ШаблонОшибки, СтрСоединить(СтрТЗ.ДублиСтрок.ВыгрузитьКолонку(«НомерСтроки»), «, «))); 
КонецЦикла;

Главное отличие от предыдущего варианта: обход результата запроса осуществляется линейным способом. Т.е. при изменении состава ключевых полей меняется только текст запроса.

Несколько комментариев по поводу запроса.

Работа с табличными частями в качестве полей выборки накладывает ряд ограничений на выполнение запросов. Во-первых, это работа с временными таблицами. Т.е. нельзя помещать такие объекты во временные таблицы, но никто не мешает использовать вложенные запросы. Во-вторых, это соединения таблиц. Мне требовалось написать такой запрос, который бы возвратил мне наборы ключевых полей по которым имеются дубли, и многострочный объект, содержащий все строки с таким же набором ключевых полей. Обычные соединения (ВНУТРЕННЕЕ, ЛЕВОЕ, ПРАВОЕ, ПОЛНОЕ) возвращают всю табличную часть, что, в общем, правильно – для части объекта условие соединения же выполняется? Выполняется. Ну тогда и получите всю табличную часть. Искомый результат, как оказалось, достигается декартовым произведением. Мне как-то претит видеть в тексте запроса перечисление таблиц через запятую, поэтому я все декартовы произведения всегда реализую через «… СОЕДИНЕНИЕ … ПО (ИСТИНА)». Чтобы ограничить мсье Декарта в аппетитах (и повысить производительность), применяются дополнительные ограничения.

Теперь о производительности. Производились тестовые замеры каждого из вариантов на документе с большим количеством строк в табличной части. Количество строк в тестируемом документе: 47 817, 4 комбинации ключевых полей с дублями по 2, 2, 3 и 4 строки. Результаты замеров:

Вариант 1) 0:00:00.078 сек.

Вариант 2) 0:00:00.265 сек.

Вариант 3) 0:00:01.513 сек.

Как видим, третий вариант, как и ожидалось, самый медленный, но он же является самым удобным в перспективе модификации.

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

1.png

1) Выбираем вид объекта: Документ или Справочник.

2) Выбираем тип объекта: Какой именно документ или справочник.

3) Выбираем табличную часть объекта.

4) Определяем состав ключевых полей в специальном диалоге

2.png

5) Если мы хотим, то можем указать ссылку на объект, чтобы проверить его на наличие дублей.

6) Если активен флажок «Сгенерировать и показать код для проверки на дубли», то будет сгенерирован программный код для выполнения проверки на дубли строк с имеющимися настройками.

Автор статьи:


Эксперт по технологическим вопросам ИнфоСофт

Поиск и удаление повторений

Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Excel 2007 Excel Starter 2010 Еще…Меньше

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

  1. Выберите ячейки, которые нужно проверить на наличие повторений.

    Примечание: В Excel не поддерживается выделение повторяющихся значений в области «Значения» отчета сводной таблицы.

  2. На вкладке Главная выберите Условное форматирование > Правила выделения ячеек > Повторяющиеся значения.

    Удаление дубликатов 1

  3. В поле рядом с оператором значения с выберите форматирование для применения к повторяющимся значениям и нажмите кнопку ОК.

    Удаление дубликатов 2

Удаление повторяющихся значений

При использовании функции Удаление дубликатов повторяющиеся данные удаляются безвозвратно. Чтобы случайно не потерять необходимые сведения, перед удалением повторяющихся данных рекомендуется скопировать исходные данные на другой лист.

  1. Выделите диапазон ячеек с повторяющимися значениями, который нужно удалить.

  2. На вкладке Данные нажмите кнопку Удалить дубликаты и в разделе Столбцы установите или снимите флажки, соответствующие столбцам, в которых нужно удалить повторения.

    Удаление дубликатов 3

    Например, на данном листе в столбце «Январь» содержатся сведения о ценах, которые нужно сохранить.

    Выделенные повторяющиеся значения

    Поэтому флажок Январь в поле Удаление дубликатов нужно снять.

    Удаление дубликатов 5

  3. Нажмите кнопку ОК.

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

Дополнительные сведения

Обратитесь к эксперту. Обучайтесь у преподавателей в прямом эфире.

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

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

При работе в программах 1С зачастую создаются дубли — одинаковые документы или элементы справочников. Для быстрого выявления дублей используется обработка 1С Поиск и удаление дублей. Рассмотрим, как работать с обработкой на примере 1С:Бухгалтерия предприятия 8.3 и 8.2.

Дубли приводят к путанице и ошибкам. Типичный пример — одни и те же контрагенты или номенклатура. Для исправления таких ситуаций требуется выполнить действия:

  1. Найти дубли.
  2. Определить верный элемент.
  3. Заменить дубли на оригинал в объектах программы.
  4. Удалить дубли.

Разберем поиск и удаление дублей 1С 8.3 Бухгалтерия с помощью обработки 1С Поиск и удаление дублей.

Чтобы запустить поиск дублей в 1С 8.3 зайдите в меню Администрирование – Настройки программы – Обслуживание.

Раскройте пункт Корректировка данных и перейдите по ссылке Поиск и удаление дублей.

В поле Искать в нажмите на значок с тремя точками и выберите документ или справочник для поиска дублей.

Поиск дублей в 1С 8.3 Бухгалтерия

Для примера выберем справочник Контрагенты.

Затем определите критерии сравнения по ссылке.

Искать можно по наименованию контрагентов, ИНН, КПП и другим параметрам.

Нажмите кнопку Найти дубли. Откроется результат поиска.

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

Следующий шаг — удаление дублей в 1С 8.3 Бухгалтерия.

Флажками отметьте элементы, которые не являются дублями, чтобы случайно их не удалить. Например, на картинке контрагенты Автотрейд и Евротрейд разные.

После определения настроек нажмите кнопку Удалить дубли.

При этом:

  • все ссылки на документы и другие объекты перенесутся на главный элемент;
  • для дублей установится пометка удаления.

Поиск и замена дублей 1С 8.3 выполнены.

Для удаления дублей в 1С 8.3 Бухгалтерия используйте обработку Удаление помеченных объектов в меню Администрирование – Сервис – Удаление помеченных объектов.

Поиск и удаление дублей 1С 8.2

В 1С 8.2 нет встроенной обработки для поиска дублей. Вы можете массово заменить одно значение на другое, если заранее выявили дубли. Для этого скачайте с сайта ИТС обработку Поиск и замена значений.

Скачать обработку Поиск и замена значений 1С →

Откройте обработку в 1С через меню Файл – Открыть.

Укажите, какой объект вы будете заменять и на что именно.

Нажмите кнопку Найти ссылки.

Отобразится список объектов. Для замены нажмите кнопку Выполнить замену значений.

Установите пометку удаления для лишнего элемента и удалите его через меню Операции – Удаление помеченных объектов.

См. также:

  • Поиск ссылок на объекты в 1С 8.3
  • Поиск и замена значений 1С 8.3
  • Как удалить помеченные на удаление документы в 1С 8.3
  • Групповое перепроведение документов в 1С 8.3 Бухгалтерия 3.0
  • Групповая обработка справочников и документов в 1С 8.3
  • Сбилась нумерация документов в 1С 8.3: как исправить

Если Вы еще не подписаны:

Активировать демо-доступ бесплатно →

или

Оформить подписку на Рубрикатор →

После оформления подписки вам станут доступны все материалы Бухэксперт8, записи поддерживающих эфиров и вы сможете задавать любые вопросы по программе 1С.

Подписывайтесь на наши YouTube и Telegram чтобы не пропустить
важные изменения 1С и законодательства

Помогла статья?

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

Чтобы выполнить поиск ошибочно введенных дублирующих друг друга элементов и ссылок на них в информационной базе 1С:Комплексная автоматизация и 1С:ERP применяют обработку Поиск и удаление дублей. Программа самостоятельно выполнит замену всех ссылок на дубли ссылками на выбранный правильный элемент и устанавливает на дубль пометку на удаление.

Запуск обработки Поиск и удаление дублей можно выполнить следующим образом:

Первым делом необходимо перейти в раздел: НСИ и администрирование – Обслуживание.

Как в 1С:Предприятие выполнить поиск и устранение дублей элементов в списках

В открывшемся окне находим блок Корректировка данных, после чего находим и переходим по ссылке Поиск и удаление дублей.

Как в 1С:Предприятие выполнить поиск и устранение дублей элементов в списках

Следующим шагом будет установка правил поиска дублей, для этого в поле Искать в задаем область поиска дублей (справочник, вид документа и др.), как показано на примере ниже.

Как в 1С:Предприятие выполнить поиск и устранение дублей элементов в списках

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

В графе Сравнивать нам нужно установить правило, по которому будет происходить поиск дублей. Для этого в новом окне Правила поиска дублей необходимо отметить флажками параметры, при совпадении которых, программа будет считать элементы дублями. Существуют следующие правила отбора:

  • Совпадает — полное совпадение;
  • Совпадает по похожим словам — неполное совпадение, доступно не для всех реквизитов.

После чего нам нужно запустить поиск дублей, для этого нажимаем одноименную кнопку Найти дубли.

Как в 1С:Предприятие выполнить поиск и устранение дублей элементов в списках

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

При нажатии на кнопку Удалить дубли все ссылки из объектов информационной базы будут перенесены на оригинальный элемент, а дубли будут помечены на удаление.

Как в 1С:Предприятие выполнить поиск и устранение дублей элементов в списках

Чтобы удалить все помеченные объекты, необходимо запустить обработку Удаление помеченных объектов, это можно сделать перейдя в раздел НСИ и администрирование.

Как в 1С:Предприятие выполнить поиск и устранение дублей элементов в списках

Если в программе произошло задвоение элементов, необходимо объединить их с помощью обработки «Поиск и удаление дублей»

Первым шагом необходимо перейти в меню «Все функции». Для этого открываем главное меню и переходим в пункт «Сервис-Параметры»

Главное меню, пункт «Сервис-Параметры»

Далее устанавливаем галочку «Отображать команду «Все функции»», нажимаем «Применить» и «ОК»

Галочка «Отображать команду «Все функции»»

Затем опять открываем главное меню и у нас появляется возможность перейти в меню «Все функции»

Главное меню, пункт «Все функции»

В открывшемся списке раскрываем пункт «Обработки»

В открывшемся списке раскрываем пункт «Обработки»

И в списке, по алфавиту, находим обработку «Поиск и удаление дублей»

И в списке, по алфавиту, находим обработку «Поиск и удаление дублей»


Купон на ОЗОН за покупку программ 1С

Далее у нас открывается окошко самой обработки, где в поле «Искать в» нужно выбрать справочник или документ, в котором необходимо найти и удалить дубли. В поле «Отбирать» можно установить дополнительные параметры отбора, а в поле «Сравнивать» можно выбрать параметры для сравнения.

Окно поиска и удаления дублей

После выбора всех параметров поиска дублей необходимо нажать кнопку «Найти дубли» и в форме ниже программа отобразит дубли (если таковые имеются) по критериям поиска.

Удаление дублей

На данном рисунке видно, что в справочнике «Физические лица» есть 2 дубля (это 2 одинаковых физ. Лица). Для того, чтобы удалить ненужный элемент, необходимо определить, какой является оригиналом, выделить его и по кнопке «Отметить как оригинал» отметить его. После этого, при нажатии кнопки «Удалить дубли», все отмеченные элементы будут помечены на удаление и заменены во всех местах использования на оригиналы (отмечены стрелкой)

Понравилась статья? Поделить с друзьями:
  • Как найти скорость распространения света в жидкости
  • Как найти в магазине цельнозерновой хлеб
  • Как составить меню чтобы сбросить вес
  • Как найти татарские новинки песен
  • Как составить схему слова рябина