Замена ссылок, поиск и удаление дублей

Опубликовал nalivai-chai в раздел Администрирование - Сервисные утилиты

Замена ссылок, поиск и удаление дублей.
Механизм замены ссылочных элементов в объектах базы данных реализован в общих модулей встраиваемых в конфигурацию.
Замена ссылок в управляемом интерфейсе.

В обработке есть справка, в которой описан порядок работы с обработкой.

Обработка позволяет указать ключевые поля элементов справочника для поиска дублей, выбрать правильные элементы.

Выполнить замену ссылок неправильных элементов на правильные. Пометить на удаление и удалить объекты из базы данных с проверкой ссылочной целостности. 

Можно указать режим замены ссылок: Режим "Обмена данными", выполнение в единой транзакции.

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

Для замены ссылок используется функция из типовой универсальной обработки ("Поиск и замена значений") несколько переработанная.

На вложенных скринах указан порядок работы с обработкой.

1. Настройка правил поиска дублей.

2. Запуск поиска дублей.

3. Поиск связанных данных (где используются ссылки наших задвоенных объектов).

4. Выполнение замены неправильных ссылок на правильные ссылки.

5. Пометка удаление неправильных ссылок. 

6. Удаление неправильных объектов.

ДОРАБОТКИ

 10.03.2012. Сделан удобный выбор объекта метаданных в настройке поиска дублей.

 18.07.2012. Версия 1.0.1.4.

    1. При записи набора регистра бухгалтрерии в режиме обмена данных (ОбменДанными.Загрузка = Истина) есть фича:

    если не ведется учет по измерению ("по подразделению"), но в записи установить значение (например, Подразделение.ПустаяСсылка), то не смотря на то, что учет по подразделению не ведется, записывается значение установленное в наборе.

    Напротив, если ОбменДанными.Загрузка = Ложь, то в таком случае значение автоматически обNULLяется.

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

    Исправляется перезаписью записей регистра в режиме ОбменДанными.Загрузка = Ложь.

    2. Внесены поправки по замечаниям.

    3. Добавлены дополнительные настройки. Таблица ошибок. Ведение журнала регистрации.

    4. Добавлена конфигурация с модулями замены, с возможностью вынесения процедуры выполнения замены на сервер, появилась возможность запуска выполнения замены в фоновом режиме. (см. конфигурации "ВыполнениеЗаменыСсылочныхЭлементов.cf" и "ИндикаторФоновогоЗадания.cf").

   Конфигурация "ИндикаторФоновогоЗадания.cf" для клиент-серверного режима.

 14.08.2012. Версия 1.0.1.5.

    1. Добавлена замена ссылок в общих реквизитах объектов.

    2. Исправлены найденные ошибки (см. комментарий 17).

27.11.2012. Версия 2.1.1.10.

    1. Переписано ядро механизма выполнения замены ссылок. Повышена стабильность программы, скорость выполнения, оптимальное использование оперативной памяти. При выполнение замены ссылок в больших объемах данных могла возникать ошибка "Нехватка памяти" или выполнение могло проходить слишком медленно.

    2. Добавлены новые настройки: Параметры обмена данными, фонового задания, уровней транзакции, контекста выполнения.

    3. Усовершенствован механизм индикации хода выполнения обработки.

    4. Написана справка для обработки.

11.12.2012. Версия 2.1.1.11.

    1. Оптимизированы алгоритмы обработки замены ссылок в движениях документа.

    2. Добавлен механизм хранения описаний ошибок (исключений) с возможностью прерывания выполнения обрабоки замены ссылок при накоплении заданного количества исключений.

24.12.2012. Версия 2.1.1.12.

    1. Добавлена возможность подключать обработчики для событий обработки замены ссылок. События обработки замены:

        - "инициализация дополнительных параметров" - в клиент-серверном варианте выполняется дважды, один раз на клиентской стороне, другой на серверной;

        - "перед выполнением замены ссылок" - выполняется один раз перед выполнением всех замен;

        - "перед полученим объекта" - выполняется перед получением объекта, в котором необходимо выполнить замены, из базы данных;

        - "перед записью объекта" - выполняется перед записью объекта, с уже выполненными заменами, в базу данных;

        - "после выполнения замен" - выполняется один раз после выполнения замены всех ссылок.


