Замена дублей партнеров УТ 11.4
У клиента было заведено много дублей партнеров с одинаковыми телефонами.
Они возникли из-за сбоя обмена с сайтом — клиенты искались не по телефону, а по другим полям, в итоге не сопоставлялись и плодились.
Позже обмен с сайтом был исправлен, но в базе появилось много дублей покупателей.
Решено было сделать свертку дублей.
При этом, слава богу, используется настройка УТ, что контрагент соотносится с партнером 1:1.
Я завел у справочника партнеров поле дор_КлючДляСвертки и в него записал телефон партнера
Затем сделал копию базы.
Запустил поиск дублей:
Отсортировал дубли по количеству:
Некоторые дубли удали из замены, например, те, где не был указан телефон или телефон был неправдоподобный, сокращенный.
Запустил автоматическое определение правильных элементов. И потом выполнил замену дублей.
Но этого мало. Ведь теперь контрагенты этих партнеров встали на одного партнера. Нужно делать замену дублей контрагентов по партнеру:
Опять отсортировал по количеству дублей, убрал пустых контрагентов и сомнительных:
Выполнил замену дублей.
Далее запустил удаление помеченных объектов, чтобы дубли физически удалились:
Большая часть контрагентов и партнеров удалилось, осталось около 10 партнеров и контрагентов, их список выслал контрагенту для сверки по ним взаиморасчетов. Некоторые из них застряли в ключах аналитики по партиям.
UPD 2024-04-10: после замены рекомендую сделать замену дублей ключей реестра документов, а то у меня в журналах закупки и продажи были дубли:
UPD 2024-05-07: Доработал чтобы ключ был в однотипном формате — убрал лишние символы. Так нашлось еще больше дублей.
&НаСервере Процедура ВнестиТелефоныВКлючПартнераНаСервере() Для Каждого Строка ИЗ ТабТелефонныхНомеров Цикл ТекТелефон = Строка.Представление; ТекТелефон = СтрЗаменить(ТекТелефон, " ", ""); ТекТелефон = СтрЗаменить(ТекТелефон, "+7", "8"); ТекТелефон = СтрЗаменить(ТекТелефон, "(", ""); ТекТелефон = СтрЗаменить(ТекТелефон, ")", ""); ТекТелефон = СтрЗаменить(ТекТелефон, "-", ""); Строка.Представление = ТекТелефон; Если НЕ ЗначениеЗаполнено(ТекТелефон) Тогда Продолжить; КонецЕсли; ОО = Строка.Партнер.ПолучитьОбъект(); ПрисвоитьБезопасно(ОО.дор_КлючДляСвертки, ТекТелефон); Если ОО.Модифицированность() Тогда ОО.ОбменДанными.Загрузка = истина; ОО.Записать(); КонецЕсли; КонецЦикла; КонецПроцедуры
Среда: УТ 11.4.13.46 Объем: 2 час.
Свежие комментарии