К статье
Практический материал

Администрирование · 14 мин

Ошибка СУБД в 1С: в чём причина и как её устранить

Почему возникает ошибка СУБД в 1С: повреждение базы, проблемы с сервером, диском и сетью. Пошаговая диагностика, восстановление через конфигуратор и chdbfl, профилактика.

Сообщение «Ошибка СУБД» — одно из самых тревожных в 1С: оно означает, что платформа не смогла выполнить операцию с базой данных и прервала работу. Ошибка может появиться при записи документа, проведении, обновлении конфигурации или даже при обычном входе в программу. Текст сообщения при этом часто сопровождается кодом, ссылкой на таблицу или упоминанием файла базы.

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

Ниже разобраны типичные сценарии для файлового и клиент-серверного режимов, порядок диагностики и безопасные способы восстановления, которые можно выполнить самостоятельно, не рискуя окончательно потерять данные.

Что скрывается за сообщением «Ошибка СУБД»

1С не хранит данные сама — она обращается к системе управления базами данных. В файловом режиме роль СУБД выполняет встроенный движок платформы, работающий с файлом 1Cv8.1CD. В клиент-серверном режиме это полноценная СУБД: Microsoft SQL Server, PostgreSQL, Oracle или IBM DB2. Ошибка СУБД означает, что запрос платформы к базе завершился неудачно: данные не прочитались, не записались или оказались противоречивыми.

Полезно внимательно читать полный текст ошибки. Упоминание конкретной таблицы (например, _Document123 или _AccumRg) указывает на локальное повреждение данных. Фразы про таймаут, разрыв соединения или недоступность сервера говорят о проблемах инфраструктуры. Сообщения о нарушении целостности индексов — о рассогласовании индексов и данных, что часто случается после аварийного завершения.

Основные причины ошибки СУБД

На практике причины группируются в несколько повторяющихся сценариев. Зная их, можно сузить поиск до нескольких проверок вместо хаотичных действий.

  • Аварийное завершение работы. Отключение электричества, перезагрузка сервера, разрыв терминальной сессии в момент записи — классическая причина повреждения таблиц и индексов, особенно в файловых базах.
  • Проблемы дисковой подсистемы. Битые сектора, переполнение диска, сбои RAID-массива приводят к тому, что часть файла базы физически не читается.
  • Сетевые сбои. Для файловой базы, размещённой на сетевом ресурсе, и для клиент-серверного режима нестабильная сеть вызывает обрывы транзакций и ошибки доступа.
  • Антивирус и сторонние программы. Резидентный антивирус, блокирующий файл базы или файлы СУБД во время записи, — частый виновник повреждений.
  • Нехватка ресурсов сервера. Переполнение tempdb, нехватка оперативной памяти или места под журналы транзакций в MS SQL вызывает отказ в обслуживании запросов 1С.
  • Ошибки при обновлении конфигурации. Прерванное обновление, реструктуризация больших таблиц при нехватке места или несовпадение версий платформы на клиенте и сервере.
Ошибка у всех пользователей сразуПроблема на стороне базы или сервера

Проверить доступность сервера, место на диске, состояние службы СУБД

Ошибка только у одного пользователяПроблема клиента или сети

Проверить сетевое подключение, версию платформы, кэш метаданных клиента

Ошибка при работе с конкретным документомЛокальное повреждение данных

Запустить тестирование и исправление, проверить ссылки на объект

Ошибка после сбоя питания или обновленияПовреждение таблиц или индексов

Сделать копию, затем chdbfl для файловой базы и тестирование в конфигураторе

Диагностика: с чего начать проверку

До любых исправлений сделайте резервную копию базы в текущем, даже повреждённом состоянии. Для файловой базы достаточно скопировать файл 1Cv8.1CD при остановленной работе пользователей. Для клиент-серверной — выполнить выгрузку через конфигуратор, если база ещё открывается, либо сделать бэкап средствами СУБД. Без копии любое «лечение» может стать необратимым.

Далее проверьте инфраструктуру: свободное место на всех дисках, задействованных базой (включая диск с tempdb и журналами), состояние службы сервера СУБД, журналы событий Windows на предмет ошибок диска и сети. Убедитесь, что антивирус исключает каталоги базы и файлы СУБД из проверки в реальном времени.

Затем проанализируйте технологический журнал 1С и логи СУБД. В MS SQL Server полезны представления о состоянии базы и команда проверки целостности DBCC CHECKDB — она покажет, есть ли физические повреждения, не внося изменений. Для PostgreSQL смотрите логи сервера на предмет сообщений о повреждённых страницах.

Восстановление файловой базы

Файловый режим наиболее уязвим к повреждениям, но и инструменты восстановления для него просты. Порядок действий такой: сначала проверка физической целостности файла, затем логическая проверка средствами конфигуратора.

