Каждый администратор или разработчик 1С рано или поздно сталкивается с неприятной ситуацией: при попытке открыть Конфигуратор система выдает критическую ошибку: «Ошибка блокировки информационной базы для конфигурирования. Возможно информационная база уже открыта конфигуратором». При этом вы точно знаете, что никто из коллег в данный момент не работает с конфигурацией, а зависший процесс 1cv8.exe намертво заблокировал файлы базы данных и отказывается завершаться стандартными средствами Windows.
Особенно критичной эта проблема становится на терминальных серверах, где работают десятки пользователей, и оперативно выполнить перезагрузку всего сервера для сброса зависшей сессии попросту невозможно. В этой статье мы подробно разберем, почему возникает эта ошибка, как безопасно снять блокировку файлов базы данных и как принудительно завершить «неубиваемый» процесс 1cv8.exe без ущерба для остальных пользователей.
Прежде чем переходить к радикальным мерам, давайте проанализируем ситуацию и поймем, почему операционная система не позволяет закрыть зависший процесс даже пользователю с правами локального администратора. В среде Windows (особенно на многопользовательских терминальных серверах) существует несколько классических причин ухода процесса 1С в режим глубокого ожидания ядра (I/O Wait), из-за которого его невозможно убить через стандартный Диспетчер задач:
splwow64.exe). Если пользователь отправлял на печать отчет или документ из 1С, операционная система запускает специальный транслятор печати splwow64.exe для связи 32-битного приложения 1С с 64-битной службой печати ОС. Если сетевой принтер завис или отключился, этот процесс-посредник намертво зажимает родительский поток 1С. При попытке убить 1cv8.exe система выдает сообщение «Отказано в доступе».1Cv8.1CL или самому файлу базы данных 1Cv8.1CD. В этот момент процесс 1С зависает в попытке получить монопольный доступ к ресурсу.Теперь, когда мы понимаем физику процесса, рассмотрим пошагово эффективные методы устранения блокировки.
Если файловая база данных 1С опубликована на сервере в качестве сетевого ресурса (общая папка), операционная система сама кэширует и держит дескрипторы открытых файлов. Мы можем принудительно заставить ОС «отпустить» файлы базы данных.
Разберем этот процесс по шагам:
compmgmt.msc и нажмите Enter для запуска оснастки «Управление компьютером».1Cv8.1CD, 1Cv8.1CL и временные файлы блокировок 1Cv8tmp.1CL.После принудительного закрытия сетевых дескрипторов операционная система освободит файлы базы, и зависший на клиенте процесс 1cv8.exe либо мгновенно завершится сам, либо его можно будет легко закрыть обычным Диспетчером задач.
Если причиной блокировки стала очередь печати, завершение процесса 1С заблокировано системной службой. Попробуем решить эту проблему через устранение первопричины:
splwow64.exe.1cv8.exe.Для того чтобы предотвратить повторение этой проблемы в будущем, мы рекомендуем настроить реестр Windows на автоматическое закрытие зависших процессов трансляции печати. Для этого выполните команду regedit, перейдите по пути:
HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\SysProcs
Создайте в этом разделе параметр с именем splwow64.exe (тип DWORD) со значением 0. Это заставит операционную систему корректно тушить процессы печати сразу после того, как пользователь закроет или завершит сеанс 1С.
Когда обычных прав администратора Windows не хватает для принудительного снятия задачи, необходимо повысить привилегии до уровня локальной системы (SYSTEM). В этом нам поможет официальная системная утилита от Microsoft — PsExec из пакета Sysinternals.
Рассмотрим алгоритм действий:
psexec -s -i taskkill /F /IM 1cv8.exe
Параметр -s указывает утилите запустить команду от имени системной учетной записи, а -i обеспечивает интерактивное взаимодействие с рабочим столом. В 99% случаев этот способ позволяет закрыть любой «неубиваемый» процесс без перезагрузки операционной системы.
Также вы можете запустить интерактивный диспетчер процессов Process Explorer от имени SYSTEM с помощью команды:
psexec -s -i procexp.exe
Найдите в открывшемся окне процесс 1cv8.exe, нажмите правой кнопкой мыши и выберите Kill Process Tree для уничтожения процесса со всеми его дочерними ветками.
Если графический интерфейс операционной системы зависает или не позволяет выполнить нужные действия, мы можем использовать мощный консольный инструментарий Windows. Попробуем альтернативные варианты команд:
В консоли PowerShell выполните команду принудительного закрытия с параметром -Force:
Stop-Process -Name "1cv8" -Force
Если PowerShell недоступен, воспользуемся инструментарием управления Windows (WMIC) в классической командной строке:
wmic process where name="1cv8.exe" call terminate
Эти команды работают на более низком уровне взаимодействия с API операционной системы, обходя стандартные ограничения Диспетчера задач.
Иногда файлы блокировок удерживаются не самой базой, а испорченным локальным кэшем конфигурации на компьютере пользователя. Для устранения этой проблемы выполните очистку кэша:
/ClearCache.Чтобы снизить вероятность зависания сессий пользователей (особенно при использовании мобильных клиентов или веб-подключений), выполните профилактическую настройку параметров базы в режиме Предприятия:
7200 секундам (2 часа).Этот параметр заставит платформу 1С автоматически корректно завершать сессии пользователей, которые ушли в «спящий» режим из-за неактивности или потери связи на мобильных устройствах, предотвращая блокировку файлов базы данных.