Зависший пользователь в файловой 1С: пять способов выгнать сеанс из базы

· 9 мин

Содержание

В файловой базе 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) путь одинаковый:

  1. Откройте Администрирование → Обслуживание.
  2. Нажмите ссылку «Блокировка работы пользователей».
  3. Заполните сообщение для пользователей, например: «Обновление базы с 18:00, сохраните документы».
  4. Укажите время начала и окончания блокировки.
  5. При желании задайте код разрешения — по нему вы сами сможете зайти в заблокированную базу.
  6. Нажмите «Установить блокировку».

Дальше каждый открытый клиент получает предупреждение и через несколько минут закрывается сам. Пользователь успевает сохранить документ. Данные не теряются, файл базы не повреждается.

В файловом варианте блокировка физически хранится в файле 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. На терминальном сервере откройте Диспетчер задач, вкладку «Пользователи».
  2. Разверните нужного пользователя и найдите процесс «1С:Предприятие».
  3. Нажмите «Снять задачу».

На обычной рабочей станции то же самое делается на вкладке «Подробности» по имени процесса.

Через командную строку

На терминальном сервере удобнее снять 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:

  1. На файловом сервере нажмите Win + R, введите compmgmt.msc.
  2. Перейдите в Служебные программы → Общие папки → Открытые файлы.
  3. Отсортируйте по колонке «Открытый файл», найдите строки с 1Cv8.1CD в нужном каталоге.
  4. В колонке «Доступ пользователя» и по имени компьютера определите зависший сеанс.
  5. Правой кнопкой — «Закрыть открытый файл».

Через 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 минут, и обязательно автоматически снимайте её в конце скрипта.
  • 📈 Рост базы. Когда пользователей становится больше пяти-десяти, а зависания учащаются, это сигнал перевести базу в клиент-серверный вариант. Там сеансы завершаются из консоли администрирования кластера.
Что происходит с сеансом?

Частые вопросы

Почему в файловой базе нет кнопки «Завершить сеанс»?
Принудительное завершение чужого сеанса выполняет сервер 1С:Предприятия. В файловом варианте сервера нет: каждый клиент сам открывает файл базы, и закрыть его может только он или операционная система.
Пользователь давно вышел, а в списке активных он всё ещё есть. Что делать?
Чаще всего это открытый сетевой дескриптор на сервере с базой. Закройте файл 1Cv8.1CD этого компьютера в «Общих папках» — запись исчезнет.
Можно ли выгнать пользователя из Конфигуратора?
Нет. Конфигуратор только показывает список активных пользователей. Сеанс закрывают блокировкой работы пользователей или завершением процесса на его компьютере.
Занимает ли зависший сеанс лицензию?
В файловом варианте лицензию занимает клиент на конкретном компьютере. Пока процесс 1С там жив, лицензия используется; после завершения процесса она освобождается.
Повредится ли база, если снять процесс 1С?
Обычно нет, но если процесс в этот момент записывал данные, риск есть. Сделайте копию папки базы и при ошибках запустите chdbfl.exe.