Подробный гайд по поиску процессов, блокирующих файлы базы 1С
Проблема с блокировкой файлов базы 1С (чаще всего это файл 1Cv8.1CD, а также служебные файлы .lck, .log или файлы кэша) — классическая ситуация для администратора 1С. Из-за неё пользователи не могут войти в базу, не создаются резервные копии, а при попытке обновления возникают ошибки.
Метод 1. Использование «Монитора ресурсов» Windows (Самый быстрый способ)
Этот инструмент встроен в Windows и позволяет найти процесс, удерживающий дескриптор (handle) файла.
- Нажмите
Win + R, введитеresmonи нажмите Enter. - Перейдите на вкладку ЦП (CPU).
- Раскройте раздел Ассоциированные дескрипторы (Associated Handles).
- В строке «Поиск дескрипторов» (Search Handles) введите имя папки с базой 1С или имя самого файла (например,
1Cv8.1CD). - Подождите несколько секунд. В списке появятся процессы, которые прямо сейчас обращаются к файлу.
- Типичные виновники:
1cv8.exe,rphost.exe,dbgs.exe(отладчик),SearchIndexer.exe(индексация Windows),avp.exe(антивирус),AcronisилиVeeam.
- Типичные виновники:
- Как снять блокировку: Кликните правой кнопкой мыши по найденному процессу и выберите «Завершить процесс» (End Process).
Метод 2. Process Explorer от Sysinternals (Для глубокого анализа)
Если встроенный монитор не дал полной картины, используйте утилиту от Марка Руссиновича (Microsoft).
- Скачайте Process Explorer - https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer и запустите его от имени Администратора.
- Нажмите
Ctrl + F(или иконку бинокля). - Введите часть пути к базе (например,
1Cv8или имя папки). - В результатах поиска вы увидите точный PID процесса и путь к файлу.
- Выделите процесс в главном окне, на нижней панели перейдите на вкладку Handles, найдите заблокированный файл и закройте дескриптор (ПКМ -> Close Handle) или завершите процесс целиком.
Метод 3. Если база 1С находится на сетевой шаре (Файловый сервер)
Если база лежит на сервере (SMB-шара), а пользователи подключаются по сети, локальные инструменты на клиентском ПК не помогут. Нужно искать на сервере.
Способ А: Через оснастку «Управление компьютером»
- На сервере откройте
compmgmt.msc(Управление компьютером). - Перейдите в: Служебные программы -> Общие папки -> Открытые файлы (Open Files).
- В списке найдите путь к вашей базе 1С. Вы увидите, какой пользователь (и с какого IP) держит файл.
- ПКМ по строке -> Закрыть открытый файл (Close Open File).
Способ Б: Через PowerShell (быстро и удобно)
Откройте PowerShell от администратора на сервере и выполните:
Get-SmbOpenFile | Where-Object Path -like "*1Cv8.1CD*"
Чтобы принудительно закрыть сессию конкретного пользователя:
Get-SmbOpenFile | Where-Object Path -like "*1Cv8.1CD*" | Close-SmbOpenFile -Confirm:$false
Метод 4. Клиент-серверная 1С (SQL + Сервер 1С)
Если у вас клиент-серверный вариант, то понятие «блокировки файла» часто подменяется блокировкой на уровне СУБД (MS SQL / PostgreSQL) или сеансами в кластере 1С.
1. Консоль администрирования серверов 1С:
- Откройте консоль, перейдите в кластер -> Информационные базы -> Нужная база -> Сеансы.
- Найдите «зависшие» сеансы (например, фоновые задания, регламентные задания, Web-сервисы или COM-соединения), которые не дают выполнить монопольный режим.
- Удалите (принудительно завершите) проблемные сеансы.
2. На уровне MS SQL Server:
- Запустите скрипт для поиска блокировок:
EXEC sp_who2;или используйте Activity Monitor. - Найдите процессы со статусом
SUSPENDEDилиSLEEPING, привязанные к базе 1С, и выполнитеKILL <SPID>.
3. На уровне PostgreSQL:
* Запрос для поиска активных/зависших подключений:
SELECT pid, usename, application_name, state, query
FROM pg_stat_activity
WHERE datname = 'ИмяВашейБазы1С' AND state != 'idle';
- Убить процесс:
SELECT pg_terminate_backend(pid);
Метод 5. «Фантомные» блокировки (Файлы .LCK и кэш)
Иногда ОС не держит файл, но 1С «думает», что он занят.
1. Файл блокировки 1Cv8.lck
- В папке с файловой базой есть скрытый файл
1Cv8.lck. Он создается при запуске 1С и удаляется при закрытии. - Если 1С «вылетела» с ошибкой или сервер потерял питание, файл
.lckостается.
Решение:
Убедитесь, что в базе точно никого нет (через консоль кластера или отключив сетевую шару), и просто удалите файл 1Cv8.lck вручную.
2. Очистка кэша 1С
- Часто блокировку вызывает некорректно сохраненный кэш на стороне клиента.
- Удалите папки кэша по пути:
C:\Users\Имя_Пользователя\AppData\Local\1C\1cv8иRoaming\1C\1cv8.
3. Тестирование и исправление (Т и И)
- Запустите конфигуратор в монопольном режиме (если пускает).
- Меню Администрирование -> Тестирование и исправление.
- Поставьте галочки: Реструктуризация таблиц ИБ, Пересчет итогов, Проверка логической целостности. Это сбросит внутренние флаги блокировок.
Частые причины и как их предотвратить (Best Practices)
1. Антивирусы и Бэкапы (Главная проблема!)
- Антивирус (Касперский, ESET, Defender) при сканировании монопольно открывает огромный файл
1Cv8.1CDна чтение. Если в этот момент 1С пытается записать в него данные, возникает жесткая блокировка и вылет пользователей.
Решение:
Обязательно добавьте папки с базами 1С, каталоги сервера 1С (srvinfo) и процессы (1cv8.exe, rphost.exe, ragent.exe, dbgs.exe) в исключения антивируса (приоритет: не сканировать при чтении/записи).
- Настройте расписание бэкапов (Acronis, Veeam, Windows Server Backup) строго на ночное время, когда в 1С нет пользователей.
2. Служба индексации Windows (Windows Search)
SearchIndexer.exeчасто пытается проиндексировать текст внутри.1CDи.txtфайлов.
Решение:
Зайдите в свойства папки с базой 1С -> Дополнительно -> Снимите галочку «Разрешить индексировать содержимое файлов в этой папке в дополнение к свойствам файла».
3. Открытый Конфигуратор или Отладчик (dbgs.exe)
- Если администратор оставил открытым Конфигуратор или запущен отладчик, база может быть переведена в монопольный режим или держать транзакции открытыми.
4. Регламентные задания и Web-сервисы
- Зависшее фоновое задание (например, загрузка курсов валют или обмен с сайтом) может бесконечно удерживать блокировку на уровне СУБД. Регулярно мониторите «Активные пользователи» и «Сеансы» в консоли кластера.
Важно:
Принудительное завершение процессов rphost.exe (сервер 1С) или sqlservr.exe (СУБД) через Диспетчер задач приведет к аварийному отключению всех пользователей и возможному повреждению таблиц базы данных. Завершайте только конкретные 1cv8.exe (клиенты) или используйте корректные методы разрыва соединений через PowerShell и консоли!
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.