← На главную
В практике работы с платформой 1С 7.7 иногда возникает ситуация, когда пользователь или программист выполняет прямое (непосредственное) удаление документов с помощью специализированных обработок в обход штатного механизма контроля ссылочной целостности. В результате в базе данных остаются подчинённые документы, движения по регистрам и проводки, ссылающиеся на несуществующие объекты. Это приводит к появлению ссылок вида Объект не найден, расхождению бухгалтерских итогов, появлению отрицательного сальдо и сбоям при закрытии периода.
Рассмотрим подробнее, почему возникают такие ошибки и какими техническими способами можно восстановить удаленные объекты и вернуть целостность информационной базе.
Причины возникновения проблемы и влияние на базу данных
Проанализируем техническую суть проблемы. Когда объект удаляется штатным методом через процедуру пометки на удаление и последующее удаление помеченных объектов, система предварительно проверяет все ссылки на данный объект. Если на документ ссылаются другие записи, платформа блокирует удаление.
При использовании прямого удаления (например, программным методом или через прямое редактирование таблиц) проверка целостности обходится. В результате:
- В подчинённых документах и регистрах остаются записи, содержащие уникальный идентификатор ( Base36 ID в 1С 7.7) удаленного документа.
- Нарушается связь между документами поступления, списания и передачи в производство (ТМЦ, спецодежда, МБП).
- Система теряет возможность корректно списать себестоимость и сформировать партионный учет, из-за чего возникают отрицательные остатки по счетам и разбалансировка вспомогательного счета
00.
Вариант 1. Восстановление данных с помощью Управление распределенными базами данных (УРБД)
Разберем наиболее быстрый и эффективный способ возврата удаленных объектов из имеющейся архивной копии. Если в базе не выполнялось тестирование и исправление с очисткой ссылок, битые идентификаторы документов сохранены в рабочих таблицах. Это позволяет передать удаленные документы из архива через механизм распределенных баз данных.
- Развернем архивная копию информационной базы, сделанную до момента непосредственного удаления объектов.
- Настроим в архивной базе управление распределенными базами данных (УРБД), объявляя архивную базу центральной, а текущую рабочую базу — периферийной.
- В конфигураторе архивной базы добавим к переносу удаленные типы документов и сформируем файл выгрузки данных для периферийной базы.
- Загрузим сформированный файл обмена в рабочую базу. В процессе загрузки платформа воссоздаст объекты с сохраненными ранее уникальными идентификаторами.
- После успешного восстановления объектов отвяжем периферийную базу в рабочей базе и очистим служебные таблицы регистрации изменений.
Вариант 2. Замена текущей базы архивом и перенос новых документов
Рассмотрим альтернативный вариант, который применяется при большом количестве поврежденных логических связей или когда удаление произошло достаточно давно.
- Развернем архивную копию базы данных за прошлый период как основную рабочую базу.
- С помощью обработок переноса данных (например, конвертации данных или переноса через файл выгрузки) перенесем все новые документы, созданные за последние дни из текущей поврежденной базы в восстановленную из архива.
- Выполним пересчет итогов и последовательное проведение документов для восстановления правильного сальдо и цепочек партионного учета.
Вариант 3. Использование режима Тестирование и исправление (ТиИ)
Посмотрим, как ведет себя штатная процедура тестирования и исправления информационных баз при наличии битых ссылок.
В Конфигураторе 1С 7.7 при запуске режимов проверки ссылочной целостности доступны два варианта действия при наличии ссылок на несуществующие объекты:
- Создавать объекты: Платформа создает пустые документы-заглушки с оригинальными идентификаторами. Это устраняет ошибку
Объект не найден, однако реквизиты и табличные части созданных документов остаются пустыми. Их потребуется заполнить вручную или программно, перенеся данные из архива по совпадению ID.
- Очищать ссылки: Система полностью физически удаляет ссылки из подчинённых таблиц и реквизитов. Внимание: Выполнение ТиИ с очисткой ссылок делает невозможным последующее автоматическое связывание восстанавливаемых документов по оригинальным идентификаторам.
Меры предосторожности и предотвращение сбоев
Чтобы избежать подобных ситуаций в будущем, необходимо придерживаться следующих правил администрирования:
- Ограничить права пользователей и программистов на выполнение прямого программного удаления объектов в рабочей базе данных.
- Использовать удаление объектов исключительно через штатную процедуру поиска и удаления помеченных объектов.
- Настроить регулярное создание и длительное хранение резервных копий (бэкапов) базы данных.
- Любые исправления битых ссылок и восстановление данных предварительно тестировать на копии информационной базы.