Ситуация, когда после обновления платформы 1С:Предприятие (например, на релиз 8.3.12.1616) пользователи начинают массово сталкиваться с ошибкой «База данных повреждена», крайне неприятна. Особенно странным выглядит тот факт, что программа запускается без проблем, дает работать некоторое время (около 10–15 минут), а затем аварийно завершает работу. При этом стандартное тестирование и исправление базы данных не выявляет никаких логических или физических ошибок.
В этой статье мы подробно разберем, почему возникает данное поведение системы, как оно связано с механизмами защиты платформы 1С, сетевыми протоколами Windows и локальным кэшем метаданных. Мы шаг за шагом проанализируем ситуацию и найдем оптимальные пути решения проблемы.
Многие системные администраторы и пользователи не догадываются о том, как именно работает встроенная система защиты платформы 1С:Предприятие, начиная с версий 8.3.10.x и старше. Выясним причину странного интервала в 10–15 минут перед падением базы.
Проверка легальности использования платформы происходит не только в момент ее запуска. Защита имеет так называемый отложенный (фоновый) режим работы:
haspflt.sys, vushle.sys), измененные библиотеки (например, пропатченную backbas.dll), а также специфические ветки в реестре Windows.Почему пишется, что повреждена база данных? Если в момент аварийного завершения процесса 1cv8.exe или 1cv8c.exe выполнялась транзакция записи в файловую СУБД, файл базы данных 1Cv8.1CD блокируется операционной системой. В каталоге базы остается зависший файл блокировки 1Cv8.1CLck. При следующей попытке обращения к базе данных другие сеансы получают системную ошибку о повреждении структуры файла СУБД, хотя физически база данных может оставаться целой.
Если на сервере или рабочих станциях ранее использовались нелицензионные версии 1С, необходимо провести тотальную зачистку операционной системы. Разберем по шагам этот процесс:
C:\Windows\System32\drivers\. Ищите файлы с именами haspflt.sys, multikey.sys или vusb.sys.regedit найдите и удалите ветки реестра, содержащие упоминания эмуляторов:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\haspflt
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Emulator
C:\Program Files\1cv8\имя_релиза\bin\) отсутствует модифицированная библиотека backbas.dll. Если вы сомневаетесь, полностью переустановите платформу 1С «чистым» способом.Если база данных является файловой и располагается на общем сетевом ресурсе (сетевой папке), то платформа критически зависит от качества локальной сети и стабильности протокола передачи файлов SMBv2 или SMBv3. Рассмотрим подробнее этот аспект.
Релизы платформы линейки 8.3.12 предъявляют повышенные требования к сетевой дисковой подсистеме. Если на сетевом коммутаторе происходят микропотери пакетов или задержки, операционная система Windows временно сбрасывает кэш сетевой папки. Платформа 1С мгновенно теряет дескриптор файла базы данных 1Cv8.1CD и вылетает с критической ошибкой повреждения файла. При этом на самом компьютере, где физически лежит папка с базой, всё работает отлично.
Для того чтобы исключить сетевой фактор, выполним следующие действия:
Проанализируем ситуацию, когда несколько пользователей одновременно работают в одной сетевой файловой базе данных, но используют при этом разные релизы платформы 1С (например, у одного установлен релиз 8.3.12.1529, а у другого — 8.3.12.1616).
Разные версии платформы могут иметь незначительные отличия в механизмах внутренней блокировки таблиц СУБД. При одновременной записи документов один клиент может заблокировать таблицу способом, который другой клиент (на старой платформе) распознает как повреждение структуры файла. Это приводит к ложным аварийным завершениям работы.
Убедитесь, что на всех клиентских компьютерах установлена абсолютно одинаковая версия платформы 1С:Предприятие. Удалите все устаревшие версии через панель управления Windows, оставив только актуальный рабочий релиз.
При обновлении версии платформы локальные временные файлы (кэш конфигурации) на компьютерах пользователей могут конфликтовать со структурами данных нового движка платформы. Это провоцирует нестабильное поведение клиента.
Очистим временные файлы 1С на компьютерах пользователей. Сделать это можно двумя путями.
Способ 1. Ручное удаление временных папок:
Закройте все приложения 1С и полностью удалите содержимое следующих каталогов на локальном компьютере:
%LocalAppData%\1C\1cv8\%AppData%\1C\1cv8\Способ 2. Пересоздание пути к базе в стартере 1С:
При повторном добавлении базы данных стартер генерирует для нее новый уникальный идентификатор (GUID), благодаря чему кэш для этой базы создается с чистого листа в новой пустой папке.
Если все предыдущие шаги не помогли, возможно, база данных действительно имеет физические повреждения заголовков таблиц или индексов. В таком случае нам помогут встроенные утилиты диагностики.
Перед проведением любых манипуляций обязательно сделайте резервную копию файла 1Cv8.1CD!
Выполним процедуру восстановления по шагам:
chdbfl.exe в папке установленной платформы (каталог bin).1Cv8.1CD.Если ТИИ и Chdbfl не находят ошибок, но база продолжает падать через 10–15 минут, вернитесь к пунктам очистки следов нелицензионного ПО и проверки сетевых блокировок — в 95% случаев проблема кроется именно там.