17.03.2014. Версия 2.1.2.7.

    - оптимизация интерфейсных механизмов;

    - добавлено автосохранение значений элементов формы (текущих настроек);

    - изменен формат файла настроек.

 

29.04.2014. Версия 2.1.2.7.

    - реализована возможность добавлять в ключ поиска дублей строковое поле неограниченной длины (такое поле приводится к ограниченному полю длиной в 1000 символов);

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

 

26.09.2014. Версия 2.3.1.1.

    - добавлена управляемая форма для замены ссылок в объектах базы данных;

    - незначительные исправления и улучшения (реализована замена в регистрах с регистратором-битой ссылкой, повышена стабильность кода).

01.12.2014. Версия 2.3.1.3.

    - добавлена возможность включения привилегированного режима (выполнение замены с полными правами);

    - исправлена ошибка выполнения замены ссылок в последовательностях.

 

Файлы

Наименование Файл Версия Размер Кол. Скачив.
Поиск замена и удаление дублей объектов (конфигурация)
.cf 161,93Kb
27.05.15
1204
.cf 2.3.1.3 161,93Kb 1204 Скачать
Поиск замена и удаление дублей объектов (обработка)
.epf 102,57Kb
01.12.14
414
.epf 2.3.1.3 102,57Kb 414 Скачать

См. также

Лучшие комментарии

6. nalivai-chai 11.04.2012 14:11
(5) Boroda,

1. Интерфейсом. Основная цель при написании обработки состояла в создании интерфейса для групповой обработки задвоенных элементов справочников с использованием стандартной 1С-овской процедурой замены. Около года пользуюсь успешно обработкой в крупных и мелких проектах. Единственное было, что вылетала 1С-овская "гарантировання" процедура замены на регистрах бухгалтерии и при замене ссылок видов расчета. Пользуюсь для создания правил "ПостроителемОтчета", давно хочу переделать под СКД, но руки не доходят, тем более для 99% случаев хватает "Построителя".

2. Процедура замены отличается обработкой регистра бухгалтерии (стандартная "гарантированная" вылетала, вроде при обработке небалансовых измерений), и заменой ссылок видов расчета.
+ 1 [ GoodWinSpr; ]
# Ответить
44. tisas77 14.04.2014 22:21
Нужная и полезная штука
+ 1 [ 128821; ]
# Ответить
42. nalivai-chai 04.04.2014 07:26
(41) rosinfoteh, аккуратней со словами, уже сомневаюсь в адекватности их автора.

Что "НЕ РАБОТАЕТ", на каком основании? (можно скрин кинуть, например)

Если открыл в управляемом интерфейсе и увидел пустую форму, то флаг тебе в руки, обработка работает только в "обычном приложении".

Когда у 75 человек работает, а у одного нет... Напоминает: если седьмой муж бьет жене по роже, значит дело не в муже, а в роже.
+ 1 [ markela; ]
# Ответить

Комментарии

1. Magister (файл скачал) 09.04.2012 00:47
В регистрах ссылки без перепроведения документов-регистраторов заменяет?
Ответили: (2) (15)
# Ответить
2. nalivai-chai 09.04.2012 09:25
(1) Magister, заменяет ссылки в записях регистров документов-регистраторов без перепроведения документов.

Кстати, если ссылка есть в связанной записи регистра, но её нет в самом документе-регистраторе, то функция "Поиск ссылок" выдаст ссылку на документ, но не на регистр.
Ответили: (12)
# Ответить
3. mainDPV (файл скачал) 10.04.2012 11:50
При создании настройки поиска дублей неплохо было бы по аналогии с "Универсальным подбором и обработкой" обработку тайпинга (ввода текста в поле) сделать к полю "Таблица данных", чтобы не только из списка выбирать.

