Поиск и замена ссылок через SQL (для справочников)

Публикация № 1027175

Администрирование - Поиск данных

поиск замена ссылок ссылки ссылка запрос SQL _RRRef _RTRef _RRef таблицы таблица хранение уникальный идентификатор итоги справочник документ регистр

5
Обработка генерирует запросы на языке запросов SQL (для справочников). По структуре БД формируется выборка таблиц хранения с полями только по тем объектам, реквизиты которых имеют тип заменяемого значения. Поиск записей в таблицах с полями составного типа осуществляется не только по идентификатору ссылки _RRRef , но и с учетом типа ссылки _RTRef.

Обработка, в отличие от аналогов, позволяет выполнять замену ссылок даже в том случае, когда значение ссылки _RRef не является уникальным для базы и имеются записи с _IDRRef с таким значением в нескольких различных таблицах БД.

Пример: база ERP синхронизируется с базой Управления перевозками, и в результате обмена (согласно правилам обмена) в ERP создаются элементы справочников Контрагенты и Партнеры с одинаковыми уникальными идентификаторами. Причина в том, что в базе Управления перевозками нет Партнеров, и было принято решение записывать новые элементы с УИД = УИД Контрагента. Но спустя время возникла потребность объединить нескольких контрагентов под одним партнером, с полной заменой ссылок во всех уже имеющихся документах и аналитиках без перепроведения. Воспользоваться поиском значения _RRef по всем таблицам с последующей заменой - неверно, поскольку там, где в поле хранится тип Контрагент, _RRef менять нельзя.

 

Данная обработка работает по следующему алгоритму:

1. Получает все метаданные, у которых в состав входит поле с типом, как у заменяемого объекта. Просматриваются реквизиты объектов метаданных, владельцы  (для справочников), табличные части ("Дополнительные реквизиты" можно отключать), измерения и ресурсы (для регистров).

Далее по найденным объектам метаданных запрашивается структура хранения БД и выбираются имена таблиц и поля.

Полученная в результате таблица с именами таблиц хранения и полей БД выводится на форму. Поля составного типа помечаются галкой в результирующей таблице. Можно дополнительно проанализировать, в каких объектах будет произведена замена. Если по каким-либо объектам замена не требуется, можно удалить строки из табличной части.

2. Получает _IDRRef ссылок объектов которого заменяем и на который заменяем.

3. Строит запрос SQL для выборки записей по указанным в табличной части таблицам и полям хранения.

4. Строит запрос SQL для обновления записей в таблицах хранения по указанным в табличной части полям. Обработаются только записи, в которых нужные поля хранят значения заменяемого типа.

 

Примечание: Если была отредактирована табличная часть, необходимо сгенерировать текст запроса выборки и замены заново, нажав соответствующие кнопки.

 

После того, как сформировались тексты запросов, можно их скопировать и вставить в запрос к базе в SQL ManagmentStudio.

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

 

Обработка тестировалась на релизах платформы 8.3.9.2170, 8.3.12.1714.

5

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

Наименование Файл Версия Размер
Поиск и замена ссылок через SQL (для справочников)
.epf 10,33Kb
25.03.19
1
.epf 10,33Kb 1 Скачать

См. также

Специальные предложения

Избранное Подписка Сортировка: Древо
В этой теме еще нет сообщений.
Оставьте свое сообщение