gifts2017

Поиск, замена и удаление дубликатов (тонкий и толстый клиент)

Опубликовал Эмиль Фахреев (Kobra_RU) в раздел Администрирование - Чистка базы

Обработка работает на платформе 8.2. Имеет как обычную, так и управляемую форму. Предназначена для поиска дублирующихся объектов по установленным правилам сравнения, замены и последующей пометки на удаления и при необходимости полного удаления дубликатов.

Обработка постоена по типу помощника. На первой странице устанавливается объект метаданных с которым предполагается работать. Список ограничен справочниками и видами характеристик (может быть расширен как угодно раскоменнтированием пары строк в коде). Для принятия решения что на что менять можно настроить критерии определения заменяемых объектов (заполнение реквизитов не учитывает табличные части). Правила сравнения должны включать как минимум одно правило. Вид сравнения "Равенство" и "Содержит". Условие "Содержит" работает аналогично конструкции "Подобно" в запросе. Виды сравнения могут быть расширены раскомментированием строк в коде. Дополнительные сравнения на Владельца и ЭтоГруппа жестко вшито в код во избежании роковых ошибок. В отборе можно ограничить выборку проверяемых данных. На второй странице можно просмотреть и отредактировать (удалить или поменять местами) список дубликатов. На третьей странице можно просмотреть список объектов, в которых будет произведена замена. На этом этапе ещё можно отказаться от выполнения без обработки. На последней странице можно выбрать либо пометку на удаление либо полное удаление замененных объектов. Физическое удаление производится после контроля ссылочной целостности. Обработка не учитывает структуру базы данных, поэтому после удаления дубликатов надо проверить на дубликаты и подчиненные объекты метаданных (например, после удаления дубликатов контрагентов, надо проверить на дубликаты и договора контрагентов).

Внимание! Обработка производит массовую модификацию объектов баз данных и (при определенных настройках) полное удаление объектов.  Поэтому знакомство с обработкой рекомендуется проводить на копиях баз данных. Разработчик ответственности за потерянные данные не несет.

Обработка включает в себя модифицированные части кода из широко известных универсальных обработок 1С.

Скачать файлы

Наименование Файл Версия Размер
ПоискИУдалениеДубликатов.epf 901
.epf 58,30Kb
24.03.14
901
.epf 58,30Kb Скачать

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение
Комментарии
1. Макас (makas) 19.09.12 11:19
Полезная штука. судя по описанию!
2. Алексей Сергеев (students) 26.09.12 09:36
Привет. Данная обработка может менять ссылки у подчиненных объектов как стандартная из УПП. Например (Контрагент - договора)
3. Эмиль Фахреев (Kobra_RU) 26.09.12 15:49
(2) students,
Это вопрос? Я стандартные обработки как в УПП так и в других типовых конфигурациях не использую во избежании (был опыт использования встроенной обработки перепроведения документов).
Эта обработка не учитывает подчинение, т.к. не знает структуру конфигурации. Если мы делаем из 2 контрагентов одного, то результатом будет 1 контрагент с 2 договорами контрагентов (в простейшем случае) от первого и от второго контрагента по одному. Поэтому после этой операции надо чистить и договора контрагентов со сравнением на равенство организации и вида договора, например, или ещё по наименованию (если договоры учтены по номерам и т.п.).Аналогично, номенклатура и единицы измерения номенклатуры (в торговле и УПП) и т.п. А вообще попробуйте на копии базы и все сами увидите...
4. ds_square ds_square (ds_square) 07.12.12 09:44
Отличная штука!Правда, каждый раз пользуюсь и боязно при большом кол-ве номенклатуры...
5. Роман Сюзев (sorb) 03.04.13 08:41
Единственная адекватная замена типовой обработке "Поиск и замена дублирующихся элементов справочников" под УФ. Автору плюс и спасибо.
6. program program (prodines) 06.05.13 13:09
Нет возможности вести поиск по владельцу - для тех же договоров контрагента.
7. Эмиль Фахреев (Kobra_RU) 06.05.13 15:43
При поиске дубликатов владелец учитывается автоматически. То есть, если мы ведем поиск по совпадению наименований договоров, например, то в качестве дубликатов будут отобраны только те договора, в которых совпадает и наименование и владелец договора. Этот дополнительный элемент поиска жестко встроен в код во избежании фатальных невосстановимых изменений данных (например, замены во всех документах единицы измерения лишь одной номенклатуры).
8. Денис Кузнецов (kuza_87) 08.08.13 07:34
Автору большое спасибо, для управляемых форм больше ничего не нашел, а самому писать было лень
9. nmgmex nmgmex (nmgmex) 09.08.13 09:44
потестируем) автору плюс
10. Денис Кузнецов (kuza_87) 09.08.13 11:12
Дубли на удаление нормально помечает, но не удаляет. Что сделать чтобы удалить дубли?
11. Эмиль Фахреев (Kobra_RU) 12.08.13 09:34
Самое простое - не установлен флажок "Удалить замененные объекты с контролем ссылочной целостности".
А вообще различных вариантов может быть много. Например, у пользователя нет прав на удаление объектов.
Если объекты удаляются, но не все, надо запустить поиск ссылок и проверить не остались ли ещё не замененные реквизиты. Такие случаи могут быть вызваны особенностями конкретной конфигурации.
12. Денис Кузнецов (kuza_87) 12.08.13 09:43
(11) Kobra_RU, самое интересное что в тонком клиенте ссылки не удаляются, а в толстом под этим же пользователем с такими же правами удаляются.
13. Эмиль Фахреев (Kobra_RU) 12.08.13 12:41
Проверил ещё раз на базе (файловый вариант). Все вроде бы работает нормально.
Обработка полностью открытая, поэтому советую Вам посмотреть в отладчике, в чем там проблема. Код там несложный и понятный, можно сделать выводы даже в серверном варианте без отладочного режима (функция УдалитьОбъектыНаКлиенте()). Если этим займетесь, сообщите о конкретной обнаруженной проблеме - исправлю...
14. Алексей Шабанов (BTRVODKA) 15.09.13 04:43
Спасибо автору за публикацию!
15. Александр Агеев (Aleksand1985) 14.11.13 10:08
Стартмани сняли, а файл не скачал! Обидно!
16. Vasily Krolikofff (krolikofff) 21.03.14 17:40
Имеется файловая база, БП 2.0 (2.0.56.2), толстый клиент. На этапе "замена ссылок на дубликаты" возникает ошибка - Индекс находится за границами массива

