Замена дублей средствами SQL (MS SQL, УФ, 8.2, 8.3)

Администрирование - Чистка базы

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

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

Если нужны замены других видов объектов, необходимо раскомментировать соответствующие строки в процедуре ПриСозданииНаСервере в форме ВыборВидаОбъекта справочника зд_ЗаменаДублей. В этом случае Вы должны быть уверены, что ссылок на заменяемые элементы нет в других таблицах, кроме перечисленных ниже.

Замена выполняется:

  • во всех основных таблицах 1С (справочники, документы, регистры, константы, ...).
  • в виртуальных таблицах итогов и оборотов регистров накопления.
  • в таблицах "значения субконто" и "итоги по счетам с субконто" регистров бухгалтерии.
  • в виртуальных таблицах "итоги срез первых/последних" регистров сведений.
  • в виртуальных таблицах Перерасчет регистра расчета.

В составе cf включена универсальная обработка "поиска ссылок на объекты SQL" из этой публикации //infostart.ru/public/446929/ 

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

Установка

При сравнении и объединении с cf необходимо убрать галку у свойств конфигурации.

Если в вашей базе уже есть настройки подключения к MS SQL, константу переносить не надо. Настройки подключения к серверу SQL необходимо указать в функции ПолучитьНастройкиСоединения() модуля менеджера справочника зд_ЗаменаДублей.

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

Настройка подключения к SQL

Если в вашей базе нет настроек подключения к MS SQL и константу из cf перенесли, то в форме списка справочника зд_ЗаменаДублей будет доступна кнопка "Настройка подключения". В открывшейся форме необходимо указать сервер SLQ, имя базы и настройки аутентификации.

 Настройка подключения к MS SQL

Использование

Для выполнения замены необходимо добавить новый элемент справочника "Замена дублей".

  • В типе объекта необходимо указать вид метаданных, для которых будет выполняться замена.
  • Основной элемент - ссылка на элемент справочника, на которую будут заменяться ссылки на дубли.
  • Таблица дублей - необходимо указать список дублей "основного элемента".

Элемент справочника "Замена дублей"

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

Из элемента справочника "Замена дублей" можно выполнить поиск ссылок на основной элемент и дубли из подменю "Поиск ссылок на".

Просмотр результата

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

 История выполнения замены

В табличной части "выполненные запросы" отображаются все таблицы, для которых выполнялся запрос замены. При выборе любой строки таблицы отображается:

  • Выполняемый текст запроса и текст ошибки, если при выполнении она возникла.
  • Время запуска запроса и время окончания.
  • В колонке "Обработано записей" отображается количество строк таблицы, в которых была выполнена замена значений.
  • В колонке "ош" отображается галка, если были ошибки при выполнении запроса.
  • Строка таблицы подсвечивается зеленым, если были замены и красным, если были ошибки.
На картинке результата видно что замена дубля валюты выполнилось в 3 140 844 строках таблиц за 27 секунд. При этом было выполнено более 500 запросов.

Дополнительно

Если у вас распределенная база, выполненные изменения не зарегистрируются в обмен с другими базами.

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

Наименование Файл Версия Размер
Dubli_new.cf
.cf 81,39Kb
29.01.16
26
.cf 81,39Kb 26 Скачать

См. также

Комментарии
1. Вадим Никонов (V.Nikonov) 114 04.02.16 18:20 Сейчас в теме
Для распределенок нужен Справочник или Регистр сведений с описанием Замен. Этот Справочник или РегистрСведений должен реплицироваться перед проведением замен в текущей базе. На основе Справочника или РегистраСведений можно инициировать синхронные замены...
2. Вадим Никонов (V.Nikonov) 114 04.02.16 18:21 Сейчас в теме
Вот только прямое обращение к SQL = нарушение Лицензионного соглашения с 1С. Выполняется на "свой страх и риск".
3. Виталий Кривенко (v.krivenko) 14 05.02.16 10:06 Сейчас в теме
(1) V.Nikonov,
Разработка и есть справочник. Для распределенки его надо включить в обмен и выполнить замену в каждой базе.
4. Алексей Голосеев (Aleksey81) 407 15.03.16 19:29 Сейчас в теме
Хорошая обработка, но без исправления досадной ошибки использовать ее нельзя.
Вы несколько раз применили корректное присвоение
НоваяСтрока.СтруктураТипОбъекта = Новый Структура;
Для Каждого КлючИЗначение Из СтруктураТипОбъекта Цикл
НоваяСтрока.СтруктураТипОбъекта.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение);
КонецЦикла;

но один раз оставили НЕКОРРЕКТНОЕ
НоваяСтрока.СтруктураТипОбъекта = СтруктураТипОбъекта;

Из за чего не могут обрабатываться константы....
Пожалуйста исправьте.
5. Виталий Кривенко (v.krivenko) 14 15.03.16 21:03 Сейчас в теме
(4) Aleksey81, это единственное место, где на каждую добавленную НоваяСтрока создается отдельная структура СтруктураТипОбъекта поэтому она присваевается.

У Вас в константе значение не поменялось?
Оставьте свое сообщение