Как исправить ошибки CodeBase Error -70 и -10 при запуске 1С 7.7?

Системный администратор 1С v7.7 IT и автоматизация бизнеса
← На главную

Каждый специалист, работающий с платформой 1С:Предприятие 7.7, рано или поздно сталкивается со специфическими сбоями файловой СУБД. Особое место среди них занимают низкоуровневые ошибки СУБД CodeBase. Появление сообщений вида CODEBASE ERROR /// reading file, сопровождающихся кодами Error #: -70 или Error #: -10, способно парализовать работу всей организации.

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

1. Техническая суть ошибок СУБД CodeBase в 1С 7.7

Платформа 1С 7.7 в файловом режиме использует движок стороннего разработчика — систему управления базами данных CodeBase от компании Sequiter Software. Вся база данных представляет собой набор файлов таблиц с расширением .DBF и соответствующих им индексных файлов с расширением .CDX. Ошибки с отрицательными индексами возвращаются непосредственно ядром этого движка при невозможности выполнить стандартные операции чтения/записи.

Рассмотрим две наиболее опасные ошибки:

2. Первичная диагностика и локализация проблемы

Если при попытке запустить информационную базу или выполнить процедуру «Тестирование и исправление» в Конфигураторе система выдает список ошибок доступа к файлам (1SUSERS, 1SSYSTEM, 1SCONST и т.д.), выполним несколько последовательных диагностических шагов.

Шаг 1. Анализ пути к информационной базе

Обратим внимание на путь к файлам, указанный в ошибке. Наличие спецсимволов, кириллицы в "битой" кодировке (например, D:Data\7\LyЁюё\1SUSERS.DBF) часто становится причиной сбоя инициализации сессии. Платформа 1С 7.7 крайне чувствительна к длине путей и корректности символов.

Переместим каталог с базой данных в корень диска, используя короткое имя папки латиницей без пробелов (например, D:\DB77\). Перевыберем путь к базе в стартовом окне запуска 1С и попробуем открыть ее снова.

Шаг 2. Очистка индексных файлов (CDX)

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

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


@echo off
echo Удаление индексных файлов CDX...
del /f /q *.cdx
echo Индексы успешно удалены. Запустите 1С в монопольном режиме для переиндексации.
pause

Шаг 3. Проверка физических размеров файлов

Откроем каталог информационной базы в проводнике или любом файловом менеджере и внимательно изучим размеры основных файлов: 1Cv7.md, 1Cv7.dd, 1SUSERS.DBF, 1SSYSTEM.DBF.

Если размеры большинства ключевых DBF-файлов составляют ровно 1 КБ, а при попытке открыть их через специализированный DBF-просмотрщик (например, DBF Viewer) программа сообщает о невозможности прочитать заголовок — это главный признак необратимого повреждения данных или деструктивного вмешательства внешнего ПО.

3. Альтернативные причины ошибки -70 (не связанные с вирусами)

Прежде чем переходить к худшему сценарию, проанализируем три технические причины, которые также могут вызывать ошибку Error #: -70:

  1. Превышение лимита размера файла в 2 ГБ: Движок CodeBase использует знаковые 32-битные смещения для адресации данных. Когда размер любой таблицы (чаще всего страдают таблицы итогов 1SBKTTL.DBF, проводок 1SENTRY.DBF или журнала документов 1SJOURN.DBF) приближается к отметке 2.14 ГБ, СУБД теряет способность читать новые записи в конце файла, возвращая ошибку чтения -70.
  2. Блокировки со стороны антивирусного ПО: Современные антивирусы при сканировании файлов «на лету» могут монопольно захватить крупный DBF-файл прямо во время активной транзакции 1С. В этот момент движок 1С получает отказ от операционной системы в доступе на чтение, что мгновенно приводит к аварийному завершению работы программы. Решением является добавление всей папки с базами данных 1С 7.7 в исключения антивируса.
  3. Проблемы сетевых протоколов (Oplocks): Если база данных расположена на сетевом ресурсе, механизмы оппортунистических блокировок (Opportunistic Locks) в протоколах SMB v2/v3 могут вызывать рассинхронизацию кэша на клиентских машинах. Это приводит к фантомным ошибкам чтения файлов. Для устранения проблемы рекомендуется отключать Oplocks на сервере или переводить базу данных в терминальный режим работы.

