Пользователь завис в базе и мешает обновлению: как завершить его сеанс в 1С:Предприятии

· 9 мин

Содержание

Выключить активного пользователя в 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. Закрыть открытый файл базы на файловом сервере

Если база лежит в общей папке, а пользователи работают со своих компьютеров:

  1. На сервере с базой откройте Управление компьютером (compmgmt.msc).
  2. Перейдите в Общие папки → Открытые файлы.
  3. Найдите строку с 1Cv8.1CD и нужным именем пользователя в столбце «Доступ».
  4. Правой кнопкой — Закрыть открытый файл.

Из командной строки то же делает openfiles /query для просмотра и net file <ID> /close для закрытия.

Закрытие файла обрывает работу пользователя без предупреждения. Если в этот момент шла запись, базу после такого отключения стоит проверить через Тестирование и исправление в Конфигураторе.

Способ 3. Блокировка работы пользователей средствами конфигурации

Во всех типовых конфигурациях на Библиотеке стандартных подсистем (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) есть обработка Блокировка работы пользователей. Её найти можно через Все функции → Обработки или в разделе Администрирование → Обслуживание.

Как она работает:

  1. Укажите текст сообщения для пользователей и время начала блокировки.
  2. При необходимости задайте код разрешения — с ним вы сами войдёте в заблокированную базу.
  3. Нажмите кнопку установки блокировки и закройте форму.

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

Не забудьте снять блокировку после работ — иначе утром никто не войдёт в базу.

Удаление сеанса через консоль администрирования серверов 1С

В клиент-серверном варианте главный инструмент — консоль администрирования серверов (оснастка MMC). Она ставится вместе с платформой, компонентом «Администрирование сервера 1С:Предприятия».

Если консоль не открывается

Частая проблема: оснастка запускается, но выдаёт ошибку о невозможности создать объект. Лечится регистрацией библиотеки консоли той же версии, что и сервер. Командная строка от имени администратора:

regsvr32 "C:\Program Files\1cv8\8.3.24.1548\bin\radmin.dll"

Номер версии в пути подставьте свой. Разрядность radmin.dll должна совпадать с разрядностью установленной платформы.

Пошагово: отключить сеанс

  1. Запустите консоль. Если сервер ещё не добавлен — правой кнопкой по Central 1C:Enterprise 8.3 servers → Создать → Центральный сервер 1С:Предприятия 8.3, укажите имя компьютера и порт агента (по умолчанию 1540).
  2. Раскройте сервер → Кластеры → нужный кластер → Информационные базы → вашу базу.
  3. Откройте узел Сеансы. В списке видно пользователя, компьютер, приложение и время начала.
  4. Выделите сеанс (можно несколько с Ctrl), правой кнопкой — Удалить.
  5. Подтвердите действие.

Если кластер защищён, консоль спросит логин и пароль администратора кластера. Их задавал тот, кто настраивал сервер.

💡 Обращайте внимание на столбец «Приложение». Сеансы фоновых заданий и 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 возвращает ошибку. Тогда остаётся перезапуск.

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

Порядок:

  1. Включите блокировку начала сеансов и разошлите предупреждение.
  2. Откройте services.msc и найдите службу Агент сервера 1С:Предприятия 8.3 (в названии может стоять разрядность и версия).
  3. Нажмите Перезапустить или сначала Остановить, затем Запустить.

То же из командной строки. Точное имя службы посмотрите в её свойствах, поле «Имя службы»:

sc query state= all | findstr /I "1C"
net stop "<имя службы>"
net start "<имя службы>"

На Linux служба называется по-разному в зависимости от способа установки; список покажет systemctl list-units | grep 1c.

Промежуточный вариант — завершить в консоли один рабочий процесс rphost, на котором висит проблемный сеанс. Номер процесса видно в свойствах сеанса. Но и здесь оборвутся все сеансы, обслуживаемые этим процессом, а не только зависший.

Почему сеансы зависают и как сделать, чтобы это не повторялось

Зависшие сеансы почти всегда появляются по одной из причин:

  • 🖥️ Пользователь закрыл окно RDP крестиком. Терминальная сессия остаётся в состоянии «Отключён», 1С в ней работает дальше и держит лицензию.
  • 🌐 Обрыв сети или сон ноутбука. Сервер какое-то время считает сеанс живым.
  • ⏳ Долгая операция. Закрытие месяца или тяжёлый отчёт на сервере продолжает работать, даже если клиент уже закрыт.
  • 🔄 Регламентные задания и обмены. Выглядят как пользователи в списке, но это фоновые сеансы.

Что помогает на практике:

  1. Задайте на терминальном сервере лимит для отключённых сессий: групповая политика Задать ограничение по времени для отключённых сеансов (раздел служб удалённых рабочих столов, «Ограничение сеансов по времени»). Например, 2 часа — и забытые сессии будут закрываться сами.
  2. Научите сотрудников выходить через меню программы, а не закрывать RDP крестиком.
  3. Планируйте обновления на время, когда регламентные задания не работают, или блокируйте их на время работ.
  4. Для регулярных обновлений соберите скрипт на rac или на параметрах запуска с блокировкой — тогда ночью не придётся никого выгонять вручную.

Частые вопросы об отключении пользователей 1С

Чем отличается удаление сеанса от удаления соединения в консоли?
Удаление соединения рвёт только сетевую связь, и клиент часто восстанавливает её сам. Чтобы пользователь точно вышел из базы, удаляйте сеанс.
Освободится ли лицензия сразу после завершения сеанса?
Да, лицензия возвращается в пул, как только сеанс завершён. Если её всё ещё нет, проверьте командой rac session list с параметром –licenses, не остался ли второй сеанс того же пользователя.
Можно ли выгнать пользователя из Конфигуратора?
Да, сеанс Конфигуратора удаляется в консоли так же, как обычный, с приложением «Конфигуратор» в списке. Несохранённые изменения конфигурации при этом пропадут.
Может ли обычный пользователь отключить коллегу?
Нет. Завершать чужие сеансы может пользователь с административными правами в базе, администратор кластера серверов 1С или администратор операционной системы, где работает 1С.
Удалённый сеанс снова появляется через минуту. Почему?
Скорее всего, это фоновое задание или обмен по расписанию. Включите в свойствах базы блокировку регламентных заданий или отключите задание по расписанию на время работ.