gifts2017

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

Опубликовал Андрей Андреевич (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.

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

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

 

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

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

См. также

Вознаграждение за ответ
Сумма: 0 $m
Добавили:
Tolik (gortol) (10.00 $m)
Подписаться Добавить вознаграждение

Комментарии

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

Когда у 75 человек работает, а у одного нет... Напоминает: если седьмой муж бьет жене по роже, значит дело не в муже, а в роже.
43. cleose (Лена_Лена) 14.04.14 22:04
Большое спасибо, обработка пригодилась при переходе с 1с 7.7 на 1с 8.3.
44. tisa tisas (tisas77) 14.04.14 22:21
Нужная и полезная штука
45. Tolik (gortol) 20.08.14 12:04
одна из немногих и очень нужных обработок, мне помогла!!!!

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

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

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

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

Можешь кинуть код обработчика, если есть сложности, попробую определить источник ошибки.
47. Игорь Дзеса (Kamikadze) 22.08.14 11:07
не доверяю я таким разработкам - все в одному.
48. Tolik (gortol) 22.08.14 13:02
(46) nalivai-chai, всё норм с обработкой, это в конфиге косяк был, обработка работает как надо, спасибо ВАМ!!
49. shoy Андрей ais (shoy) 22.08.14 16:57
Обработкой этой много чего делал. Жаль что на УФ её нет!
Автор, Андрей Андреич, дарагой! А может стоит уже попробовать перенести на УФ? А?
50. Андрей Андреевич (nalivai-chai) 22.08.14 18:29
(49) shoy, ))) думаю все, но со временем туго.
Да и потребности в этом никак не возникает. Обычно достаточно запустить конфигурацию в обычном приложении.
51. Andrey ivanov (lsd_777) 06.10.14 11:08
Скачал последнюю версию, запускаю на УТ11.1 уф, и че то непойму, там замена ссылок только, а где поиск дублей? Или в толстом надо запускать, что бы другая форма открылась?
52. Андрей Андреевич (nalivai-chai) 06.10.14 11:31
(51) lsd_777, на управляемом только замена. До писка дублей пока руки не дошли.
53. Andrey ivanov (lsd_777) 08.10.14 17:14
не врубаюсь, ссылки находит, пишет, что заменил, по новой поиск делаю, все по старому! Так же попадаются места, где ругается на нарушение прав, хотя работаю под полными, конф. УТ11.1.7.67
54. Андрей Андреевич (nalivai-chai) 08.10.14 17:29
(53) lsd_777, можешь письмо написать со скринами шагов, которые делаешь. (kaabass@mail.ru)
55. Andrey ivanov (lsd_777) 08.10.14 18:14
56. юрий гулидов (gull22) 24.10.14 10:59
Открыл в УФ, никакого упоминания о дублях, кроме как упоминание в справке. Скриншот прилагаю
Прикрепленные файлы:
57. Andrey ivanov (lsd_777) 30.10.14 08:58
Автор так и не ответил по моей проблеме!
58. Андрей Зидорофф (yc_2011) 05.11.14 07:28
Что-то у меня единицы измерения не поменяла (УФ). Там общий алгоритм или учитывает структуру типовых конфигураций?
59. Андрей Зидорофф (yc_2011) 05.11.14 07:29
Документы при замене перепроводяться?
60. Андрей Андреевич (nalivai-chai) 01.12.14 16:13
(55) lsd_777, извини. Попробую сегодня на УТ 11.1 поиграться.
(56) gull22, поиск дублей только в обычном приложении(.
(58) yc_2011, нет привязки к какой-то конкретной конфигурации.
(59) yc_2011, документы при замене не перепроводятся.
61. Андрей Андреевич (nalivai-chai) 01.12.14 22:50
(53) lsd_777, то, что не выполнялась до конца замена, скорее всего связано с заменами в последовательностях, вопрос решен в версии 2.3.1.3. Проверял на УТ 11.1.9, столкнулся с такой же проблемой.
62. Andrey ivanov (lsd_777) 24.01.15 10:30
Ошибка при замене ссылок: При записи объекта в базу данных
Объект метаданных: Реализация товаров услуг
Объект: Реализация товаров и услуг ЦСУТ-000012 от 05.09.2014 9:30:18
Описание ошибки: {ВнешняяОбработка.ПоискЗаменаУдалениеДублейОбъектов.МодульОбъекта(1270)}: Ошибка при вызове метода контекста (Записать)
НаборЗаписей.Записать();
по причине:
Нарушение прав доступа!

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