Содержание
Эта ошибка появляется у баз, работающих в файловом режиме: вся база — один файл 1Cv8.1CD, и 1С сообщает, что не может корректно его прочитать. Хорошая новость: чаще всего база лечится штатными инструментами платформы за одно технологическое окно. Плохая: сама ошибка — свойство файлового режима, и с ростом базы и числа пользователей она будет возвращаться. Сначала — как исправить, во второй половине статьи — как убрать причину, а не симптом.
Как исправить ошибку СУБД: план спасения базы
| Шаг | Что делать | Инструмент |
|---|---|---|
| 1 | Выгнать всех из базы и сделать копию файла | копия каталога с файлом 1Cv8.1CD |
| 2 | Проверить и исправить физическую целостность файла | chdbfl.exe из папки bin платформы |
| 3 | Проверить логическую и ссылочную целостность | конфигуратор → «Тестирование и исправление» |
| 4 | Пересоздать базу начисто | выгрузка в dt-файл и загрузка в новую базу |
Если после шагов 2–3 база так и не открывается, а свежей резервной копии нет — остановитесь: каждая новая попытка «полечить» файл снижает шансы вытащить данные. Дальше работать должен специалист по восстановлению, и работать он должен с копией.
Не запускайте chdbfl.exe и «Тестирование и исправление» на единственном экземпляре базы. Исправление меняет файл без возможности отката: неудачная попытка добьёт то, что ещё читалось. Сначала — копия файла 1Cv8.1CD.
Почему появляется ошибка СУБД в 1С
Файловая база 1С пишется платформой напрямую, без журнала транзакций. Любая оборванная запись оставляет внутри файла несогласованные страницы — и при следующем обращении 1С сообщает, что файл базы данных повреждён. Оборвать запись может:
- отключение питания или жёсткая перезагрузка компьютера, на котором лежит база;
- сбой сети — база лежит на сетевом диске, и с ней по сети работают несколько пользователей: самый частый сценарий в небольших офисах;
- антивирус или агент резервного копирования, который заблокировал или изменил файл прямо во время записи;
- проблемы диска — сбойные блоки, переполнение, изношенный носитель;
- обрыв сеанса — закрыли ноутбук, оборвался RDP, «сняли» зависший процесс 1С в момент проведения документа.
Причина конкретного сбоя важна для профилактики, но порядок восстановления от неё не зависит — он один и тот же.
Шаг 1. Копия файла базы — до любых действий
Попросите всех выйти из базы и убедитесь, что не осталось зависших сеансов. Найдите каталог базы: путь показан в списке информационных баз в окне запуска 1С. Скопируйте весь каталог — прежде всего файл 1Cv8.1CD — на другой диск или хотя бы в соседнюю папку. Это занимает минуты, а страхует от главного риска: что попытка исправления сделает хуже.
Шаг 2. chdbfl.exe — проверка физической целостности файла
chdbfl.exe — штатная утилита платформы для проверки физической целостности файловой базы. Она работает даже тогда, когда база не открывается ни в пользовательском режиме, ни в конфигураторе. Лежит утилита в папке bin установленной платформы: C:\Program Files\1cv8\<номер сборки>\bin\chdbfl.exe.
- Запустите утилиту и в поле «Имя файла БД» укажите путь к файлу 1Cv8.1CD.
- Сначала выполните проверку без флажка «Исправлять обнаруженные ошибки» — увидите масштаб проблемы, ничего не меняя.
- Затем включите флажок и нажмите «Выполнить» ещё раз.
- После завершения откройте базу и сверьте документы за последние дни: записи, которые не удалось восстановить, утилита может удалить.
Если chdbfl.exe завершается ошибкой — файл повреждён серьёзно. Не гоняйте проверку по кругу: переходите к восстановлению из резервной копии или передавайте копию файла специалисту.
Шаг 3. «Тестирование и исправление» в конфигураторе
Если база открывается хотя бы в конфигураторе, запустите штатную проверку: меню Администрирование → Тестирование и исправление. Эта обработка чинит то, до чего chdbfl.exe не дотягивается, — логическую и ссылочную целостность данных.
- Первый прогон — режим тестирования без исправления: получите список проблем.
- Второй прогон — тестирование с исправлением; включите реиндексацию таблиц, проверку логической целостности и проверку ссылочной целостности.
- Для битых ссылок обработка предлагает выбор: создавать объекты-заглушки, очищать ссылки или не изменять. Если сомневаетесь — выбирайте «не изменять» и покажите список специалисту по 1С: очистка ссылок необратимо меняет данные учёта.
- Пересчёт итогов, сжатие и реструктуризацию таблиц оставьте на отдельный прогон, когда целостность уже восстановлена: это оптимизация, а не лечение.
Шаг 4. Выгрузка в dt-файл и пересоздание базы
Когда база снова открывается, стоит пересоздать её начисто: Администрирование → Выгрузить информационную базу — получаете dt-файл; затем создаёте новую пустую базу и загружаете dt в неё. При загрузке платформа строит все таблицы заново, и остаточные проблемы структуры уходят.
Два предупреждения. Выгрузка из повреждённой базы может завершиться ошибкой — тогда возвращайтесь к шагам 2–3. И не считайте dt-файл резервной копией: повреждения переезжают внутрь выгрузки, а повреждённый dt может вовсе не загрузиться обратно.
Звать специалиста пора, когда файл не открывается ничем, chdbfl.exe падает, а в базе — годы учёта, которых больше нигде нет. В этой ситуации цена данных выше цены работы: передайте исходную копию из шага 1 и не запускайте исправления повторно.
Почему ошибка СУБД возвращается: пределы файлового режима
Файловый режим удобен: скопировал папку — вот и вся база. Но у него есть врождённые ограничения, и «файл базы данных повреждён» — их прямое следствие.
- Нет журнала транзакций. Платформа пишет прямо в файл, обрыв записи означает несогласованные данные. Полностью защититься невозможно — можно только уменьшать вероятность.
- Все пишут в один файл по сети. Чем больше пользователей и активнее документооборот, тем чаще запись совпадает со сбоем.
- Предел размера. Одна внутренняя таблица файловой базы не может превысить 4 ГБ — растущая база однажды упирается в ошибку «Превышен максимальный размер внутреннего файла», и это уже не лечится тестированием.
- Скорость. С ростом файла время проведения документов и блокировки растут — база начинает «тормозить» задолго до предела размера.
Честный вывод: если с базой работают один-два человека, а файл занимает сотни мегабайт, файлового режима достаточно. Снижайте риски: ИБП на компьютере с базой, база на локальном, а не сетевом диске, папка базы в исключениях антивируса, автоматическая копия файла хотя бы раз в день. Ошибка останется редким событием, а копия закроет последствия.
Клиент-серверный режим: как исчезает сам класс проблемы
В клиент-серверном режиме данные 1С хранит не файл на общем диске, а сервер СУБД — для новых внедрений это, как правило, PostgreSQL. Разница принципиальная: PostgreSQL сначала записывает изменения в журнал предзаписи (WAL) и только потом — в файлы данных, поэтому после сбоя питания сервер при старте сам доводит базу до согласованного состояния по журналу. Сценарий «свет мигнул — база не открывается» перестаёт существовать как класс.
Начать можно бесплатно: Postgres Professional выпускает бесплатную сборку PostgreSQL с учётом требований 1С — небольшим внедрениям её достаточно; как выбирать между бесплатной сборкой и коммерческой версией, разобрали в статье PostgreSQL для 1С. Коммерческая Postgres Pro Enterprise для 1С нужна, когда база — это деньги компании и простой недопустим:
- резервные копии без остановки базы — pg_probackup делает инкрементальные копии и проверяет их целостность: бэкап перестаёт быть «копией файла на ночь»;
- встроенный отказоустойчивый кластер BiHA — при отказе сервера работу подхватывает второй узел, без внешних инструментов;
- оптимизации под 1С — пресет настройки
initdb --tune=1cи табличные пространства со сжатием под таблицы 1С; - поддержка вендора с SLA — при действующем сертификате поддержки: реакция от 15 минут в режиме 24×7, решение критичной проблемы — 4 часа, исправление ошибки в коде — 24 часа.
Перенос существующей базы выполняется штатными средствами 1С — той же выгрузкой в dt-файл, что и в шаге 4, или утилитой ibcmd; конфигурацию и доработки переписывать не нужно. Чем вообще Postgres Pro отличается от обычного PostgreSQL — в обзоре Postgres Pro и PostgreSQL: в чём разница.
Сколько стоит и как купить на юрлицо
Лицензируется Postgres Pro Enterprise для 1С двумя способами. По ядрам сервера СУБД: лицензия на каждое ядро, минимум два; ядро стоит 156 601 ₽, сервер на 4 ядра — четыре лицензии, а число пользователей 1С не ограничено. Либо «сервер + пользователи» — выгодно небольшой команде: серверная лицензия за 33 431 ₽ плюс лицензия на каждого пользователя по 16 915 ₽, минимум пять. Лицензии бессрочные; СУБД входит в реестр российского ПО, поэтому НДС не облагается.
Оформление на юридическое лицо ведёт ООО «МИГСОФТ»: счёт в рублях по безналу, договор, закрывающие и тендерные документы. Поможем перевести базу 1С в клиент-серверный режим и рассчитаем лицензии под вашу конфигурацию — ядра, реплики, минимумы. Бесплатно, в течение рабочего дня.
Чаще всего берут бессрочную лицензию на ядро x86-64:
Частые вопросы
Поможет ли chdbfl.exe, если база 1С работает на SQL-сервере? +
Нет. chdbfl.exe проверяет только файловые базы — файл 1Cv8.1CD. В клиент-серверном режиме физическую целостность обеспечивает сама СУБД, а логику данных проверяет та же обработка «Тестирование и исправление» в конфигураторе.
Как настроить резервное копирование, чтобы больше не терять данные? +
Для файловой базы — автоматическая копия файла 1Cv8.1CD по расписанию, строго при закрытой базе; dt-выгрузка резервной копией не считается. Для клиент-серверной базы на Postgres Pro копии делает pg_probackup: инкрементально, с проверкой целостности и без остановки работы пользователей. Подробный разбор — в статье Резервное копирование PostgreSQL.
Сколько занимает перенос базы 1С в клиент-серверный режим? +
Перенос выполняется штатной выгрузкой в dt-файл и загрузкой в новую клиент-серверную базу либо утилитой ibcmd. Время зависит от размера базы и диска, сама процедура — одно технологическое окно: выгрузка, загрузка, проверка. Конфигурация переносится как есть.
Ошибка СУБД в 1С 8.3 появляется снова и снова — что делать? +
Лечить симптом бессмысленно: ищите причину — сеть, диск, антивирус — и планируйте перевод в клиент-серверный режим. Повторяющиеся повреждения — типичный признак того, что файловый режим для вашей нагрузки уже мал.