Порядок восстановления файловой базы
  1. 1
    Завершите работу всех пользователей и скопируйте файл 1Cv8.1CD в отдельную папку
  2. 2
    Запустите утилиту chdbfl.exe из каталога bin установленной платформы, укажите файл базы и включите исправление ошибок
  3. 3
    Откройте базу в конфигураторе и выполните «Администрирование → Тестирование и исправление» с проверкой ссылочной целостности
  4. 4
    При ошибках кэша очистите каталог кэша метаданных или удалите базу из списка и добавьте заново
  5. 5
    Проверьте результат: откройте проблемные документы и отчёты, сопоставьте остатки с данными до сбоя

Утилита chdbfl работает на уровне страниц файла базы и способна исправить повреждения, при которых конфигуратор даже не открывает базу. Однако она не восстанавливает смысл данных: если страница потеряна безвозвратно, записи из неё пропадут. Поэтому после восстановления обязательно сверьте ключевые показатели — остатки по счетам, складам, взаиморасчётам — с последней резервной копией или печатными формами.

Отдельный частный случай — ошибки, вызванные не самой базой, а кэшем метаданных на клиенте. Признаки: ошибка возникает только на одном компьютере, у остальных всё работает. Лечится очисткой кэша: удалением базы из списка стартера и повторным добавлением либо очисткой каталога кэша в профиле пользователя.

Ошибки в клиент-серверном режиме

В клиент-серверной архитектуре ошибка СУБД чаще связана не с повреждением данных, а с состоянием сервера. Типичные сценарии: переполненный журнал транзакций MS SQL, из-за чего любая запись завершается ошибкой; нехватка памяти и таймауты при тяжёлых запросах; несоответствие версий платформы на сервере 1С и клиентах; разрыв соединения между сервером 1С и сервером СУБД.

Начните с проверки служб: работает ли агент сервера 1С и служба СУБД, нет ли в журналах ошибок подключения. Проверьте свободное место на дисках с данными, журналами и tempdb. Если журнал транзакций разросся, выполните его сжатие после резервного копирования и настройте регулярное обслуживание — это стандартная административная задача, а не признак повреждения данных.

Если есть подозрение на физическое повреждение базы в MS SQL, выполните проверку целостности без исправления, чтобы оценить масштаб:

sql
DBCC CHECKDB (N'ИмяБазы') WITH NO_INFOMSGS

По результатам проверки решение принимается так: при отсутствии ошибок проблема в инфраструктуре или логике; при обнаружении повреждений предпочтительно восстановление из последней исправной резервной копии. Вариант с REPAIR_ALLOW_DATA_LOSS — крайняя мера: он физически вырезает повреждённые страницы вместе с данными, и согласовывать его стоит только при отсутствии рабочего бэкапа.

Способы восстановления

Тестирование и исправление в конфигураторе

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

Утилита chdbfl

Для файловых баз, которые не открываются даже в конфигураторе; работает только с файловым форматом и не восстанавливает потерянные страницы

Восстановление из резервной копии

Самый надёжный способ при серьёзных повреждениях; ограничение — данные между копией и моментом сбоя теряются

Загрузка выгрузки .dt в чистую базу

Помогает при повреждении служебных структур файловой базы; требует, чтобы база ещё открывалась и выгружалась

Частные сценарии и их особенности

Ошибка при обновлении конфигурации

Если ошибка СУБД возникла во время обновления, чаще всего прервалась реструктуризация таблиц. Не пытайтесь повторно запускать обновление «поверх» — сначала оцените состояние базы. В файловом режиме помогает восстановление из копии, сделанной перед обновлением, и повторный запуск после проверки диска и свободного места. В клиент-серверном режиме убедитесь, что хватило места под временные таблицы и журнал транзакций.

Ошибка только у одного пользователя

Когда база работает у всех, кроме одного рабочего места, причина почти наверняка локальная: устаревшая версия платформы, повреждённый кэш метаданных, нестабильная сеть или антивирус на клиенте. Проверьте версию платформы, очистите кэш и временно отключите антивирус для проверки — этого достаточно, чтобы локализовать проблему.

Ошибка при записи конкретного объекта

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

Типичные ошибки при устранении
01
Запуск исправления без резервной копии — повреждённые записи удаляются безвозвратно, и сравнить уже не с чем
02
Многократный перезапуск обновления после сбоя — реструктуризация запускается поверх недовыполненной и усугубляет рассогласование
03
Размещение файловой базы на сетевом диске без учёта рисков — любой сетевой сбой во время записи повреждает файл
04
Игнорирование антивируса — постоянные блокировки файлов базы приводят к повторяющимся ошибкам, которые принимают за «глюки 1С»
05
Использование REPAIR_ALLOW_DATA_LOSS как первого средства — потеря данных там, где могла помочь резервная копия

