Пользователь завис в базе и мешает обновлению: как завершить его сеанс в 1С:Предприятии
Содержание
Выключить активного пользователя в 1С проще всего так: в клиент-серверной базе откройте консоль администрирования серверов, найдите базу, перейдите в Сеансы, щёлкните правой кнопкой по нужному сеансу и выберите Удалить. В файловой базе такой консоли нет — там сеанс обрывают закрытием процесса 1С у пользователя или закрытием открытого файла базы на сервере, где она лежит.
Типичная ситуация: вечером нужно обновить конфигурацию , а в списке активных пользователей висит бухгалтер, который ушёл домой, не закрыв программу. Конфигуратор пишет, что монопольный доступ установить не удалось. Способы для 1С:Предприятия 8.3 различаются по жёсткости: от предупреждения с отложенным выходом до остановки службы сервера.
Сеанс, соединение и блокировка: что именно вы отключаете
Прежде чем кого-то выкидывать, полезно понять, что держит базу.
- 👤 Сеанс — работа одного пользователя или процесса с базой. Тонкий клиент, Конфигуратор, фоновое задание, COM-соединение — у каждого свой сеанс.
- 🔌 Соединение — сетевая связь клиента с рабочим процессом сервера. У одного сеанса их может быть несколько.
- 🔒 Монопольный режим — состояние, когда в базе нет никого, кроме вас. Он нужен для обновления структуры конфигурации, загрузки
.dtи тестирования и исправления базы.
Сеанс — то, что видно в списке активных пользователей и что занимает лицензию. Именно его и завершают.
Что увидит пользователь после завершения: окно с сообщением об ошибке и разрыве связи с базой. Незаписанный документ пропадёт, проведённые и записанные данные останутся.
Если пользователь сейчас проводит документ или закрывает месяц, принудительное завершение откатит незавершённую транзакцию. Данные не испортятся, но работу придётся повторить. Если человек на месте — сначала позвоните.
Посмотреть, кто сейчас в базе, можно так:
| Где смотреть | Что видно |
|---|---|
Все функции → Стандартные → Активные пользователи | Все сеансы: пользователь, компьютер, приложение, время начала |
Конфигуратор, меню Администрирование → Активные пользователи | Тот же список, но без кнопки завершения |
Консоль администрирования серверов, узел Сеансы | Сеансы с номерами, рабочим процессом и занятой лицензией |
Пункт «Все функции» включается в Сервис и настройки → Параметры → Отображать команду «Все функции».
Как отключить пользователя в файловой базе 1С
В файловом варианте сервера 1С нет. Каждый клиент сам открывает файл 1Cv8.1CD по сети. Поэтому «выключить» пользователя означает закрыть его программу или отнять у него доступ к файлу.
Способ 1. Закрыть процесс 1С на компьютере или терминальном сервере
Если база работает через RDP, это самый чистый вариант. На терминальном сервере откройте Диспетчер задач → Пользователи, разверните нужного сотрудника и завершите процесс 1cv8c.exe (тонкий клиент) или 1cv8.exe (толстый клиент и Конфигуратор).
То же из командной строки от имени администратора:
:: посмотреть процессы 1С по пользователям
tasklist /V /FI "IMAGENAME eq 1cv8c.exe"
:: завершить тонкий клиент конкретного пользователя
taskkill /F /IM 1cv8c.exe /FI "USERNAME eq ivanova"
Вместо завершения процесса можно выйти из терминальной сессии пользователя целиком: query session покажет номер сессии, logoff <номер> её закроет. Вместе с сессией закроется и 1С.
Способ 2. Закрыть открытый файл базы на файловом сервере
Если база лежит в общей папке, а пользователи работают со своих компьютеров:
- На сервере с базой откройте
Управление компьютером(compmgmt.msc). - Перейдите в
Общие папки → Открытые файлы. - Найдите строку с
1Cv8.1CDи нужным именем пользователя в столбце «Доступ». - Правой кнопкой —
Закрыть открытый файл.
Из командной строки то же делает openfiles /query для просмотра и net file <ID> /close для закрытия.
Закрытие файла обрывает работу пользователя без предупреждения. Если в этот момент шла запись, базу после такого отключения стоит проверить через Тестирование и исправление в Конфигураторе.
Способ 3. Блокировка работы пользователей средствами конфигурации
Во всех типовых конфигурациях на Библиотеке стандартных подсистем (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) есть обработка Блокировка работы пользователей. Её найти можно через Все функции → Обработки или в разделе Администрирование → Обслуживание.
Как она работает:
- Укажите текст сообщения для пользователей и время начала блокировки.
- При необходимости задайте код разрешения — с ним вы сами войдёте в заблокированную базу.
- Нажмите кнопку установки блокировки и закройте форму.
Пользователи получат предупреждение, а к назначенному времени программа сама завершит их сеансы. Новые входы будут запрещены. Этот способ работает и в файловой, и в серверной базе, и он самый мягкий: человек успевает сохранить документ.
Не забудьте снять блокировку после работ — иначе утром никто не войдёт в базу.
Удаление сеанса через консоль администрирования серверов 1С
В клиент-серверном варианте главный инструмент — консоль администрирования серверов (оснастка MMC). Она ставится вместе с платформой, компонентом «Администрирование сервера 1С:Предприятия».
Если консоль не открывается
Частая проблема: оснастка запускается, но выдаёт ошибку о невозможности создать объект. Лечится регистрацией библиотеки консоли той же версии, что и сервер. Командная строка от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.24.1548\bin\radmin.dll"
Номер версии в пути подставьте свой. Разрядность radmin.dll должна совпадать с разрядностью установленной платформы.
Пошагово: отключить сеанс
- Запустите консоль. Если сервер ещё не добавлен — правой кнопкой по
Central 1C:Enterprise 8.3 servers→Создать → Центральный сервер 1С:Предприятия 8.3, укажите имя компьютера и порт агента (по умолчанию1540). - Раскройте сервер →
Кластеры→ нужный кластер →Информационные базы→ вашу базу. - Откройте узел
Сеансы. В списке видно пользователя, компьютер, приложение и время начала. - Выделите сеанс (можно несколько с Ctrl), правой кнопкой —
Удалить. - Подтвердите действие.
Если кластер защищён, консоль спросит логин и пароль администратора кластера. Их задавал тот, кто настраивал сервер.
💡 Обращайте внимание на столбец «Приложение». Сеансы фоновых заданий и COM-соединений обмена удалять бесполезно: регламентное задание через минуту запустится снова. Их останавливают блокировкой регламентных заданий (см. ниже).
Как запретить новые входы на время работ
Удалить сеансы мало: пока вы обновляете конфигурацию, кто-нибудь снова зайдёт. В консоли откройте свойства информационной базы и заполните:
| Поле | Что указать |
|---|---|
| Блокировка начала сеансов включена | Флажок |
| Начало / Конец | Период работ |
| Сообщение о блокировке | Текст для пользователей |
| Код разрешения | Любая строка, например remont77 |
| Блокировка регламентных заданий включена | Флажок, если мешают фоновые задания |
С кодом разрешения вы входите сами: в строку запуска добавляется параметр /UC<код>, например /UCremont77.
Принудительное завершение сеанса из командной строки (rac)
Для скриптов и удалённого администрирования есть утилита rac. Она общается не с агентом напрямую, а с сервером администрирования ras, который нужно запустить заранее. Обе утилиты лежат в папке bin платформы.
Запуск сервера администрирования
cd "C:\Program Files\1cv8\8.3.24.1548\bin"
ras cluster --port=1545 localhost:1540
Для постоянной работы ras регистрируют как службу Windows, чтобы не держать окно открытым. Порт 1545 — стандартный для ras.
Найти и завершить сеанс
Все команды ниже обращаются к ras на порту 1545 по умолчанию на локальном компьютере. Идентификаторы — это GUID, их берут из вывода предыдущей команды.
:: 1. Получить идентификатор кластера
rac cluster list
:: 2. Получить идентификатор базы
rac infobase summary list --cluster=<id-кластера>
:: 3. Список сеансов этой базы
rac session list --cluster=<id-кластера> --infobase=<id-базы>
:: 4. Завершить нужный сеанс
rac session terminate --cluster=<id-кластера> --session=<id-сеанса>
В выводе session list у каждого сеанса есть поля user-name, host, app-id и session. По ним и находите того, кого надо отключить. Посмотреть, какие сеансы занимают лицензии, можно командой rac session list --cluster=<id-кластера> --licenses.
Если у кластера есть администратор, к командам добавляются --cluster-user=<имя> и --cluster-pwd=<пароль>. Полный список параметров для вашей версии покажет rac help session.
💡 На Linux всё то же самое: утилиты лежат в /opt/1cv8/x86_64/<версия>/, синтаксис команд не меняется.
Завершение всех пользователей при запуске 1С
В конфигурациях на БСП можно выгнать всех пользователей без консоли — запуском клиента с параметром. Это удобно в bat-файлах для файловых баз:
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /C"ЗавершитьРаботуПользователей" /UC"remont77"
Программа установит блокировку и дождётся завершения сеансов. После работ блокировку снимают запуском с /C"РазрешитьРаботуПользователей" и тем же кодом.
Пароль администратора в bat-файле лежит открытым текстом. Храните такие скрипты в папке, доступной только администраторам.
Остановка службы сервера 1С как крайняя мера
Бывает, что сеанс висит намертво: консоль показывает его, удаление не срабатывает, rac возвращает ошибку. Тогда остаётся перезапуск.
Остановка службы обрывает работу всех пользователей во всех базах этого сервера, включая фоновые задания и обмены. Делайте это вечером или по согласованию, предупредив людей заранее.
Порядок:
- Включите блокировку начала сеансов и разошлите предупреждение.
- Откройте
services.mscи найдите службуАгент сервера 1С:Предприятия 8.3(в названии может стоять разрядность и версия). - Нажмите
Перезапуститьили сначалаОстановить, затемЗапустить.
То же из командной строки. Точное имя службы посмотрите в её свойствах, поле «Имя службы»:
sc query state= all | findstr /I "1C"
net stop "<имя службы>"
net start "<имя службы>"
На Linux служба называется по-разному в зависимости от способа установки; список покажет systemctl list-units | grep 1c.
Промежуточный вариант — завершить в консоли один рабочий процесс rphost, на котором висит проблемный сеанс. Номер процесса видно в свойствах сеанса. Но и здесь оборвутся все сеансы, обслуживаемые этим процессом, а не только зависший.
Почему сеансы зависают и как сделать, чтобы это не повторялось
Зависшие сеансы почти всегда появляются по одной из причин:
- 🖥️ Пользователь закрыл окно RDP крестиком. Терминальная сессия остаётся в состоянии «Отключён», 1С в ней работает дальше и держит лицензию.
- 🌐 Обрыв сети или сон ноутбука. Сервер какое-то время считает сеанс живым.
- ⏳ Долгая операция. Закрытие месяца или тяжёлый отчёт на сервере продолжает работать, даже если клиент уже закрыт.
- 🔄 Регламентные задания и обмены. Выглядят как пользователи в списке, но это фоновые сеансы.
Что помогает на практике:
- Задайте на терминальном сервере лимит для отключённых сессий: групповая политика
Задать ограничение по времени для отключённых сеансов(раздел служб удалённых рабочих столов, «Ограничение сеансов по времени»). Например, 2 часа — и забытые сессии будут закрываться сами. - Научите сотрудников выходить через меню программы, а не закрывать RDP крестиком.
- Планируйте обновления на время, когда регламентные задания не работают, или блокируйте их на время работ.
- Для регулярных обновлений соберите скрипт на
racили на параметрах запуска с блокировкой — тогда ночью не придётся никого выгонять вручную.