Ошибка SDBL (Simple Data Access Layer) — это сигнал о серьезном внутреннем противоречии в структуре вашей базы данных. Чаще всего она возникает в моменты обновления конфигурации, когда процесс реструктуризации прерывается из-за сбоя сервера, отключения электропитания или сетевых неполадок. В результате платформа 1С «запутывается»: в системных таблицах метаданных (DBSchema) объект ссылается на одну физическую таблицу, а в реальности в SQL-базе их оказывается две (например, основная и временная, созданная для реструктуризации, но не удаленная вовремя).
В этой статье мы подробно разберем, как восстановить работоспособность системы, проанализируем причины возникновения ошибки и рассмотрим несколько проверенных методик — от стандартного тестирования до «хитрых» приемов без длительной остановки работы пользователей.
Этот метод считается самым надежным и «каноничным» с точки зрения технической поддержки 1С. Если ваша база имеет разумный объем, а время позволяет прервать работу пользователей, начнем именно с него. Разберем по шагам, что необходимо сделать:
Реструктуризация таблиц информационной базы.Тестирование и исправление.Почему это помогает? Во время реструктуризации платформа принудительно пересоздает все физические таблицы в соответствии с описанием в метаданных. В процессе этого «переезда» данных старые, некорректные связи заменяются новыми, а лишние «таблицы-фантомы» удаляются.
Если база данных огромная (сотни гигабайт или терабайты), полная реструктуризация может занять сутки. Рассмотрим более изящный способ, который позволяет «подтолкнуть» платформу к исправлению конкретной ошибки для проблемного объекта. Как правило, ошибка указывает на конкретный тип объектов, например, Планы видов расчета.
Проанализируем алгоритм действий:
Начисления.ТехническийРеквизит и типом Число).Этот метод заставляет 1С переписать запись в системной таблице DBSchema, устраняя дублирование ссылок на физические таблицы SQL.
Иногда физически в базе данных все в порядке, но сервер приложений 1С хранит в своем кэше устаревшую информацию о структуре. Выясним, как правильно провести «гигиенические процедуры» на сервере:
C:\Program Files\1cv8\srvinfo).snccntx... и reg_.... Внутри них будут папки с GUID вашей базы — их содержимое (папки cache) нужно очистить.Если ошибка возникла при переходе на конкретный релиз (например, замечены проблемы в ветке 8.3.15), проанализируем вариант с использованием промежуточного звена. Рассмотрим ситуацию, когда база не дает применить обновление структуры.
Попробуем следующий подход:
.dt.8.3.12 или 8.3.13) на тестовый сервер или локальную машину..dt..cf файл.Рассмотрим, что происходит «под капотом» SQL. Ошибка означает, что в таблице Config или Params (в зависимости от версии) бинарные данные схемы не соответствуют списку таблиц в sys.tables.
Проанализируем дополнительные действия для PostgreSQL:
Для этой СУБД иногда помогает выполнение полной очистки и анализа базы. Запустите консоль и выполните команду:
VACUUM FULL ANALYZE;
Это перестроит индексы и физически перераспределит данные, что может помочь механизмам 1С корректно считать структуру таблиц при следующем обращении.
Также стоит обратить внимание на системную таблицу ConfigSave. Если в ней «зависли» данные о незаконченном редактировании конфигурации, попробуйте очистить ее (предварительно сделав бэкап!):
DELETE FROM ConfigSave;
Это заставит конфигуратор при запуске обратиться к основной, стабильной версии конфигурации Config, игнорируя черновики, которые могли вызвать конфликт имен в SDBL.
Мы выяснили, что ошибка SDBL — это чаще всего следствие «мусора» в системных реестрах метаданных. Резюмируем наши действия: если время поджимает, используем метод с добавлением реквизита (Метод 2). Если нужно гарантированное исправление всей базы — запускаем ТиИ с реструктуризацией (Метод 1) на ночь. И всегда помним: любые действия со структурой базы данных начинаются с создания резервной копии.