А в остальном - зачет, я успешно опробовал. Автору плюс.
# Ответить
4. serg-wws 10.04.2012 13:32
Нормуль, плюс
# Ответить
5. Boroda 11.04.2012 12:58
Немного не допонял, а от стандартной с ITS она чем отличается? Та вроде бы делает то же самое, но как бы гарантирована 1С. Здесь какие-то изюминки?
Ответили: (6)
# Ответить
6. nalivai-chai 11.04.2012 14:11
(5) Boroda,

1. Интерфейсом. Основная цель при написании обработки состояла в создании интерфейса для групповой обработки задвоенных элементов справочников с использованием стандартной 1С-овской процедурой замены. Около года пользуюсь успешно обработкой в крупных и мелких проектах. Единственное было, что вылетала 1С-овская "гарантировання" процедура замены на регистрах бухгалтерии и при замене ссылок видов расчета. Пользуюсь для создания правил "ПостроителемОтчета", давно хочу переделать под СКД, но руки не доходят, тем более для 99% случаев хватает "Построителя".

2. Процедура замены отличается обработкой регистра бухгалтерии (стандартная "гарантированная" вылетала, вроде при обработке небалансовых измерений), и заменой ссылок видов расчета.
+ 1 [ GoodWinSpr; ]
# Ответить
7. GoodWinSpr (файл скачал) 12.04.2012 13:58
если бы была на стандартной написана, доверял бы больше, если настройка реально работает + тебе!, буду тестить...
Ответили: (10)
# Ответить
8. serggo (файл скачал) 12.04.2012 15:06
Пока не сделал поиск ссылок на неправильный объект - изменять ссылки не хотела, так и задумано?
Ответили: (9)
# Ответить
9. nalivai-chai 12.04.2012 15:28
(8) serggo, да, так задумано. что бы совсем уж бездумно не действовать.
# Ответить
10. nalivai-chai 12.04.2012 15:30
(7) GoodWinSpr, ))) уж её тестил-перетестил где только возможно: и на самописных, и нетиповых, и всех возможных типовых конфигурациях. Обработка "боевая", всегда собой.
# Ответить
11. serggo (файл скачал) 12.04.2012 15:48
Отличная штука, плюсуем )
# Ответить
12. Magister (файл скачал) 27.04.2012 13:42
(2) Скачал, попробую. Именно то, что сейчас надо :)

Баг: если не указать ни одного ключевого поля - всё сохраняется, но при поиске получаем:
{Форма.Форма.Форма(725)}: Помилка при встановленні значення атрибуту контексту (Текст)
| " + МассивВСтрокуПоШаблону(МассивКлючевыхПолей, ",
через:
{(9, 2)}: Синтаксична помилка
<<?>>
# Ответить
13. DimanYa (файл скачал) 18.07.2012 09:16
При заменен значений в закрытом периоде, не выдаёт такое сообщение: "Редактирование данных этого периода запрещено. Изменения не могут быть записаны..."
Говорит, что замена выполнена успешна, но на самом деле ничего не произошло.
# Ответить
15. nalivai-chai 19.07.2012 16:36
Пожалуйста.
# Ответить
16. Darkid (файл скачал) 31.07.2012 21:44
{ВнешняяОбработка.ПоискЗаменаУдалениеДублейОбъектов.МодульОбъекта(369,3)}: Переменная не определена (РаботаСИндикаторомВыполнения)
<<?>>РаботаСИндикаторомВыполнения.УдалитьИндикатор(Свойства.Индикатор);


УПП 1.3.27.4
платформа 15.294
Ответили: (19)
# Ответить
17. son_v (файл скачал) 08.08.2012 12:14
Будем брать). Спасибо)
# Ответить
18. bitrostov 14.08.2012 15:57
Та же ошибка {ВнешняяОбработка.ПоискЗаменаУдалениеДублейОбъектов.МодульОбъекта(369,3)}: Переменная не определена (РаботаСИндикаторомВыполнения)
<<?>>РаботаСИндикаторомВыполнения.УдалитьИндикатор(Свойства.Индикатор);


