Зависший пользователь в файловой 1С: пять способов выгнать сеанс из базы
Содержание
В файловой базе 1С 8.3 нет консоли кластера, поэтому скинуть сеанс пользователя кнопкой «Завершить» не получится. Работают три пути: мягко — через Администрирование → Обслуживание → Блокировка работы пользователей (сеансы закроются сами за несколько минут), жёстко — снять процесс 1cv8c.exe или 1cv8.exe на компьютере пользователя, и «сетевой» — закрыть открытый файл 1Cv8.1CD на сервере, где лежит папка с базой.
Какой путь выбрать, зависит от того, жив ли компьютер, с которого висит сеанс. Если пользователь просто ушёл на обед с открытой 1С, хватит блокировки. Если его ноутбук выключили посреди работы, а база всё ещё считает его подключённым, поможет только сервер с общей папкой.
Почему сеанс в файловой базе «зависает»
Файловая база — это один файл 1Cv8.1CD в каталоге на диске или в сетевой папке. Каждый клиент открывает его напрямую. Пока процесс 1С на компьютере пользователя держит файл, база считает его подключённым.
Типичные причины «призрачного» сеанса:
- 🖥️ пользователь закрыл окно удалённого рабочего стола крестиком, а не вышел из системы — 1С продолжает работать в отключённом RDP-сеансе;
- 📴 компьютер ушёл в сон или его выключили кнопкой, а сетевой дескриптор файла на сервере остался открытым;
- 📶 оборвалась сеть или Wi-Fi, и клиент не успел корректно закрыть базу;
- ⏳ клиент 1С завис на долгой операции (закрытие месяца , загрузка данных) и не отвечает;
- 🌐 база опубликована на веб-сервере, и сеанс держит процесс веб-сервера, а не компьютер пользователя.
Как это проявляется. Конфигуратор не может обновить конфигурацию
базы данных и пишет, что монопольный режим установить нельзя. Тестирование и исправление не запускается. При копировании папки базы появляется ошибка вида Ошибка совместного доступа к файлу '1Cv8.1CD' или Windows сообщает, что файл занят другим процессом.
Монопольный доступ нужен не всегда. Обычная работа в Конфигураторе, просмотр модулей и выгрузка .dt идут параллельно с пользователями. Выгнать всех приходится для обновления структуры базы, загрузки .dt, тестирования и исправления.
Кто сейчас в базе: список активных пользователей
Прежде чем кого-то выгонять, выясните, кто и с какого компьютера подключён. Способов три.
В пользовательском режиме. В Бухгалтерии 3.0, ЗУП 3.1 и УТ 11 откройте Администрирование → Обслуживание и найдите ссылку «Активные пользователи». В списке видно имя пользователя, компьютер, время начала сеанса и приложение (тонкий клиент, толстый клиент, Конфигуратор).
Без конфигурации. Та же форма есть среди стандартных функций платформы: Главное меню → Все функции → Стандартные → Активные пользователи. Если пункта «Все функции» нет, включите его в Главное меню → Сервис → Параметры флажком «Отображать команду “Все функции”».
В Конфигураторе. Меню Администрирование → Активные пользователи.
Во всех трёх случаях список только информирует. Кнопки завершения сеанса в файловом варианте нет: эта команда работает лишь через сервер 1С:Предприятия.
Самая полезная колонка — «Компьютер». По ней сразу понятно, куда идти: на терминальный сервер, на рабочую станцию бухгалтера или на веб-сервер.
Если в списке висит сеанс с компьютера, который давно выключен, переходите сразу к разделу про сетевую папку: блокировка такой сеанс не закроет, потому что закрывать его некому.
Мягкое завершение: блокировка работы пользователей
Это основной и самый безопасный способ. В типовых конфигурациях на библиотеке стандартных подсистем (БП 3.0, ЗУП 3.1, УТ 11, КА, ERP) путь одинаковый:
- Откройте
Администрирование → Обслуживание. - Нажмите ссылку «Блокировка работы пользователей».
- Заполните сообщение для пользователей, например: «Обновление базы с 18:00, сохраните документы».
- Укажите время начала и окончания блокировки.
- При желании задайте код разрешения — по нему вы сами сможете зайти в заблокированную базу.
- Нажмите «Установить блокировку».
Дальше каждый открытый клиент получает предупреждение и через несколько минут закрывается сам. Пользователь успевает сохранить документ. Данные не теряются, файл базы не повреждается.
В файловом варианте блокировка физически хранится в файле 1Cv8.cdn в каталоге базы. Пока этот файл существует, новые сеансы не открываются. Это пригодится ниже.
Блокировка не действует на сеансы, которые не отвечают: зависший клиент, выключенный ноутбук, отключённый RDP-сеанс с подвисшей 1С. Если через 5–10 минут после начала блокировки в списке активных пользователей кто-то остался — его нужно снимать вручную.
После работ не забудьте снять блокировку в той же форме кнопкой «Снять блокировку». Иначе утром бухгалтерия не сможет войти и увидит сообщение о запрете начала сеансов.
Ключи запуска /C и /UC: выгнать всех без входа в интерфейс
Тот же механизм можно запустить из командной строки. Это удобно для ночного обновления по расписанию или когда открывать базу в интерфейсе долго.
В конфигурациях на БСП есть два параметра запуска:
| Параметр | Что делает |
|---|---|
/C"ЗавершитьРаботуПользователей" | устанавливает блокировку и завершает сеансы остальных пользователей |
/C"РазрешитьРаботуПользователей" | снимает блокировку |
/UC"код" | код разрешения: даёт войти в заблокированную базу |
Пример ярлыка или строки в планировщике:
"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /C"ЗавершитьРаботуПользователей" /UC"12345"
Номер платформы в пути замените на свой: он виден в каталоге C:\Program Files\1cv8\. Параметр /F указывает папку базы, а не сам файл 1Cv8.1CD.
После обновления разрешите вход:
"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /C"РазрешитьРаботуПользователей" /UC"12345"
Код из /UC должен совпадать с кодом разрешения, заданным при блокировке. Без него администратор сам упрётся в собственную блокировку.
Пароль в открытом виде в bat-файле — слабое место. Заведите для регламентных операций отдельного пользователя с нужными правами и храните скрипт в папке, доступной только администратору.
Принудительно: снять процесс 1С в Диспетчере задач или taskkill
Если клиент завис и на блокировку не реагирует, остаётся завершить процесс. Делается это на том компьютере, где запущена 1С: на рабочей станции пользователя или на терминальном сервере.
Имена процессов:
1cv8c.exe— тонкий клиент;1cv8.exe— толстый клиент и Конфигуратор.
Завершение процесса обрывает работу пользователя: всё несохранённое пропадёт. Если в этот момент шла запись в базу, есть риск повредить файл 1Cv8.1CD. Сначала предупредите человека, а при сомнениях сделайте копию папки базы, как только она освободится.
Через Диспетчер задач
- На терминальном сервере откройте Диспетчер задач, вкладку «Пользователи».
- Разверните нужного пользователя и найдите процесс «1С:Предприятие».
- Нажмите «Снять задачу».
На обычной рабочей станции то же самое делается на вкладке «Подробности» по имени процесса.
Через командную строку
На терминальном сервере удобнее снять 1С у конкретного пользователя, не трогая остальных:
tasklist /V /FI "IMAGENAME eq 1cv8c.exe"
taskkill /F /IM 1cv8c.exe /FI "USERNAME eq ivanova"
Первая команда показывает все процессы тонкого клиента
с именами пользователей. Вторая завершает процесс только у пользователя ivanova.
Если пользователь просто отключился от RDP и висит в состоянии «Отключён», можно завершить весь его сеанс Windows:
query session
logoff 3
Здесь 3 — ID сеанса из первой команды. Вместе с сеансом Windows закроется и 1С.
Если база опубликована на веб-сервере
Сеансы веб-клиента и тонкого клиента через HTTP держит процесс веб-сервера: w3wp.exe у IIS или httpd.exe у Apache. Завершить одного пользователя здесь нельзя. Перезапуск пула приложений IIS или службы Apache закроет сразу все веб-сеансы этой публикации, поэтому делайте это вне рабочего времени или после блокировки.
Сеанс с выключенного компьютера: закрыть файл на сервере
Самый частый случай «вечного» пользователя. Ноутбук выключен, процесса 1С нет нигде, а база по-прежнему занята. Причина — сервер с общей папкой всё ещё держит открытый сетевой дескриптор файла 1Cv8.1CD от этого компьютера.
Решение — закрыть файл на стороне сервера, где лежит база.
Через оснастку Windows:
- На файловом сервере нажмите
Win + R, введитеcompmgmt.msc. - Перейдите в
Служебные программы → Общие папки → Открытые файлы. - Отсортируйте по колонке «Открытый файл», найдите строки с
1Cv8.1CDв нужном каталоге. - В колонке «Доступ пользователя» и по имени компьютера определите зависший сеанс.
- Правой кнопкой — «Закрыть открытый файл».
Через PowerShell (на сервере, от имени администратора):
Get-SmbOpenFile | Where-Object { $_.Path -like "*Bases\Buh\1Cv8.1CD" } |
Select-Object FileId, ClientComputerName, ClientUserName, Path
Close-SmbOpenFile -FileId 123456789 -Force
Первая команда выводит, кто держит файл. Во второй подставьте FileId из вывода первой. Чтобы закрыть все подключения к базе разом, замените вторую строку конвейером | Close-SmbOpenFile -Force.
Закрытие файла у живого пользователя обрывает его сеанс так же жёстко, как taskkill. Сверяйте имя компьютера с тем, что видели в списке активных пользователей.
Если база лежит на NAS без доступа к таким средствам, сработает перезагрузка хранилища или отключение сетевых сессий в его веб-интерфейсе. Это крайняя мера: она обрывает всех.
Файлы блокировок в каталоге базы: что можно удалять
Инструкции про удаление файлов .lck пришли из времён 1С 7.7. В каталоге файловой базы 8.3 за блокировки отвечают другие служебные файлы рядом с 1Cv8.1CD.
| Файл | Назначение | Можно ли удалять |
|---|---|---|
1Cv8.1CD | сама база с данными и конфигурацией | никогда |
1Cv8.cdn | блокировка установки соединений (результат «Блокировки работы пользователей») | да, если блокировка «застряла» и в базу никто не может войти |
1Cv8.1CL | служебный файл учёта подключений | только когда к базе точно никто не подключён |
1Cv8Log | папка журнала регистрации | не трогать: это история действий пользователей |
Типичная ситуация с 1Cv8.cdn: ночное обновление упало, скрипт не дошёл до команды РазрешитьРаботуПользователей, и утром никто не может войти. Решение — зайти с кодом /UC и снять блокировку штатно. Если код потерян, удалите 1Cv8.cdn при закрытой базе.
Перед удалением любого служебного файла убедитесь, что к базе не подключён ни один клиент, и скопируйте всю папку базы. Удаление файлов при работающих пользователях способно повредить базу.
Если после принудительного завершения сеансов база открывается с ошибками, проверьте её утилитой chdbfl.exe из каталога bin платформы. Она проверяет и исправляет физическую структуру файла 1Cv8.1CD и требует, чтобы база была свободна.
Как не допускать зависших сеансов
Большую часть «призраков» убирает настройка окружения, а не 1С.
- 🖥️ Терминальный сервер
. В групповой политике задайте ограничение времени для отключённых сеансов:
Конфигурация компьютера → Административные шаблоны → Компоненты Windows → Службы удалённых рабочих столов → Узел сеансов удалённых рабочих столов → Ограничение сеансов по времени. Хватит 1–2 часов: отключённый сеанс завершится вместе с 1С. - 😴 Сон и гибернация. На компьютерах, которые работают с файловой базой по сети, отключите переход в сон, пока открыта 1С, или приучите закрывать программу.
- 📶 Сеть. Файловую базу по Wi-Fi и VPN лучше не открывать: при обрыве связи сеанс почти гарантированно зависнет. Для удалённых сотрудников используйте терминальный доступ или веб-публикацию.
- 🛡️ Антивирус. Добавьте каталог базы в исключения проверки при доступе. Сканер, открывающий
1Cv8.1CD, тоже держит файл. - 🕘 Регламентные работы. Ставьте блокировку заранее, с сообщением за 10–15 минут, и обязательно автоматически снимайте её в конце скрипта.
- 📈 Рост базы. Когда пользователей становится больше пяти-десяти, а зависания учащаются, это сигнал перевести базу в клиент-серверный вариант. Там сеансы завершаются из консоли администрирования кластера.