Обработка для восстановления из резервной копии базы удаленных (без проверки ссылок) или потерянных объектов (1С 8.1, 8.2).


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

Суть работы в том, что после тестирования поврежденной базы теряются некоторые объекты и в регистрах (или в документах, справочниках и др.) образуются строки с записями типа "(216:83120025225c84d211e080e2d2bd38d0)". Эти записи, конечно, можно удалить тестированием, поставив опции "удалять объекты" и "очищать ссылки", но тогда из учета окончательно потеряются изменения, внесенные этими объектами, а это опасно. Часто это объекты, которые существуют в ИБ давно, и они есть в старых копиях ИБ. Обработка сделана т.о., что можно ее запустить в оттестированной базе, вставить в первое текстовое окно протокол тестирования, который был в конфигураторе в служебных сообщениях, она выберет ГУИД'ы потерянных объектов. Далее нужно указать ей путь к старой копии базы, в которой не было этих ошибок, она попытается найти там эти потерянные объекты и найденные перенесет в рабочую базу, чтоб восстановить ссылочную целостность ИБ.

После поиска список нигде не найденных объектов возвращается кнопкой "

 

Замечание при работе:

Если объект при переносе в текущую базу не может записаться (например, в копии этот объект был с незаполненными обязательными полями), то после того как он найдется, обработка откроет основную форму объекта для ручной корректировки. Еще бывают случаи, когда в тестировании появляются сообщения, которые не содержат информации по потерянному объекту, например, "Объект, на который ссылается значение, отсутствует", соответственно не понятно, что искать в копии. Для решения этой проблемы открываем указанный в протоколе тестирования объект (документ, регистр и др.) и копируем оттуда через буфер обмена строку "". Если потерянных объектов много (например, в регистрах или табличных частях документов), то можно правой кнопкой -> вывести в список -> и потом в списке выделить все, скопировать, затем вставить в первое поле обработки и кнопкой ">" выбрать все ГУИДы.

 

С помощью этой простенькой обработки удавалось восстанавливать, казалось бы, совсем убитые базы, главное чтоб было побольше копий.

Не забывайте эксперименты проводить на копии! И вообще чаще их делать! Удачи!

P.S. cпасибо Spacer за подсказку касаемо оптимизации скорости поиска. Поэтому добавил фильтр по объектам поиска,теперь, если примерно известно какого типа объект, поиск будет идти быстрее. Также возможность отключать поиск в текущей ИБ, тоже для ускорения. В результирующей таблице теперь можно после восстановления сразу открывать найденные объекты двойным щелчком в последнем столбце "Объект".

Файлы обработки:

-