При попытке окончательного удаления помеченных на удаление объектов, в частности Организация, вы можете столкнуться с ситуацией, когда стандартная обработка выдает ошибку, ссылаясь на некий Ключ записи регистра сведений. Чаще всего это сопровождается сообщением о невозможности удаления из-за того, что объект используется, хотя визуально в регистрах записей с этой организацией уже нет. Давайте разберемся, что происходит «под капотом» платформы 1С и как решить эту проблему.
Ключ записи — это не пользовательское поле, которое вы можете найти в карточке регистра. Это системный хеш, который платформа 1С автоматически вычисляет для каждой записи регистра сведений. В его формирование включены значения всех измерений, период и регистратор.
Цель этого ключа — обеспечить уникальность записи в базе данных. Если при попытке удаления система сообщает об ошибке ключа, это означает, что возник конфликт целостности. Скорее всего, в базе данных существует другая запись, чей ключ совпадает с ключом той записи, которую вы пытаетесь очистить или удалить. В такой ситуации платформа считает, что удаление одной записи нарушит структуру регистра, так как возникнет коллизия индексов.
Первым делом необходимо понять, в каком именно регистре «зависла» проблемная ссылка. Стандартная обработка удаления часто не дает развернутой информации, поэтому мы рекомендуем воспользоваться Консолью запросов.
Выполните запрос к регистрам сведений, в которых используется тип данных СправочникСсылка.Организации. Примерный вид запроса для поиска:
ВЫБРАТЬ
Регистр.Регистратор,
Регистр.Период,
Регистр.Организация
ИЗ
РегистрСведений.НазваниеВашегоРегистра КАК Регистр
ГДЕ
Регистр.Организация = &СсылкаНаДубль
Если запрос возвращает строки, значит, в данных остались ссылки. Даже если вы исправили документ, запись в регистре могла остаться «старой» из-за того, что не сработало автоматическое перепроведение или возникло зацикливание при записи.
Если вы нашли записи, которые ссылаются на дублирующую организацию, самым эффективным методом будет принудительная замена ссылок. Для этого воспользуйтесь стандартной обработкой Поиск и замена значений (доступна на ИТС).
Рассмотрим порядок действий:
Поиск и замена значений.Если после замены ссылок объект всё равно не удаляется, вероятно, проблема кроется в повреждении логической целостности самой базы данных. В этом случае помогут встроенные инструменты администрирования 1С:
Разберем использование Тестирования и исправления (ТиИ):
Конфигуратор.Администрирование -> Тестирование и исправление.Проверка логической целостности информационной базы, Пересчет итогов и Реиндексация таблиц информационной базы.Выполнить.Важно: Перед запуском ТиИ обязательно сделайте резервную копию базы данных (dt-файл или копия файловой/SQL базы). Процесс может занять длительное время в зависимости от объема данных.
Если предыдущие шаги не дали результата, используйте обработку Поиск ссылок на объекты, доступную в разделе Функции для технического специалиста. Она наглядно покажет все места, где объект «Организация» используется в качестве значения. Если вы видите запись, которую не удается открыть — это прямой признак того, что запись повреждена на уровне СУБД. В таком случае поможет только восстановление из бэкапа или профессиональное вмешательство администратора БД.
Помните, что удаление записей напрямую в таблицах SQL через Management Studio крайне не рекомендуется, так как это гарантированно приводит к нарушению ссылочной целостности и ошибкам при формировании регламентированной отчетности.