Рассмотрим распространенную и довольно критичную ситуацию, когда при попытке загрузить информационную базу из файла выгрузки формата .dt платформа 1С:Предприятие выдает сообщение: "Неверный формат файла для загрузки информационной базы". Проанализируем, почему возникает этот сбой, особенно если архив был восстановлен с неисправного жесткого диска, и разберем по шагам доступные способы спасения данных.
Часто проблема возникает после попытки восстановить базу с "посыпавшегося" или вышедшего из строя жесткого диска. Разберем механику этой проблемы подробнее. Файл .dt не является обычным текстом, базой данных или таблицей. По своей структуре это сжатый бинарный архив, использующий алгоритм сжатия Deflate/zlib. Формат является полностью закрытым и проприетарным.
Если файл лежал в битом секторе диска, специализированные программы-восстановители данных (Recovery-утилиты) при попытке прочитать поврежденный участок обычно просто заполняют нечитаемое место в файле нулями. В результате целостность цепочки сжатого архива нарушается. Штатный распаковщик платформы 1С не умеет игнорировать поврежденные сектора или пропускать "нули". Наткнувшись на непредвиденную последовательность байтов, он гарантированно прерывает загрузку и выдает ошибку формата потока или файла.
Посмотрим на другие возможные причины, не связанные с физической поломкой жесткого диска. Если вы уверены, что диск исправен, выясним, что еще могло пойти не так:
TEMP операционной системы, либо закончилась оперативная память. Архив просто сформировался не до конца, оборвавшись на полуслове.Разберем конкретные действия, которые помогут понять суть проблемы и, возможно, загрузить базу.
1. Проверка версии платформы через HEX-редактор
Проанализируем файл, чтобы узнать, в какой версии он был выгружен. Откроем наш поврежденный .dt в любом HEX-редакторе. Обратим внимание на самое начало файла — там всегда должна находиться сигнатура 1CIBDmpF, за которой следует цифра-идентификатор версии платформы:
Убедимся, что мы пытаемся загрузить файл на актуальном релизе той же самой ветки платформы.
2. Загрузка в клиент-серверную базу (СУБД)
Если загрузка в файловую базу падает с ошибкой, попытаемся развернуть базу на сервере, используя СУБД (например, MS SQL Server или PostgreSQL). Серверные системы управления базами данных иначе обрабатывают потоки данных при загрузке. На практике часто случается, что PostgreSQL "проглатывает" поврежденные длинные строки, обрезая битые данные, и позволяет информационной базе загрузиться хотя бы частично. Файловый же вариант 1С в таких случаях сразу отказывается продолжать работу.
3. Смена среды и очистка кэша
Перед очередными попытками загрузки полностью очистим кэш 1С. Также протестируем загрузку на другом компьютере или сервере с другой разрядностью операционной системы. Иногда 64-битная платформа 1С успешно переваривает проблемный архив там, где 32-битная падает из-за нехватки памяти при обработке большого потока.
4. Обращение в официальную техподдержку
Если у вас есть действующий договор ИТС, стоит отправить поврежденный файл на официальный email техподдержки 1С. У разработчиков платформы имеются закрытые внутренние утилиты, которые умеют обрабатывать сбойные участки файлов и в некоторых случаях могут частично спасти ваши данные.
Если ни один штатный метод не помог, а архив сильно поврежден нулями, восстановить данные привычным способом не получится. Исправить такую ошибку, просто открыв файл и удалив "битые" строки, невозможно.
Однако существуют неофициальные сторонние утилиты-распаковщики файлов .dt. Восстановить утерянные пользовательские данные (документы, справочники, регистры) из затертых участков они не смогут, но с их помощью из уцелевшей части бинарного архива можно попытаться извлечь файл конфигурации .cf.
Извлечение файла .cf — это огромный плюс. Это позволит вам создать новую чистую базу и загрузить в нее полностью готовую структуру со всеми доработками программистов. Далее останется лишь провести инвентаризацию и ввести начальные остатки в новую базу. Такой подход сэкономит массу времени и денег, так как вам не придется заново восстанавливать бизнес-логику и код нетиповой конфигурации.