Работа с 1С в файловом режиме имеет одно неприятное свойство: когда пользователи забывают закрыть сессии, база блокируется для административных операций. Обновление конфигурации, резервное копирование или даже банальное обслуживание становятся невозможными, пока все соединения не будут разорваны. В отличие от клиент-серверного варианта, где админ может управлять сессиями через кластер серверов 1С, в файловой версии инструментов заметно меньше — но они есть.
Эта статья собрана на основе реальных кейсов администрирования 1С:Предприятие 8.3 (включая актуальные релизы платформы) и учитывает нюансы работы с .1CD-файлами на локальных и сетевых дисках. Мы разберём 5 рабочих методов — от штатных средств до скриптов на PowerShell, а также объясним, почему некоторые популярные советы (вроде ручного удаления 1Cv8.lck) могут привести к потере данных или повреждению базы. Если вам нужно срочно освободить базу для технических работ — читайте далее.
1. Штатный способ: использование «Менеджера кластера» (для 1С 8.3.10+)
Начиная с версии 8.3.10, в платформе появился встроенный инструмент для управления сессиями — Менеджер кластера. Он работает даже в файловом режиме, хотя многие админы об этом не знают. Чтобы им воспользоваться:
Запустите 1С:Предприятие в режиме
Конфигураторот имени администратора.Перейдите в меню
Администрирование → Управление сеансами.В открывшемся окне вы увидите список активных пользователей с указанием времени подключения, имени компьютера и версии клиента.
Выделите нужные сессии и нажмите
Завершить сеанс.
⚠️ Внимание: Если пользователь в этот момент сохранял документ или проводил операцию с транзакцией, данные могут быть утеряны. Всегда предупреждайте сотрудников за 5–10 минут до принудительного разрыва.
Перед использованием Менеджера кластера проверьте, не запущена ли регламентная операция (например, закрытие месяца) — её прерывание может нарушить целостность данных.
2. Утилита rac: командная строка для админов
Утилита rac.exe (Remote Administration Console) входит в комплект поставки 1С:Предприятия и позволяет управлять сессиями из командной строки. Это самый надёжный способ для автоматизации или работы на сервере без графического интерфейса.
Чтобы выгнать всех пользователей из базы C:\Bases\Trade.1CD, выполните:
"C:\Program Files\1cv8\8.3.22.1854\bin\rac.exe" session --disconnect-all --cluster="C:\Bases\Trade.1CD"
Ключи команды:
- 🔹
--disconnect-all— завершает все сессии. - 🔹
--cluster— путь к файловой базе (обязательно в кавычках, если путь содержит пробелы). - 🔹
--force— принудительное завершение (используйте только если сессии не закрываются стандартным способом).
⚠️ Внимание: Утилита rac.exe должна запускаться от имени пользователя, имеющего права на файл базы данных (.1CD). Если база расположена на сетевом диске, используйте UNC-путь (например, \\Server\Bases\Trade.1CD).
3. Ручное удаление файлов блокировки: риски и правила
В сети часто советуют просто удалить файлы 1Cv8.lck и 1Cv8CDB.LCK в папке с базой. Этот метод работает только в крайних случаях и чреват последствиями:
- 💥 Повреждение данных, если в момент удаления шла запись в базу.
- 💥 «Подвисание» базы при следующем запуске (потребуется
chdbfl.exeдля восстановления). - 💥 Потеря несохранённых документов у пользователей.
Если вы всё же решились на этот шаг, следуйте алгоритму:
Убедиться, что ни один пользователь не работает с базой (проверьте через Диспетчер задач)
Закрыть все процессы 1cv8.exe, 1cv8s.exe, rmngr.exe>
Создать резервную копию папки с базой
Удалить файлы .lck и .cdb (если есть)
Перезапустить службу Агент сервера 1С:Предприятия (если используется)
-->
⚠️ Внимание: После удаления .lck-файлов база может потребовать проверки целостности. Используйте утилиту chdbfl.exe с ключом -ibcheck:
"C:\Program Files\1cv8\8.3.22.1854\bin\chdbfl.exe" -ibcheck "C:\Bases\Trade.1CD"
4. Скрипты на PowerShell для массового отключения
Если вам нужно регулярно очищать сессии (например, по ночам для резервного копирования), автоматизируйте процесс с помощью PowerShell. Ниже скрипт, который завершает все процессы 1cv8.exe, связанные с конкретной базой:
# Завершение сессий 1С для файловой базы
$basePath = "C:\Bases\Trade.1CD"
$processes = Get-Process | Where-Object { $_.Path -like "1cv8.exe" -and $_.CommandLine -like "$basePath" }
foreach ($process in $processes) {
Write-Host "Завершаю процесс $($process.Id) - $($process.CommandLine)"
$process.Kill()
Start-Sleep -Seconds 1
}
Write-Host "Все сессии для базы $basePath завершены."
Особенности скрипта:
- 🔧 Работает только если пользователи подключены локально (не через RDP или терминальный сервер).
- 🔧 Не влияет на фоновые задачи (например, регламентные задания).
- 🔧 Требует прав администратора.
Как модифицировать скрипт для сетевой базы?
Для сетевой базы (\\Server\Bases\Trade.1CD) замените проверку $_.CommandLine на поиск по UNC-пути. Добавьте перед циклом строку:
$basePath = $basePath.Replace("\", "\\")
Это экранирует обратные слэши для корректной работы с -like.
5. Перезагрузка сервера или компьютера: последний шанс
Если ни один из методов не сработал, а база критически важна для работы, остаётся радикальное решение — перезагрузка хоста. Этот способ гарантированно разрывает все сессии, но имеет минусы:
| Преимущества | Недостатки |
|---|---|
| ✅ 100% эффективность (все сессии будут закрыты) | ❌ Простой для всех пользователей сервера |
| ✅ Не требует знания 1С | ❌ Возможна потеря несохранённых данных |
| ✅ Работает даже при «зависших» процессах | ❌ Может прервать фоновые задачи (например, обмен данными) |
⚠️ Внимание: Перед перезагрузкой проверьте, не запущены ли критические операции (например, выгрузка данных в ФНС или обмен с 1С:ЗУП). Используйте команду для отложенной перезагрузки:
shutdown /r /t 300 /c "Перезагрузка сервера для освобождения базы 1С. Сохраните данные!"
Эта команда даст пользователям 5 минут (300 секунд) на сохранение.
Чего делать НЕЛЬЗЯ: распространённые ошибки
Некоторые «советы» из интернета могут нанести базе непоправимый вред. Вот что категорически запрещено:
- 🚫 Удалять файл базы (
.1CD) во время работы пользователей.
Это приведёт к повреждению структуры данных и потребует восстановления из резервной копии.
- 🚫 Использовать
Taskkill /F /IM 1cv8.exeбез фильтрации.
Команда завершит ВСЕ процессы 1С на сервере, включая фоновые задачи других баз.
- 🚫 Изменять права доступа к файлу
.1CDвручную.
Это может привести к ошибкам блокировки (
Ошибка блокировки данных). - 🚫 Игнорировать журнал регистрации (
1Cv8Log\).
Перед принудительным отключением проверьте, не выполняются ли критические операции (например,
ЗагрузкаДанныхXML).
Самая частая ошибка — удаление файлов .lck без предварительной остановки процессов 1cv8.exe. Это равносильно «выдёргиванию шнура» из работающего компьютера: данные могут быть повреждены на уровне файловой системы.
FAQ: Частые вопросы по управлению сессиями в 1С файловой
❓ Почему после удаления .lck-файлов база не открывается?
Скорее всего, в момент удаления шла запись в базу, и структура файла была повреждена. Попробуйте:
- Восстановить базу из резервной копии.
- Запустить
chdbfl.exeс ключом-ibrecover. - Если не помогает — создать новую базу и загрузить в неё данные через
Выгрузить/Загрузить данные XML.
❓ Можно ли выгнать пользователя из 1С, не прерывая его работу?
Нет. В файловом режиме все сессии равноправны, и их принудительное завершение всегда ведёт к потере несохранённых данных у пользователя. Единственный «мягкий» способ — попросить пользователя сохранить изменения и закрыть программу самостоятельно.
❓ Почему утилита rac.exe не видит мою файловую базу?
Вероятные причины:
- Указан неверный путь к базе (проверьте регистр и слеши).
- Утилита запущена от пользователя без прав на файл
.1CD. - База открыта в монопольном режиме (
Конфигураторс галочкойМонопольно).
Решение: запустите rac.exe от имени администратора и используйте полный UNC-путь (например, \\Server\Share\Base.1CD).
❓ Как запретить пользователям подключаться к базе на время обслуживания?
Создайте в папке с базой файл 1Cv8.1CD (без расширения) с текстом:
[Common]
DenyAccess=1
Это временно заблокирует доступ. После завершения работ удалите файл.
❓ Почему после принудительного отключения пользователи жалуются на ошибку «Файл базы данных повреждён»?
Это означает, что в момент разрыва сессии шла запись в базу. Восстановите целостность:
- Запустите
chdbfl.exe -ibcheck [путь_к_базе]. - Если ошибки найдены — выполните
chdbfl.exe -ibrecover [путь_к_базе]. - Проверьте логи в
1Cv8Log\на наличие критических ошибок.
Если повреждения серьёзные — восстанавливайтесь из резервной копии.