Причем и на УПП, и на бухгалтерии 2.0. Платформа 8.2.15
Ответили: (19)
# Ответить
19. nalivai-chai 15.08.2012 19:44
(18) bitrostov, (16) Darkid, Исправлено.
# Ответить
20. V.Nikonov 16.08.2012 20:59
Плевался на штатные обработки поиска дубликатов при поиске дублей элементов (например, ДоговорКонтрагента) подчиненных другому справочнику...
Как решена подобная проблема у Вас?
Ответили: (21)
# Ответить
21. nalivai-chai 17.08.2012 08:32
(20) V.Nikonov, Просто. Поле "Владелец" должно быть в составе ключа.
# Ответить
22. EmpireSer (файл скачал) 30.08.2012 14:59
Обработка класс!
Но почему её нельзя настроить перед открытием из другой обработки?
# Ответить
23. alexko82 (файл скачал) 16.09.2012 19:37
У меня почему то не работает УТ11 обновлена до последней версии 1С:Предприятие 8.2 (8.2.16.362)
# Ответить
24. _Vovik (файл скачал) 09.11.2012 14:04
Еще не плохо бы сделать пометку на удаление всех не основных. А то когда много мусора - руками долго помечать.
Спасибо за обработку - очень помогла.
Ответили: (26)
# Ответить
25. DoctorRoza 12.12.2012 16:06
Нужно посмотреть :)
# Ответить
26. nalivai-chai 12.12.2012 16:39
(24) _Vovik,
Еще не плохо бы сделать пометку на удаление всех не основных. А то когда много мусора - руками долго помечать.

Реализовано с самого начала существования обработки: нужно в контекстное меню в дереве дублей открыть, там будет.
# Ответить
27. ta44ik 27.02.2013 04:56
Красивая штука) Реквизиты только в регистрах не меняет.. Типа корсубконто в партиях товарах бух учет. А так полный зачет)
# Ответить
28. alexin08 (файл скачал) 15.03.2013 16:14
Очень удобная штука однако!
# Ответить
29. Serge_ASB 18.03.2013 11:41
у меня задача:
есть справочник Оргтехники. как выяснилось, существуют дублирующиеся элементы, причем, дубляж идет по серийным номерам. Требуется проверить и вывести совпадающие серийники как "1-к-1", так и без эн последних знаков (как задано в форме обработки).
может решить подобное ваша обработка?
Ответили: (30)
# Ответить
30. nalivai-chai 19.03.2013 01:21
(29) Serge_ASB,
Сама обработка этого не может.
Но в ней есть функция типа "ВыполнитьЗаменуСсылок" (точное имя не помню), этой функции можно указать, данные которые нужно заменить "что на что".
# Ответить
31. s_uu (файл скачал) 10.04.2013 10:50
Добрый день. Очень нужная обработка! А можно ее выслать на s_uu@mail.ru. ?

Спасибо заранее
# Ответить
32. shoy (файл скачал) 03.10.2013 17:04
Стоящая обработка! Автор, пожалуйста, приведите допустимые действия в закладке "Обработчики"? Какие функции, кроме "ВыполнитьЗаменуСсылок", там можно вызывать? Как, к примеру, обратиться к объекту в котором нашлась ссылка искомого объекта? Благодарю.
# Ответить
33. shoy (файл скачал) 05.12.2013 11:34
по ДоговорамКонтрагентов возможны дубли (по владельцу,именам и номеру) с разными видами (Прочее, С Покупателем). Как можно назначить правильным договор с нужным нам видом, нр. "С покупателем"?
Также, как назначить проведение документов, где проводим замену чего-нибудь?
Ответили: (34)
# Ответить
34. nalivai-chai 05.12.2013 15:40
(33) shoy,

В настройках поиска дублей нужно заполнить отбор правильных элементов.
Добавить отбор по полю ВидДоговора = "С покупателем".
Вроде так должно работать.
# Ответить
35. Sasha255n (файл скачал) 14.01.2014 16:05
Так нужна но нужно посмотреть
# Ответить
36. Sasha255n (файл скачал) 14.01.2014 16:15
Я считаю очень нужная и актуальная обработка. Мне например пригодилась в случае когда надо было обновить справочник КПС в конфигурации БГУ.
# Ответить
37. Sasha255n (файл скачал) 14.01.2014 16:16
Я считаю очень нужная и актуальная обработка. Мне например пригодилась в случае когда надо было обновить справочник КПС в конфигурации БГУ. При обновление вылетала ошибка что существуют дубли с помощью данной обработки удалось устранить этот косяк. Автору большое спасибо.
# Ответить
38. Зеленоград 24.01.2014 14:44
Отличная обработка!