Профилактика: как не столкнуться с ошибкой снова

Большинство повреждений баз предотвратимы организационными мерами. Настройте регулярное резервное копирование: для клиент-серверных баз — средствами СУБД с проверкой восстановления, для файловых — выгрузку .dt по расписанию плюс копирование файла. Копия, которую ни разу не проверяли восстановлением, нельзя считать надёжной.

Обеспечьте стабильность инфраструктуры: источник бесперебойного питания для сервера, мониторинг свободного места на дисках, исключение каталогов баз из антивирусной проверки, отказ от размещения файловых баз на сетевых ресурсах при интенсивной работе. Для растущих баз своевременно планируйте переход на клиент-серверный режим — файловый формат имеет практические ограничения по размеру и числу одновременных пользователей.

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

Контрольные точки

Как проверить результат восстановления

Открытие базы и вход пользователей
Норма

База открывается без ошибок, сеансы работают стабильно

Тревожный признак

Ошибка повторяется при входе или при обращении к тем же объектам

Ключевые отчёты и остатки
Норма

Остатки совпадают с данными до сбоя или с последней копией

Тревожный признак

Расхождения в остатках, пропавшие документы

Запись и проведение документов
Норма

Новые документы записываются и проводятся без ошибок

Тревожный признак

Ошибка СУБД при записи — повреждение не устранено полностью

Журнал регистрации и логи СУБД
Норма

Нет повторяющихся ошибок целостности и обрывов

Тревожный признак

Ошибки продолжают накапливаться — искать причину в инфраструктуре

Маршрут решения

Как выбрать действие

База файловая и не открывается даже в конфигуратореСкопируйте 1Cv8.1CD и прогоните chdbfl, затем тестирование и исправление
База открывается, но ошибка при работе с отдельными объектамиВыполните тестирование и исправление с проверкой ссылочной целостности
Ошибка у всех пользователей клиент-серверной базыПроверьте службы СУБД, место на дисках, журнал транзакций и логи сервера
Ошибка только на одном компьютереОчистите кэш метаданных, проверьте версию платформы и антивирус на клиенте
Есть свежая проверенная резервная копия, а повреждение серьёзноеВосстановитесь из копии — это быстрее и надёжнее любого ремонта
Итог

Что важно запомнить

Ошибка СУБД в 1С — следствие повреждения данных, проблем инфраструктуры или сбоев при обновлении. Правильный порядок всегда один: сначала резервная копия, затем диагностика уровня проблемы, потом восстановление подходящим инструментом и обязательная проверка остатков. Регулярные бэкапы и стабильная инфраструктура сводят риск повторения к минимуму.

Частые вопросы

Можно ли продолжать работать, если ошибка СУБД появляется редко?

Не рекомендуется. Редкая ошибка при записи означает, что повреждение уже существует и с каждой транзакцией может расширяться. Остановите работу в удобный момент, сделайте копию и выполните проверку — это займёт меньше времени, чем восстановление после полного отказа базы.

Чем отличается тестирование и исправление от chdbfl?

chdbfl работает с физической структурой файла 1Cv8.1CD и применяется только к файловым базам, в том числе неоткрывающимся. Тестирование и исправление в конфигураторе проверяет логическую целостность — ссылки, итоги, индексы — и доступно для обоих режимов, но требует, чтобы база открывалась. Обычно их применяют последовательно: сначала chdbfl, затем тестирование.

Почему ошибка появилась сразу после обновления платформы?

Частые причины — несовпадение версий платформы на клиенте и сервере, повреждённый кэш метаданных после смены версии или прерванная реструктуризация. Начните с очистки кэша и проверки версий на всех рабочих местах, прежде чем подозревать саму базу.

Антивирус правда может повредить базу 1С?

Да, косвенно. Если антивирус блокирует файл базы или файлы СУБД в момент записи, транзакция обрывается, что приводит к рассогласованию данных. Каталоги с базами, журналами и tempdb следует добавить в исключения проверки в реальном времени — это стандартная рекомендация для серверов 1С.

Что делать, если резервной копии нет, а база сильно повреждена?

Сначала скопируйте файлы базы на уровне файловой системы, чтобы зафиксировать текущее состояние. Затем для файловой базы пробуйте chdbfl и тестирование, для клиент-серверной — проверку целостности средствами СУБД. Восстановление с потерей данных (REPAIR_ALLOW_DATA_LOSS и аналоги) оставьте как последний вариант и будьте готовы к ручной сверке и вводу утраченных записей.

Когда пора переходить с файлового режима на клиент-серверный?

Сигналы: база заметно выросла, одновременно работает много пользователей, регулярны конфликты блокировок и повреждения после сбоев. Клиент-серверный режим устойчивее к авариям благодаря транзакционной модели СУБД и штатным средствам резервного копирования, хотя требует администрирования сервера.