Как узнать номер релиза конфигурации 1С из поврежденного файла 1Cv8.1CD

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

При аварийном завершении работы программы или сбое оборудования файл базы данных 1Cv8.1CD может повредиться. В таких ситуациях база перестает запускаться, а резервных копий под рукой не оказывается. Для восстановления работоспособности нам часто требуется развернуть пустую чистую базу точно такой же версии, чтобы перенести туда конфигурацию или данные. Но как узнать точную версию релиза, если сама база не открывается? Разберем эту задачу подробно по шагам.

Почему внутри таблиц базы данных отображается «абракадабра»

При попытке заглянуть внутрь служебных таблиц базы данных через специализированные просмотрщики мы часто видим нечитаемые символы. Выясним причину этого поведения. Дело в том, что конфигурация 1С в таблице Config (а также в таблице ConfigSave) хранится в сжатом бинарном формате. Платформа использует алгоритм сжатия Deflate без стандартных заголовков архива. Чтобы прочитать текстовые свойства и GUID-идентификаторы, нам потребуется выполнить принудительную декомпрессию этих данных.

Пошаговый алгоритм определения релиза через TOOL_1CD

Для решения нашей задачи рассмотрим проверенную последовательность действий по извлечению номера релиза с помощью популярной утилиты TOOL_1CD.

  1. Извлечение и распаковка файла root. Откроем поврежденный файл 1Cv8.1CD в утилите. Перейдем к таблице Config (или ConfigSave). Найдем строку, в которой поле FileName содержит значение root. Нам необходимо выгрузить бинарное содержимое этого поля. Для этого используем встроенную функцию утилиты для сохранения декомпрессированного потока (разжатого zlib-архива).
  2. Анализ структуры файла root. Откроем полученный текстовый файл. В нем мы увидим специальную текстовую структуру 1С, содержащую строку с уникальным идентификатором свойств нашей конфигурации. Примерная структура декомпрессированного файла выглядит следующим образом:

{1,
{2,e0666db2-45d6-49b4-a200-061c6ba7d569}
}
  1. Записанный здесь GUID является уникальным идентификатором свойств нашей конфигурации. Скопируем этот идентификатор.
  2. Поиск и распаковка свойств конфигурации. Вернемся в утилите к таблице Config и найдем строку, где поле FileName полностью совпадает со скопированным GUID. Сохраним бинарные данные этой строки с обязательным применением декомпрессии.
  3. Чтение версии релиза. Откроем распакованный файл в любом текстовом редакторе. В самом начале структуры мы увидим понятные свойства конфигурации в открытом текстовом виде: системное имя (например, "БухгалтерияПредприятия"), синоним (например, "Бухгалтерия предприятия, редакция 3.0") и, наконец, искомый номер релиза (например, "3.0.140.20").

Альтернативные способы поиска версии при сильных разрушениях базы

Что делать, если таблица Config повреждена настолько, что прочитать файл root не удается? Проанализируем обходные пути.

  1. Использование таблицы ConfigSave. Если сбой произошел в процессе обновления конфигурации, основные данные могли разрушиться, но копия конфигурации поставщика или редактируемой конфигурации может сохраниться в служебной таблице ConfigSave. Проделаем аналогичные шаги по поиску файла root именно в этой таблице.
  2. Выгрузка конфигурации поставщика. В утилите чтения структуры базы данных часто доступна функция сохранения конфигурации поставщика в файл формата .cf. Даже при сильном повреждении пользовательских данных, этот блок может остаться нетронутым. Сохраненный файл конфигурации можно попытаться открыть в чистой базе или распаковать для анализа.
  3. Анализ локального кэша платформы. Это один из самых простых и безопасных способов. Если база данных запускалась на компьютере пользователя до сбоя, платформа 1С сохранила ее временные файлы в кэше. Перейдем по пути %LOCALAPPDATA%\1C\1cv8 или %APPDATA%\1C\1cv8. Найдем каталог, имя которого соответствует уникальному идентификатору базы из списка запуска. Внутри кэша файлы уже декомпрессированы, и мы сможем найти свойства конфигурации с указанием точной версии.
  4. Просмотр таблицы PARAMS. В некоторых случаях минимальную информацию о версии структуры можно извлечь из таблицы Params (записи v8system или version), хотя точный релиз прикладного решения там содержится крайне редко.

Особенности и ограничения различных версий платформы

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

  1. Новый формат баз данных (платформа 8.3.8 и выше). Начиная с версии 8.3.8, формат баз данных 1Cv8.1CD изменился. Размер страницы увеличился с 4 Кб до 8 Кб и более, изменилась структура внутренних индексов. Устаревшие версии сторонних утилит просмотра не смогут открыть такой файл и выдадут ошибку. Используйте только актуальные версии инструментов, совместимые с современными форматами хранения.
  2. Утилита конвертации cnvdbfl.exe. Платформа поставляется со встроенной утилитой командной строки cnvdbfl.exe, которая позволяет принудительно изменить формат базы данных (например, понизить его до версии 8.2.14 для анализа старыми инструментами). Будьте осторожны: на сильно поврежденных файлах эта утилита может безвозвратно затереть поврежденные разделы, лишив вас возможности восстановить данные. Всегда выполняйте любые манипуляции только на копии файла!
← На главную