4. Сценарий атаки вируса-шифровальщика

Если перенос базы в другую директорию не помог, удаление CDX-файлов завершается ошибками доступа, а размер системных таблиц стал подозрительно мал — мы имеем дело с атакой вредоносного ПО (вируса-вымогателя).

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

Обратите внимание, почему при этом базы 1С v8.3 (особенно клиент-серверные) могут продолжать работать в штатном режиме. Базы данных MS SQL Server или PostgreSQL надежно защищены процессами самих СУБД, которые монопольно удерживают файлы баз данных, не позволяя сторонним процессам шифровальщика получить к ним доступ на запись. Файловые же базы 1С 7.7, лежащие в общих сетевых папках со свободным доступом на чтение и запись для пользователей, становятся идеальной мишенью.

5. Инструкция по восстановлению данных при повреждении базы

Если резервных копий (бэкапов) не оказалось, стандартное «Тестирование и исправление» запустить невозможно. Проанализируем профессиональные методы восстановления, которые используют системные администраторы для спасения уцелевшей информации.

Метод А. Восстановление оригинальных файлов через низкоуровневый софт

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

Важно: Немедленно прекратите любые операции записи на пострадавший диск! Не копируйте туда новые программы и не проводите тесты на нем.

  1. Выключите компьютер (желательно аварийно, зажав кнопку питания, чтобы Windows не успела записать кэш на диск).
  2. Подключите этот жесткий диск к другому заведомо чистому компьютеру в качестве вторичного накопителя.
  3. Запустите профессиональную утилиту восстановления данных (например, R-Studio или Hetman Partition Recovery).
  4. Проведите глубокое сканирование сектора за сектором. Нам нужно искать удаленные файлы с расширением .dbf и .md в исходной директории.
  5. Восстановите найденные файлы на другой физический накопитель.

Метод Б. Извлечение данных из теневых копий Windows (VSS)

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

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

vssadmin list shadows

Если в списке присутствуют снимки, созданные до момента атаки, мы можем принудительно восстановить из них каталог с базой данных.

Метод В. Ручная реконструкция заголовков DBF-таблиц

В случаях, когда файлы зашифрованы частично (вирус повредил только первые несколько килобайт заголовка, но основной массив записей внутри DBF остался цел), структуру таблиц можно восстановить с помощью словаря данных 1Cv7.dd.

  1. Создадим в Конфигураторе абсолютно новую чистую базу данных на основе нашего файла метаданных 1Cv7.md (если он уцелел или был восстановлен).
  2. При первом запуске чистой базы платформа сгенерирует абсолютно новые, пустые DBF-файлы с корректными и здоровыми заголовками.
  3. Используя специализированные утилиты восстановления таблиц (например, DBF Doctor, DBF Recovery или СУБД Visual FoxPro), мы можем извлечь «выжившие» массивы записей из поврежденного файла базы данных и склеить их со здоровыми заголовками, взятыми из созданной пустой базы.

Метод Г. Принудительное пересоздание словаря базы данных (ошибка -10)

Если система выдает ошибку «Код: -10. Ошибка открытия словаря базы данных» (отсутствует или испорчен файл 1Cv7.dd), мы можем заставить Конфигуратор сгенерировать этот файл заново на основе метаданных:

  1. Проверим наличие каталога базы данных. Если в нем присутствует папка с именем NEW_STRU, скопируем файлы 1Cv7.md и 1Cv7.dd оттуда непосредственно в корневой каталог базы с заменой.
  2. Если папки нет, откроем базу данных в режиме Конфигуратор.
  3. Перейдем в дерево метаданных, найдем любую неиспользуемую константу или справочник и внесем минимальное фиктивное изменение (например, допишем один символ в поле «Описание» константы, а затем сотрем его).
  4. Нажмем кнопку «Сохранить». Конфигуратор проанализирует схему метаданных и в процессе сохранения автоматически сформирует новый, абсолютно корректный файл структуры таблиц 1Cv7.dd.

6. Рекомендации по предотвращению подобных сбоев

Для того чтобы обезопасить базу данных 1С 7.7 от разрушительных сбоев файловой системы и вирусных угроз в будущем, внедрим три простых правила:

← На главную