Рассмотрим распространенную и неприятную ситуацию, с которой сталкиваются разработчики и администраторы 1С: появление ошибки SDBL: Ожидается имя таблицы (часто с указанием позиции, например, Pos=34). Чаще всего эта проблема возникает после проведения динамического обновления конфигурации, но может проявиться и при аварийном завершении работы сервера.
Разберем подробно причины возникновения этой ошибки и проанализируем эффективные методы её устранения, от простых действий к более сложным вмешательствам.
Основная причина кроется в рассинхронизации структуры базы данных и конфигурации, которую ожидает платформа. При динамическом обновлении (обновлении базы данных без отключения пользователей) могут возникнуть коллизии в служебных таблицах, отвечающих за хранение версий конфигурации. В частности, часто страдает таблица ConfigSave или таблицы кэша на стороне сервера.
Первым делом, давайте исключим самую банальную причину — некорректный кэш. Если ошибка возникает у конкретного пользователя или при запуске на конкретном компьютере, выполним очистку временных файлов.
Для этого необходимо удалить папки с кэшем 1С. Обычно они находятся по следующим путям:
C:\Users\ИмяПользователя\AppData\Roaming\1C\1cv8C:\Users\ИмяПользователя\AppData\Local\1C\1cv8Удалять нужно папки с длинными именами (например, 82b8...). Более простой способ — удалить базу из списка запуска 1С и добавить её заново. Это автоматически создаст новые папки кэша.
Если ошибка возникает в клиент-серверном варианте у всех пользователей сразу, проблема находится на стороне сервера. В этом случае попробуем перезапустить службу Агент сервера 1С:Предприятия.
Если конфигуратор открывается, воспользуемся встроенным механизмом диагностики. Проанализируем базу на наличие логических и физических ошибок.
Важно: Перед запуском тестирования обязательно сделайте резервную копию базы данных (файл .dt или бэкап SQL).
Если конфигуратор не запускается или тестирование не помогает, а база работает на MS SQL Server или PostgreSQL, перейдем к более радикальному методу. Ошибка часто связана с "зависшими" данными в таблице ConfigSave, где хранится сохраняемая, но еще не примененная конфигурация.
Посмотрим, как очистить эту таблицу через средства управления СУБД (например, SQL Server Management Studio). Выполним следующий запрос к базе данных:
DELETE FROM ConfigSave
Или, если используется MS SQL, можно использовать команду:
TRUNCATE TABLE ConfigSave
Внимание! Эта операция удалит все изменения конфигурации, которые были внесены, но еще не были применены к базе данных (F7). После выполнения этой команды конфигурация базы данных вернется к состоянию последнего успешного обновления. Перед выполнением запроса критически важно сделать полный бэкап базы средствами SQL.
Если вы работаете с файловой версией базы (файл 1Cv8.1CD), воспользуемся утилитой проверки физической целостности.
chdbfl.exe в папке установки платформы (обычно C:\Program Files\1cv8\bin\).Чтобы избежать подобных ситуаций в будущем, настоятельно рекомендуем придерживаться следующих правил:
Применяя эти методы последовательно, мы сможем восстановить работоспособность базы и устранить ошибку SDBL.