Обратной нет? Коллега свернул всех контрагентов с пустым ИНН, теперь думаю - как из архивной БД вытащить соответствия документ-правильный контрагент.
# Ответить
39. nalivai-chai 24.01.2014 17:16
Чудес не бывает, к сожалению((

Найти всех контрагентов с пустым ИНН в копии базы и все объекты в которых он используется. И выгрузкой загрузкой перенести из копии в базу.
# Ответить
40. Abbra 07.02.2014 15:39
лютый вин
# Ответить
41. rosinfoteh (файл скачал) 03.04.2014 22:07
1С: Предприятие 8.3 - НЕ РАБОТАЕТ. Народ автор врет открытым текстом.
Ответили: (42)
# Ответить
42. nalivai-chai 04.04.2014 07:26
(41) rosinfoteh, аккуратней со словами, уже сомневаюсь в адекватности их автора.

Что "НЕ РАБОТАЕТ", на каком основании? (можно скрин кинуть, например)

Если открыл в управляемом интерфейсе и увидел пустую форму, то флаг тебе в руки, обработка работает только в "обычном приложении".

Когда у 75 человек работает, а у одного нет... Напоминает: если седьмой муж бьет жене по роже, значит дело не в муже, а в роже.
+ 1 [ markela; ]
# Ответить
43. cleose 14.04.2014 22:04
Большое спасибо, обработка пригодилась при переходе с 1с 7.7 на 1с 8.3.
# Ответить
44. tisas77 14.04.2014 22:21
Нужная и полезная штука
+ 1 [ 128821; ]
# Ответить
45. gortol (файл скачал) 20.08.2014 12:04
одна из немногих и очень нужных обработок, мне помогла!!!!

а для толстого (обычного приложения) просто незаменимая обработка, может если руки дойдут я её перепилю на тонкого клиента

PS Ошибка была в конфиге, а не в обработке так что обработка суперская

PPS кстати начал переписывать на управляемые формы, что то стало получаться ))), скоро релиз
Ответили: (46)
# Ответить
46. nalivai-chai 20.08.2014 12:57
(45) gortol, либо ваша УТ11 криво дописана; или, разработчики УТ11 (или БСП) уже не рассчитывают на то, что их конфигурация может быть запущена в толстом клиенте. Ищи в обработчике "Перед записью" регистра сведений "Соответствие объектов информационных баз".

Я посмотрел в БП 3.0 (что под рукой), там нет никаких экстремальных вызовов.

Можешь кинуть код обработчика, если есть сложности, попробую определить источник ошибки.
Ответили: (48)
# Ответить
47. Kamikadze 22.08.2014 11:07
не доверяю я таким разработкам - все в одному.
# Ответить
48. gortol (файл скачал) 22.08.2014 13:02
(46) nalivai-chai, всё норм с обработкой, это в конфиге косяк был, обработка работает как надо, спасибо ВАМ!!
# Ответить
49. shoy (файл скачал) 22.08.2014 16:57
Обработкой этой много чего делал. Жаль что на УФ её нет!
Автор, Андрей Андреич, дарагой! А может стоит уже попробовать перенести на УФ? А?
Ответили: (50)
# Ответить
50. nalivai-chai 22.08.2014 18:29
(49) shoy, ))) думаю все, но со временем туго.
Да и потребности в этом никак не возникает. Обычно достаточно запустить конфигурацию в обычном приложении.
# Ответить
51. lsd_777 (файл скачал) 06.10.2014 11:08
Скачал последнюю версию, запускаю на УТ11.1 уф, и че то непойму, там замена ссылок только, а где поиск дублей? Или в толстом надо запускать, что бы другая форма открылась?
Ответили: (52)
# Ответить
52. nalivai-chai 06.10.2014 11:31
(51) lsd_777, на управляемом только замена. До писка дублей пока руки не дошли.
# Ответить
53. lsd_777 (файл скачал) 08.10.2014 17:14
не врубаюсь, ссылки находит, пишет, что заменил, по новой поиск делаю, все по старому! Так же попадаются места, где ругается на нарушение прав, хотя работаю под полными, конф. УТ11.1.7.67
Ответили: (54) (61)
# Ответить
54. nalivai-chai 08.10.2014 17:29
(53) lsd_777, можешь письмо написать со скринами шагов, которые делаешь. (kaabass@mail.ru)
Ответили: (55)
# Ответить
55. lsd_777 (файл скачал) 08.10.2014 18:14
(54) nalivai-chai, Отправил
Ответили: (60)
# Ответить
56. gull22 (файл скачал) 24.10.2014 10:59
Открыл в УФ, никакого упоминания о дублях, кроме как упоминание в справке. Скриншот прилагаю
Ответили: (60)

