Частенько, как и многие другие, сталкиваюсь с ошибкой: «Проверка уникальности внутреннего идентификатора в справочнике. ….. Исправить вручную». Надоело исправлять вручную, написал универсальную обработку для исправления сей ошибки в полуавтоматическом режиме. Работа обработки протестирована на платформе 1С v 7.7 релиз 027. Думаю, должна работать и на более ранних, т.к. никаких необычных операторов не используется.
Алгоритм работы прост:
- Обработка ищет в выбранном справочнике сбойные элементы по признаку «одинаковые наименования и код». Тут в алгоритме поиска есть небольшая хитрость: производится сразу поиск дублей по наименованию, а затем среди них по коду. Это сделано для автоматического выбора «несбойного» элемента для замены. В результате в левой части таблицы отображаются найденные сбойные элементы, в правой найденные автоматически элементы для замены сбойных.
- Теперь есть два варианта. Можно нажать кнопку «Автоматическое создание копий», и будут созданы копии сбойных элементов. Если отмечен флажок «Не создавать, если нет ссылок», то для элементов, которые нигде не используются, копии создаваться не будут. Второй вариант: все эти действия можно сделать вручную дважды кликнув по полю «На что меняем» в нужной строке.
- Жмем «Пометить на удаление». Все выбранные сбойные элементы будут помечены на удаление. («Пометку» можно включить/выключить двойным кликом).
- Жмем «Заменить». Содержимое таблички отправляется в известную обработку «ReplVal”, где и производим конкретно замену сбойных элементов справочника на не сбойные.
- Закрываем обработку (как и остальные открытые окна в программе) и запускаем в меню «Операции» удаление помеченных объектов.
Все ошибки устранены.
Примечания.
- Обработка не будет правильно работать для справочников с отключенным контролем уникальности.
- При автоматическом создании копий элементов не обрабатываются периодические реквизиты справочника и реквизиты с подчиненными элементами справочника. (Это в дальнейшем может допилю, а пока тут придется обходиться ручным созданием копий)