03 сентября 2026

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

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

 

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

Раньше такое тоже бывало, но на этот раз все пошло не по сценарию. Обычные способы исправления этой ошибки не сработали:

  • Очистка кэша;
  • Перенос файл базы 1Cv8.1CD в другой каталог;
  • В конфигураторе база не открылась, ни выполнить тестирование и исправление, ни выгрузить в файл 1Cv8.dt не дала;

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

Запуск утилиты chdbfl.exe к сожалению тоже не смог вернуть базу в работоспособное состояние. Но выдал важную информацию:

Повреждена таблица размещения внутреннего файла <Данные неограниченной длины таблицы 'CONFIG'>  Повреждены данные таблицы 'CONFIG'. Восстановлено 69475 из 78235 записей.
Это самая важная таблица, в которой хранится основная (рабочая) конфигурация со всеми объектами.
 
Пришлось прибегнуть к редактированию таблиц файловой БД с помощью tool1cd. Это специализированная бесплатная утилита, предназначенная для низкоуровневого чтения, анализа и восстановления файлов баз данных 1С:Предприятия 8. Она достаточно старая, в 2017 году автор утилиты Валерий Агеев открыл исходный код проекта и с тех пор его развивают независимые разработчики.
 
На официальном репозитории проекта github выложена версия v1.0.0-beta2 от 30 апреля 2018. Там есть исходники и в разделе релизов можно скачать архив с самой программой tool1cd-1.0.0.10.zip. Но в ней к сожалению не оказалось необходимого функционала, только чтение.
 
 
 
Существуют другие версии Tool_1CD.exe : v.0.3.0 и v.0.4.0. Скачать их бесплатно можно на сайте: koder.by
 
Перед тем как открыть файл базы 1Cv8.1CD необходимо проверить его формат. Для этого используем утилиту cnvdbfl.exe, входящую в поставку платформы 1с:
C:\Program Files\1cv8\8.3.25.1374\bin>cnvdbfl.exe -i "D:\test\T1\1Cv8.1CD"
Версия формата: 8.3.8
Размер страницы: 8192

Для того что бы была возможность редактировать базу в tool1cd нужен старый формат 8.2.14. Запустим процедуру конвертирования:
C:\Program Files\1cv8\8.3.25.1374\bin>cnvdbfl.exe -c -f 8.2.14 -p 4k "D:\test\T1\1Cv8.1CD"
После чего благополучно открываем файл, видим его внутреннюю структуру. 

 

Алгоритм для восстановления следующий:
1) Создать новую чистую базу донора с загруженной конфигурацией, такой же как была у поврежденной базы.

2) Сконвертировать ее в формат 8.2.14, как было рассмотрено выше.

3) Открыть файл базы-донора с помощью Tool_1CD, найти в списке таблицу CONFIG, перейти на вкладку «Дополнительно» и выбрать «Экспорт текущей таблицы», указав нужную папку.   

 

4) Затем открываем файл поврежденной базы, переходим к списку таблиц и выбираем поврежденную таблицу CONFIG. Нажимаем кнопку «Удалить текущие таблицы».

5) После окончания процесса удаления поврежденной таблицы, требовалось закрыть и файл и открыть его поновой. И уже только после этого переходить к загрузке из донора.

6) На вкладе дополнительно указываем папку CONFIG, куда вы сохраняли из чистой базы и нажимаем кнопку Создание и импорт таблицы

7) Повторяем те же самые действия для таблицы ConfigSave. Это конфигурация базы данных в процессе разработки (база конфигуратора).
8) Еще потребуется очистить таблицу пользователей v8users таким же образом, удалив и загрузив чистую донорскую. Иначе при открытии в конфигураторе, не будет достаточно прав доступа.
9) Теперь запускаем восстановленную базу в Конфигураторе, она должна открыться. И перейдем в меню: Администрирование -> Тестирование и исправление.
10) Отмечаем галочки:
  • Реиндексация таблиц
  • Проверка логической целостности
  • Проверка ссылочной целостности

Все, теперь база восстановлена, поздравляю! 

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

Комментариев нет:

Отправить комментарий