Как исправить ошибку «Таблица не найдена» в 1С после аварийного завершения работы?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

На практике часто встречается ситуация, когда внезапное отключение питания, сбой сети или аварийное закрытие программы 1С приводит к серьезным сбоям в работе базы данных. Один из наиболее распространенных симптомов такой проблемы — появление ошибки при попытке открыть списки документов (например, при переходе на вкладку «Покупки» или «Продажи»): «Ошибка при выполнении запроса. Таблица не найдена "РегистрСведений.НаличиеПрисоединенныхФайлов"». Выясним причину этой неисправности и подробно разберем по шагам, как восстановить работоспособность системы.

Почему возникает эта проблема?

Проанализируем техническую сторону сбоя. Платформа 1С:Предприятие хранит структуру метаданных в специальных кэш-таблицах конфигурации. При аварийном завершении работы сеанса связи между логическим описанием объектов конфигурации и физическими таблицами в СУБД могут нарушиться. С точки зрения платформы объект метаданных (например, регистр сведений) пропадает, хотя физически в таблицах базы данных (как в файловом варианте, так и в MS SQL / PostgreSQL) данные этого регистра продолжают существовать.

Также подобная ошибка может быть следствием неудачного динамического обновления конфигурации базы данных («обновления на лету») или несоответствия версий при обновлении Библиотеки стандартных подсистем (БСП), в новых версиях которой некоторые регистры переименовываются.

Рассмотрим подробнее проверенные способы решения этой проблемы в зависимости от типа вашей базы данных.

Решение 1. Очистка локального и серверного кэша

В большинстве случаев физические таблицы базы данных не повреждены, а сбой затрагивает только временные файлы (кэш метаданных) на компьютере пользователя или на сервере.

Выполним очистку кэша по следующей схеме:

  1. Для файловой базы: Самый простой способ — удалить базу из списка запуска в стартере 1С, нажать «ОК», а затем добавить ее заново под тем же путем. Это автоматически создаст новые каталоги временных файлов для этой информационной базы.
  2. Ручная очистка: Перейдем в каталоги временных файлов пользователя (папки %userprofile%\AppData\Local\1C и %userprofile%\AppData\Roaming\1C) и удалим папки с длинными шестнадцатеричными именами (идентификаторы баз).
  3. Для клиент-серверной базы: Локальной очистки на стороне пользователя может не хватить. Потребуется принудительно остановить службу сервера «1С:Предприятие» (процессы rphost, rmngr), полностью очистить кэш на сервере (включая каталог сессионных данных и временную папку snccntx), после чего заново запустить службу сервера.

Решение 2. Тестирование файловой базы с помощью chkdbfl.exe

Если ваша база данных файловая (имеет расширение .1CD), аварийное завершение процесса 1cv8.exe могло нарушить целостность самого файла базы.

Проанализируем состояние базы с помощью штатной утилиты:

  1. Обязательно создадим резервную копию файла базы данных (скопируем файл 1Cv8.1CD в безопасное место).
  2. Перейдем в каталог установленной платформы 1С на вашем компьютере (например, C:\Program Files\1cv8\[Номер_версии_платформы]\bin\).
  3. Найдем и запустим файл chkdbfl.exe.
  4. В открывшемся окне укажем путь к нашему файлу базы данных, установим флаг «ИСПРАВЛЯТЬ ОБНАРУЖЕННЫЕ ОШИБКИ» и нажмем кнопку «Выполнить».

После завершения проверки утилита выведет отчет об исправленных ошибках структуры. Попробуем запустить базу в обычном режиме.

Решение 3. Восстановление метаданных через сравнение и объединение

Что делать, если в Конфигураторе утерянный регистр действительно отсутствует, бэкапов нет, а прямое копирование из аналогичной чистой конфигурации грозит потерей накопленных данных (так как платформа создаст новые пустые таблицы в СУБД)?

Решить эту проблему можно с помощью механизма сравнения и объединения, который свяжет существующие физические SQL-таблицы с метаданными конфигурации:

  1. Создадим чистую базу аналогичной конфигурации и абсолютно того же релиза.
  2. В чистой базе откроем Конфигуратор и сохраним конфигурацию в файл (меню Конфигурация -> Сохранить конфигурацию в файл...), получив файл с расширением .cf.
  3. Откроем Конфигуратор нашей поврежденной рабочей базы.
  4. Перейдем в меню Конфигурация -> Сравнить, объединить с конфигурацией из файла... и выберем сохраненный ранее файл .cf.
  5. В открывшемся дереве сравнения найдем утерянный объект (например, РегистрСведений.НаличиеПрисоединенныхФайлов) и установим напротив него флаг.
  6. Нажмем кнопку «Выполнить» и согласимся на объединение. После этого обновим конфигурацию базы данных (клавиша F7). Платформа сопоставит метаданные с физической таблицей, и данные внутри регистра будут сохранены.

Решение 4. Принудительная реструктуризация таблиц

Иногда полезно заставить платформу принудительно обновить структуру базы данных и очистить старые транзакции динамического обновления:

  1. В Конфигураторе рабочей базы внесем любое незначительное изменение, не влияющее на логику (например, добавим символ пробела или пустой комментарий в код любого общего модуля).
  2. Сохраним изменения.
  3. Запустим обновление конфигурации базы данных клавишей F7. Это инициирует процесс реструктуризации таблиц и восстановит связи метаданных.

Решение 5. Сброс зависшей транзакции динамического обновления в SQL

Для клиент-серверного варианта базы данных принудительно завершить зависший процесс динамической реструктуризации можно напрямую через СУБД (MS SQL, PostgreSQL). Это позволит вернуть систему в согласованное состояние.

Запустим консоль запросов СУБД и выполним следующие команды для очистки системных таблиц конфигурации от зависших признаков обновления:


DELETE FROM Config WHERE FileName = 'commit';
DELETE FROM Config WHERE FileName = 'dbStruFinal';

После выполнения запросов перезапустим службу сервера 1С и очистим локальный кэш на рабочих станциях пользователей.

Решение 6. Анализ обновлений БСП (Библиотеки стандартных подсистем)

Если база недавно обновлялась, причиной ошибки может быть переход конфигурации на новую версию БСП (например, версии 2.4 и выше). В новых релизах библиотек регистр сведений НаличиеПрисоединенныхФайлов был переименован разработчиками 1С в НаличиеФайлов.

Если в вашей базе установлены нетиповые доработки, кастомные расширения или внешние отчеты, запросы которых жестко обращаются к старому имени регистра, система выдаст ошибку «Таблица не найдена». В этом случае необходимо проверить код расширений и внешних обработок, заменив старое имя регистра на новое актуальное имя.

← На главную