Обработка предназначена для поиска и удаления дублей элементов справочника "КлючиРеестраДокументов" с одновременным контролем и восстановлением записей регистра сведений «РеестрДокументов» по связанным документам.

Что делает обработка
-
Находит все ключи из справочника «КлючиРеестраДокументов», которые встречаются больше одного раза (дублирующие ключи).
-
Для каждого ключа выбирает один «оставающийся» объект, остальные экземпляры этого ключа помечает как удаляемые и удаляет их.
-
Проверяет, какие документы в регистре «РеестрДокументов» при этом потеряют записи по старым ключам, и перезаписывает регистр для таких документов.
Логика поиска дублей
-
Функция
ДублирующиеКлючи(Истина)строит временную таблицу ВТДубли с ключами, гдеСУММА(1) > 1. -
Далее по этим ключам выбираются все записи справочника «КлючиРеестраДокументов» (поле Ссылка + Ключ), результат возвращается с итогами по Ключу.
-
В
УдалитьДублиНаСерверерезультат обходится по группировкам по Ключу: первая ссылка в группе считается основной, остальные собираются в массив «УдаляемыеКлючи».
Как обрабатываются регистр и документы
-
Перед удалением дублей формируется запрос
ТекстЗапросаПропадающихЗаписейРеестра, который для каждого документа в регистре «РеестрДокументов» определяет, останется ли хотя бы одна запись с «остающимся» ключом или записи есть только по удаляемым ключам. -
Для каждого ключа:
-
Дублирующиеся элементы справочника по этому ключу загружаются как объекты и удаляются с флагом
ОбменДанными.Загрузка = Истина(служебный режим, обычно для массовых изменений/обновления). -
По документам, у которых записи «пропали» (ЗаписьОстается = Ложь), выполняется инициализация и перезапись данных в регистре вызовом
РеестрДокументов.ИнициализироватьИЗаписатьДанныеДокумента. -
Если обработка запущена в режиме обновления ИБ (
ЭтоОбновлениеИБ = Истина), документы помечаются в механизме обновления как обработанные и, при необходимости, ставятся в очередь отложенных обработчиков.
-
Для чего использовать
-
Для чистки служебного справочника ключей реестра документов после сбоев, неверных миграций или обновлений, когда по одному и тому же ключу создаётся несколько элементов.
-
Для восстановления целостности регистра «РеестрДокументов»: чтобы документы, связанные с удаляемыми ключами, получили корректные записи по оставшемуся ключу.
-
Для безопасного обслуживания/обновления базы, когда важно убрать дубли служебных ключей и не потерять данные регистра.
Проверено на следующих конфигурациях и релизах:
- 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.11.392
- Управление торговлей, редакция 11, релизы 11.5.25.85
Вступайте в нашу телеграмм-группу Инфостарт
