Поиск и восстановление битых ссылок (объект не найден)


Часто после повреждений информационной базы теряются некоторые объекты и остаются только "битые" ссылки на них, имеющие примерно такой вид: "<Объект не найден> (77:805f000c291e652311e0ad237dea6181)".
Данная обработка позволяет найти такие ссылки и восстановить их в автоматическом режиме (при наличии копии информационной базы).

Битые ссылки появляются в базе как правило после непосредственного удаления объектов (без контроля ссылок на них).

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

(
77:805f000c291e652311e0ad237dea6181)

Такие ссылки могут возникать:

1. В результате действий пользователей имеющих право непосредственного удаления объектов, без пометки на удаление и контроля ссылочной целостности перед удалением. Поэтому такие права у пользователей желательно забрать;

2. При выполнении обработки некорректно удаляющей объекты;

3. При выполнении обмена между информационными базами в варианте РИБ или обмен по правилам обмена между отличающимися базами.

Бывает так, что пользователь в одной базе участвующей в обмене, вполне корректно удалил объект т.к. ссылок на него в этой базе не было. Информация об удалении объекта передается в другую базу, где на него есть ссылки. В типовых конфигурациях объект при этом удаляется непосредственно, и возникают "битые" ссылки. Как пример - процедура УдалитьОбъектПоСсылке() в модуле обработки ОбменДаннымиXML. В конце этой процедуры вызывается процедура УдалитьОбъект(Объект, Истина). Вторым параметром в этой процедуре является признак непосредственного удаления объекта. Необходимо заменить его на Ложь;

Битые ссылки можно обнаружить при выполнении тестирования и исправления, включив опцию "Проверка ссылочной целостности информационной базы". А также их можно увидеть при работе с базой в режиме 1С:Предприятие, открыв форму объекта содержащего в одном из реквизитов "битую" ссылку.

Как с этим бороться?. Ну во первых ограничить права пользователей на непосредственное удаление объектов и поправить проблемные участки кода в конфигурации создающие предпосылки для возникновения таких ссылок. А также не забывать делать архивные копии базы.

Эти записи, конечно, можно исправить при тестировании, поставив опцию "Создавать объекты" или "Очищать ссылки". В таком случае мы избавимся от битых ссылок, но это не поможет нам восстановить исходное состояние базы. Тогда из учета окончательно потеряются изменения, внесенные этими объектами, а это опасно.

Если имеется достаточно свежая архивная копия базы, то можно попробовать восстановить эти ссылки.

Для этих целей в интернете можно найти достаточно много обработок.

Например вот эта: http://help1c.com/faq/view/1128.html "Поиск в базе битых ссылок - "объект не найден", которая позволяет найти битые ссылки в режиме 1С:Предприятия, без запуска конфигуратора 1С и выполнения "тестирования и справления".

Найти удаленный объект в архивной копии базы можно при помощи этой обработки: http://help1c.com/faq/view/483.html

Таким образом, мы можем вручную восстановить "битые" ссылки по архивной копии. При этом важно чтобы вновь созданный объект имел такой же уникальный идентификатор (GUID), каким он был раньше. Для этого можно воспользоваться например этой обработкой: http://avprog.ru/public/14655/

Однако, заниматься этим вручную - это утомительная и малопроизводительная трата времени. Гораздо эффективнее поручить эту работу самой же 1С.

На Инфостарте уже публиковались обработки позволяющие сделать это автоматически.

Например вот эта обработка: http://avprog.ru/public/91438/

И хотя цели у моей и этой обработки одинаковые - восстановление "битых" ссылок по архивной копии, подход к решению этих целей у нас разный.

Основное отличие моей обработки состоит в следующем:

Не используется протокол тестирования полученный в конфигураторе. Битые ссылки ищутся непосредственно в режиме 1С:Предприятия. При этом можно ограничивать поиск определенным типом объектов, например искать только ссылки с типом "Справочник.ДоговорыКонтрагентов".

Для удобства подключения к архивной копии базы использована обработка http://avprog.ru/public/16628/ которая позволяет выбирать нужную базу из списка аналогичного списку баз 1С и подключаться к ней.

Несмотря на наличие подобных обработок на Инфостарте, возможно эта покажется кому-то более удобной в использовании.

Вовремя сделанная архивная копия может избавить вас от многих проблем. Удачи!

 

P.S. Добавлена версия портированная на управляемые формы - файл Poisk Objekt ne najden_82UF.epf

Обработка включает как обычные, так и управляемые формы.

Портирование обработки выполнено Андреем Торопчиным.

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

-