Файл базы 1С занят другим процессом: кто его держит и как отпустить
Содержание
Чтобы освободить файл в 1С, нужно найти и закрыть процесс, который его держит. В файловой базе это почти всегда забытый 1cv8.exe или 1cv8c.exe у кого-то из пользователей, веб-сервер с публикацией базы, антивирус или программа резервного копирования. В клиент-серверной базе файла как такового нет: блокировку держит сеанс или соединение, и его завершают в консоли кластера серверов 1С.
Типичный текст ошибки в файловом варианте: Ошибка совместного доступа к файлу '...\1Cv8.1CD'. 32(0x00000020): Процесс не может получить доступ к файлу, так как этот файл занят другим процессом. При обновлении конфигурации чаще видят другое: Ошибка установки монопольного режима. Установлены соединения с информационной базой. Ниже — порядок действий для обоих вариантов, от безопасного к жёсткому.
Кто держит файл базы: быстрая диагностика блокировки
Сначала поймите, с каким вариантом базы вы работаете. Откройте окно запуска 1С, выделите базу и посмотрите строку под списком:
- 📁
File="D:\Base\Buh"— файловая база. Блокируется сам файл1Cv8.1CDв этой папке. - 🖥️
Srvr="srv1c";Ref="buh"— клиент-серверная база . Файл.1CDне используется, данные лежат в СУБД.
Дальше смотрите на текст сообщения. Он подсказывает, где искать.
Полезно сразу проверить список активных пользователей в самой 1С: в разделе Администрирование откройте панель обслуживания (в БП 3.0 она называется Обслуживание) и найдите там список активных пользователей. Если база открывается хотя бы у вас, это самый быстрый способ узнать, кто ещё в ней сидит. Учтите, что сеансы, «застрявшие» после сбоя сети, этот список может показывать не всегда.
Как освободить файл 1Cv8.1CD в файловой базе
Шаг 1. Попросить пользователей выйти
Самый мягкий способ. Если в конфигурации есть подсистема блокировки работы пользователей (она есть в БП 3.0, ЗУП 3.1, УТ 11), откройте в разделе Администрирование панель обслуживания и в ней команду блокировки работы пользователей. Задайте время начала, текст сообщения и код разрешения, затем установите блокировку.
Программа предупредит работающих пользователей и через несколько минут завершит их сеансы. Сами вы потом входите с параметром запуска /UC<код разрешения>, например /UC12345.
В файловом варианте клиенты проверяют блокировку периодически, а не мгновенно. Заложите 5–10 минут ожидания, прежде чем переходить к жёстким мерам.
Шаг 2. Найти процесс на своём компьютере
Если база лежит на этом же компьютере, найдите процесс через встроенный «Монитор ресурсов»:
- Нажмите
Win+R, введитеresmonи нажмите Enter. - Перейдите на вкладку
ЦПи разверните блокСвязанные дескрипторы. - В поле поиска введите
1Cv8.1CD. - В списке появятся процессы, которые держат файл, с их PID.
Чаще всего это 1cv8.exe (толстый клиент и Конфигуратор), 1cv8c.exe (тонкий клиент), httpd.exe или w3wp.exe (веб-сервер с публикацией базы). Сохраните данные в открытом окне 1С, если оно ваше, и закройте программу штатно. Завершать процесс через «Диспетчер задач» стоит только когда окно не отвечает.
Тот же поиск в командной строке делает утилита handle.exe из набора Sysinternals:
handle.exe -a 1Cv8.1CD
Шаг 3. Закрыть файл, открытый по сети
Если папка с базой расшарена, файл может держать пользователь с другого компьютера. На компьютере, где лежит папка, проверьте открытые сетевые файлы:
- Нажмите
Win+R, введитеcompmgmt.msc. - Откройте
Служебные программы → Общие папки → Открытые файлы. - Найдите строку с
1Cv8.1CDи посмотрите, какой пользователь его открыл. - Правой кнопкой мыши —
Закрыть открытый файл.
То же самое из командной строки, запущенной от администратора:
openfiles /query /fo table | findstr /i 1Cv8.1CD
Принудительное закрытие сетевого файла обрывает сеанс 1С у этого пользователя. Несохранённые документы пропадут. Если запись шла в момент закрытия, база может потребовать проверки. Перед принудительным закрытием сделайте копию папки базы, если есть малейшее сомнение в её целостности.
Шаг 4. Проверить сторонние программы
Если процессов 1С в списке нет, а файл всё равно занят, смотрите на остальных «держателей»:
- 🛡️ антивирус проверяет
1Cv8.1CDпри каждом изменении — добавьте папку базы в исключения; - 💾 программа резервного копирования или синхронизации (облачный диск, Robocopy по расписанию) читает файл в момент запуска 1С;
- 🌐 веб-сервер с публикацией базы держит соединение, пока жив его рабочий процесс — перезапустите службу Apache или пул приложений IIS в нерабочее время.
Шаг 5. Служебные файлы рядом с базой
В папке базы, кроме 1Cv8.1CD, лежат служебные файлы, например 1Cv8.cdn, а при реструктуризации может появиться временный 1Cv8tmp.1CD. Распространённый совет — удалить их, «чтобы снять блокировку». Делать это можно только когда вы уверены, что ни одного процесса 1С с базой уже нет: проверка через «Монитор ресурсов» ничего не находит, все пользователи вышли.
Удаление служебных файлов при живых сеансах не освобождает базу, а повышает риск её повреждения. Сначала закройте процессы, потом — и только при необходимости — переносите служебные файлы в отдельную папку, а не удаляйте сразу. Сам файл 1Cv8.1CD не трогайте.
Если ничего не помогло, перезагрузите компьютер, на котором лежит база. Это отпустит все дескрипторы, но оборвёт работу всех, кто к нему подключён, поэтому выбирайте время вне рабочего дня.
Сеансы и соединения в консоли кластера серверов 1С
В клиент-серверном варианте «освободить базу» означает завершить сеансы в ней. Делается это в консоли администрирования серверов 1С:Предприятия.
- Откройте консоль и разверните
Центральные серверы 1С:Предприятия → имя сервера → Кластеры → кластер → Информационные базы → ваша база. - Откройте узел
Сеансы. Здесь видно пользователя, компьютер, приложение (тонкий клиент, Конфигуратор, фоновое задание, COM-соединение) и время начала. - Выделите нужные сеансы и выберите
Удалитьв контекстном меню. - Если после этого база всё ещё занята, откройте узел
Соединенияи разорвите соединения, оставшиеся без сеанса.
Чтобы пользователи не заходили снова, пока вы работаете, откройте свойства информационной базы и включите Блокировка начала сеансов включена. Там же задаются время начала и окончания блокировки, сообщение и код разрешения.
Если сеанс фонового задания возвращается через минуту, в тех же свойствах базы отметьте Блокировка регламентных заданий включена. После работ снимите оба флажка, иначе обмены и регламентные операции не будут выполняться.
То же из командной строки через rac
Утилита rac работает с кластером через сервер администрирования ras, который нужно запустить отдельно. Базовая последовательность:
rac cluster list
rac infobase summary list --cluster=<uuid кластера>
rac session list --cluster=<uuid кластера> --infobase=<uuid базы>
rac session terminate --cluster=<uuid кластера> --session=<uuid сеанса>
Если на кластере заданы администраторы, добавьте параметры --cluster-user и --cluster-pwd. Полный список параметров для каждой команды показывает rac help session.
rmngr, ragent и rphost: когда перезапуск сервера оправдан
Сервер 1С состоит из нескольких процессов. Понимание их ролей помогает не перезапускать лишнего.
| Процесс | Что делает | Что будет при остановке |
|---|---|---|
ragent.exe | Агент сервера, точка входа клиента и консоли (порт 1540) | Остановится весь сервер 1С на этой машине |
rmngr.exe | Менеджер кластера (порт 1541): реестр баз, сеансов, блокировок | Кластер перестанет обслуживать базы до перезапуска |
rphost.exe | Рабочий процесс: выполняет код и держит соединения с СУБД | Оборвутся сеансы, которые он обслуживал |
rmngr не «утилита для разблокировки», а служебный процесс кластера. Вручную его не запускают и отдельно не завершают: он поднимается вместе со службой агента сервера 1С. Освободить базу, завершив rmngr, можно, но это тот же перезапуск кластера, только грубее.
Когда консоль показывает пустой список сеансов, а база всё равно не даёт монопольный доступ, порядок такой:
- Найдите в консоли узел
Рабочие процессыи посмотрите, какой процесс обслуживает базу и сколько памяти занимает. - Если в свойствах кластера включён перезапуск рабочих процессов, можно дождаться его или выключить зависший процесс через его свойства.
- Если не помогло — перезапустите службу агента сервера 1С (
services.msc, служба с именем вида «Агент сервера 1С:Предприятия 8.3»).
Перезапуск службы агента или завершение rphost.exe обрывает сеансы всех пользователей всех баз этого кластера, а не только одной базы. Делайте это вне рабочего времени или после предупреждения пользователей.
Очистка сеансовых данных кластера
Если после перезапуска службы сеансы «воскресают» или кластер ведёт себя странно, администраторы чистят сеансовые данные. Каталог кластера по умолчанию находится в srvinfo\reg_1541. В нём лежат папки с именами вида snccntx....
- Остановите службу агента сервера 1С.
- Переместите папки
snccntx*из каталога кластера во временную папку. - Запустите службу и проверьте базу.
Файл 1CV8Clst.lst в этом же каталоге хранит реестр кластера. Его не удаляют и не правят вручную: без него кластер «забудет» базы и настройки.
Блокировки в СУБД и монопольный режим
Монопольный режим нужен не для каждой операции. Он требуется для обновления структуры базы данных при изменении конфигурации, загрузки базы из .dt, тестирования и исправления. Сохранять конфигурацию в файл или выгружать .dt можно и при работающих пользователях.
Если в 1С сеансов нет, а СУБД всё ещё держит соединения или блокировки, смотрите на стороне сервера баз данных.
Microsoft SQL Server
Найти заблокированные запросы и того, кто их блокирует:
SELECT session_id, blocking_session_id, wait_type, wait_time, command
FROM sys.dm_exec_requests
WHERE blocking_session_id <> 0;
Посмотреть все подключения к базе:
EXEC sp_who2;
Завершить конкретное подключение по номеру: KILL 57;. Номер берите из колонки SPID или blocking_session_id.
PostgreSQL
SELECT pid, usename, client_addr, state, query_start, query
FROM pg_stat_activity
WHERE datname = 'buh';
Мягко прервать запрос — SELECT pg_cancel_backend(12345);, завершить подключение целиком — SELECT pg_terminate_backend(12345);.
Завершение подключения в СУБД откатывает его незавершённую транзакцию, а у пользователя 1С появится ошибка и обрыв сеанса. Сначала проверьте, не идёт ли там долгий штатный процесс: закрытие месяца, перепроведение, обмен.
Блокировки данных внутри 1С
Сообщение Превышено максимальное время ожидания предоставления блокировки значит, что другой сеанс держит транзакцию с этими же данными. Файл тут ни при чём. Ищите, кто проводит большой документ или групповую обработку, и дождитесь окончания. Если ошибка повторяется регулярно, нужен разбор через технологический журнал или «Центр управления производительностью» — это задача для специалиста по производительности.
Профилактика: как не допускать зависших блокировок
Почти все случаи «база занята» — следствие трёх вещей: пользователи не выходят из программы, регламентные операции идут в рабочее время, а обслуживание делают без предупреждения. Отсюда и меры.
Для файловой базы
- ⏰ Ограничьте время бездействия. В БП 3.0 и ЗУП 3.1 это делают в настройках пользователей и прав в разделе
Администрирование, параметр завершения работы при бездействии. - 🛡️ Добавьте папку базы в исключения антивируса и не запускайте синхронизацию облачного диска поверх неё.
- 💾 Копируйте базу штатно, а не «на ходу» файловым копированием: выгрузка
.dtили копирование файла после завершения сеансов. - 👥 Если в базе постоянно работает больше 5–10 человек, рассмотрите переход на клиент-серверный вариант: файловый режим плохо переносит такую нагрузку.
Для клиент-серверной базы
- 🔁 В свойствах кластера задайте
Интервал перезапускарабочих процессов иДопустимый объём памяти. Тогда «распухший»rphostбудет заменяться новым без ручного вмешательства. - 📋 Ночные работы делайте по сценарию: включить блокировку начала сеансов и регламентных заданий, выполнить операцию, снять блокировки.
- 🧾 Для скриптов обслуживания используйте
racвместо ручного удаления сеансов в консоли: так меньше шанс завершить не ту базу.
Пример пакетного файла для ночного обслуживания файловой базы с подсистемой блокировки пользователей:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Base\Buh" /N"Администратор" /P"пароль" /C"ЗавершитьРаботуПользователей" /UC12345
Параметр /C"ЗавершитьРаботуПользователей" запускает штатную процедуру завершения сеансов в типовых конфигурациях на БСП. Код в /UC должен совпадать с кодом разрешения в блокировке. Пароль в открытом виде в bat-файле — риск: храните такой файл в папке с доступом только для администратора.
Частые ошибки при снятии блокировки
- ❌ Удалять файлы из папки базы при живых сеансах. Блокировку держит процесс, а не файл. Процесс останется, а база может повредиться.
- ❌ Перезапускать службу 1С ради одной базы. Пострадают все базы кластера. Сначала попробуйте удалить сеансы этой базы.
- ❌ Забывать снять блокировку регламентных заданий. Обмены с банком, ЭДО и загрузка курсов перестают работать, а заметят это через несколько дней.
- ❌ Снимать процесс СУБД посреди закрытия месяца. Транзакция откатится, и операцию придётся запускать заново, а ошибка в 1С будет выглядеть как сбой.
- ❌ Искать файл
.1CDу клиент-серверной базы. Его там нет, все блокировки — в кластере и СУБД.
Частые вопросы
Можно ли освободить базу, не выгоняя пользователей?
.dt, сохранить конфигурацию в файл или обновить расширение без изменения структуры данных.