{Форма.ФормаТК.Форма(1105)}: Индекс находится за границами массива
						Если Измерение.Тип.СодержитТип(ТипЗнч(Ссылка)) И НаборЗаписи[0][Измерение.Имя]=Ссылка Тогда


Как быть?
17. Эмиль Фахреев (Kobra_RU) 24.03.14 08:34
Скорректировал в обработке код.
Вы можете исправить у себя:
						Для Каждого Измерение ИЗ Последовательность.Измерения Цикл
							Если Измерение.Тип.СодержитТип(ТипЗнч(Ссылка)) И НаборЗаписи[0][Измерение.Имя]=Ссылка Тогда
								НаборЗаписи[0][Измерение.Имя] = ПравильныйЭлемент;
								НадоЗаписывать = Истина;
							КонецЕсли;
						КонецЦикла;
...Показать Скрыть


на
					Если НаборЗаписи.Количество() > 0 Тогда
						Для Каждого Измерение ИЗ Последовательность.Измерения Цикл
							Если Измерение.Тип.СодержитТип(ТипЗнч(Ссылка)) И НаборЗаписи[0][Измерение.Имя]=Ссылка Тогда
								НаборЗаписи[0][Измерение.Имя] = ПравильныйЭлемент;
								НадоЗаписывать = Истина;
							КонецЕсли;
						КонецЦикла;
					КонецЕсли;
...Показать Скрыть
ollega; Stranger777; Kesak; +3 Ответить 1
18. Vasily Krolikofff (krolikofff) 24.03.14 11:07
19. Антон Собейко (sobeyko2008) 26.03.14 21:21
А как галочки поставить на то что я хочу удалить. Или удалять обязательно все объекты которые нашла обработка? А если я так не хочу?))
20. Эмиль Фахреев (Kobra_RU) 27.03.14 09:02
Эта обработка задумана как технологический инструмент для быстрого и окончательного сноса дубликатов, возникших, например, при ошибках в схемах конвертации данных. Практически все видели, например, две валюты "рубли" с разными кодами. Если же есть желание оставить дубликаты, их можно только пометить на удаление, потом с помощью обработки "Удаление помеченных объектов" удалить, то что необходимо удалить, с остальных пометку снять. И, конечно, Вы можете доработать эту обработку.
21. Александр Зорий (aszoriy) 17.04.14 16:34
Отличная обработка. Спасибо!
22. Ольга Фигуркина (@Sonya) 02.06.14 10:09
Очень нужная обработка, спасибо! Было бы супер, если бы функция Поменять местами работала для всех выделенных строк!
23. Art Fa (artfa) 06.02.15 16:53
годная обработка,
но в УТ 10.3 и РТ 1.0 ни в какую не захотела удалять одну и ту же (обмен УТ<>РТ), позицию номенклатуры, пришлось удалить непосредственно,