Для чего создавалась:
На этапе внедрения самописной конфигурации пользователи назаносили в ключевые справочники много дублей. Потом этот вопрос был частично решен как технически так и административно, но наводить порядок было надо. Самым простым решением было бы воспользоваться типовой «Поиск и замена значений», но конфигурация самописная, без БСП, поэтому от этой идеи пришлось отказаться. Было опробовано несколько разработок с ИС, но это либо были модификации типовой, которые тоже соответственно требовали БСП, либо просто «не взлетало» по каким-то другим причинам. Пришлось создавать свой механизм.
Особенности и нюансы:
1. Нужно было искать только ссылки на справочники только в документах и справочниках.
2. Система поиска дублей должна была быть организованна в следующем режиме: Вручную выбирается «правильный» элемент и уже от него ищутся элементы-дубли, ссылки которых должны заменятся ссылкой на «правильный» элемент.
Как это работает:
1. Выбираем «правильный» элемент. Нажимаем кнопку «Найти подобные». Система ищет по наименованию, в настройках есть возможность задавать процент от наименования для поиска (проще говоря ,обрезать правую часть, создавая поисковый запрос).
2. Заполняется таблица ссылок по которым будет идти поиск, и которые будем заменять. Ее можно заполнить и в ручную.
3. В настройках указываем нужно ли:
- Перепроводить документ, если меняем ссылку в нем.
- Помечать на удаление элементы, которые мы заменили.
4. Нажимаем «Поиск ссылок» .
5. Просматриваем таблицу найденных объектов, в которых будем менять ссылки.
6. Выполняем «Заменить ссылки».
Как это работает изнутри:
1. Ищем ссылки через НайтиПоСсылкам() и получаем ТЗ с объектами, в которых содержаться искомые ссылки. При этом не ограничиваем поиск только документами и справочниками, это сделано специально чтобы в таблице результатов иметь полную картину, для контроля.
2. Найденное разделяем по типам – Документ или Справочник.
3. Выгружаем объект в XML – меняем ссылки – загружаем обратно – Записываем/перепроводим.
4. Поиск подобных элементов для таблицы поиска и замены подбираем запросом к справочнику, из которого выбран «правильный» элемент, через оператор «Подобно».
Заключение:
Обработку нельзя назвать универсальным инструментом, создать замену типовому «Поиску и замене значений» никто даже задачи не ставил. Это небольшой, удобный инструмент для простого решения конкретных задач. Больше даже пример, заготовка. Адекватную и обоснованную критику, вопросы и предложения, с удовольствием выслушаю в комментариях. Если нужно помочь доработать под ваши задачи – тоже добро пожаловать в комментарии. Публикация, по сути своей является логичным завершением обсуждения на форуме: https://forum.infostart.ru/forum9/topic239959/