Прикрепленные файлы:

ПоискДублей.GIF
# Ответить
57. lsd_777 (файл скачал) 30.10.2014 08:58
Автор так и не ответил по моей проблеме!
# Ответить
58. yc_2011 (файл скачал) 05.11.2014 07:28
Что-то у меня единицы измерения не поменяла (УФ). Там общий алгоритм или учитывает структуру типовых конфигураций?
Ответили: (60)
# Ответить
59. yc_2011 (файл скачал) 05.11.2014 07:29
Документы при замене перепроводяться?
Ответили: (60)
# Ответить
60. nalivai-chai 01.12.2014 16:13
(55) lsd_777, извини. Попробую сегодня на УТ 11.1 поиграться.
(56) gull22, поиск дублей только в обычном приложении(.
(58) yc_2011, нет привязки к какой-то конкретной конфигурации.
(59) yc_2011, документы при замене не перепроводятся.
# Ответить
61. nalivai-chai 01.12.2014 22:50
(53) lsd_777, то, что не выполнялась до конца замена, скорее всего связано с заменами в последовательностях, вопрос решен в версии 2.3.1.3. Проверял на УТ 11.1.9, столкнулся с такой же проблемой.
# Ответить
62. lsd_777 (файл скачал) 24.01.2015 10:30
Ошибка при замене ссылок: При записи объекта в базу данных
Объект метаданных: Реализация товаров услуг
Объект: Реализация товаров и услуг ЦСУТ-000012 от 05.09.2014 9:30:18
Описание ошибки: {ВнешняяОбработка.ПоискЗаменаУдалениеДублейОбъектов.МодульОбъекта(1270)}: Ошибка при вызове метода контекста (Записать)
НаборЗаписей.Записать();
по причине:
Нарушение прав доступа!

Ничего не изменилось!
# Ответить
63. @Sonya (файл скачал) 04.03.2015 17:15
Спасибо большое за полезную обработку, особенно актуально для УФ.
# Ответить
64. sergey0703 (файл скачал) 06.07.2015 13:17
Здравствуйте, находит ли данная обработка дубли по "Дополнительным реквизитам и сведениям"?
Ответили: (65)
# Ответить
65. nalivai-chai 06.07.2015 17:27
(64) sergey0703, нет.
# Ответить
66. sergey0703 (файл скачал) 08.07.2015 11:19
Сегодня скачал Вашу обработку за стартмани, все красиво-весь заявленный функционал работает, спасибо. Однако должен заметить что если бы еще осуществлялся поиск дублей по "Дополнительным свойствам объектов" в 1С8.2 или по "Дополнительным реквизитам и сведениям" в 1С8.3 -то обработка была бы максимально востребованной.
# Ответить
67. valafan (файл скачал) 11.08.2015 02:45
Спасибо, очень помогла обработка. Неплохо бы включить Режим загрузки данных (ОбменДанными.Загрузка.Истина) и для установки пометки на удаление.
# Ответить
Внимание! За постинг в данном форуме $m не начисляются.
Внимание! Для написания сообщения необходимо авторизоваться
Текст сообщения*
Прикрепить файл