Как убрать зависших пользователей в 1С, если список активных пользователей пуст?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей IT и автоматизация бизнеса
← На главную

При выполнении административных задач, таких как сохранение конфигурации или обновление базы данных в клиент-серверном режиме, разработчики часто сталкиваются с ситуацией: система сообщает о наличии активных подключений и требует монопольного доступа. При этом в стандартном окне «Активные пользователи» в режиме 1С:Предприятие список абсолютно пуст. Проанализируем причину этой проблемы и подробно разберем практические способы её решения.

Почему возникает блокировка при пустом списке пользователей?

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

  1. Зависшие тонкие или веб-клиенты: приложение на компьютере пользователя могло закрыться некорректно, но рабочий процесс rphost продолжает удерживать подключение.
  2. Фоновые и регламентные задания: служебные процессы, запускаемые платформой для выполнения системных задач.
  3. COM-соединения и сторонние интеграции: внешние сервисы, подключающиеся по HTTP/REST API или OData.
  4. Подключения через веб-сервер: веб-сервер (IIS или Apache) может удерживать физические TCP-соединения после завершения работы пользователей.

Способ 1. Завершение сеансов через консоль администрирования кластера 1С

Рассмотрим основной и самый правильный инструмент администратора — консоль администрирования кластера серверов 1С. В ней отображаются абсолютно все действующие соединения, включая пассивные и служебные.

  1. Откроем консоль администрирования кластера 1С.
  2. Перейдем в дерево нужной информационной базы и откроем ветку «Соединения» или «Сеансы».
  3. Найдем зависшие соединения тонких клиентов или фоновых процессов.
  4. Выделим зависшие элементы, вызовем контекстное меню и принудительно удалим их.

Способ 2. Очистка каталога сеансовых данных snccntx

Если доступ к консоли кластера отсутствует или принудительное удаление сеансов из консоли не помогает, разберем способ с очисткой кэша сеансовых данных на сервере 1С.

В каталоге реестра кластера (по умолчанию путь выглядит как srvinfo\reg_1541\) хранится папка snccntx[...], содержащая сеансовые данные. Очистка этой папки позволяет сбросить зависшие контексты.

Критически важно: процедуру очистки папки snccntx допускается выполнять только при полностью остановленной службе сервера 1С (1C:Enterprise 8.3 Server Agent). Если удалить файлы на работающем сервере, это приведет к аварийному завершению процессов rphost и rmngr, а также к повреждению временных данных всех баз кластера!

  1. Остановим службу сервера 1С (1C:Enterprise 8.3 Server Agent).
  2. Перейдем в каталог реестра кластера на сервере (например, C:\Program Files\1cv8\srvinfo\reg_1541\).
  3. Найдем и очистим содержимое подкаталога snccntx[...]. Не удаляйте весь каталог reg_1541, чтобы не потерять журнал регистрации и полнотекстовый индекс!
  4. Запустим службу сервера 1С повторно.

Способ 3. Перезапуск службы СУБД (MS SQL Server / PostgreSQL)

Посмотрим на ситуацию со стороны базы данных. Зависшие незавершенные транзакции на стороне СУБД могут блокировать системные таблицы конфигурации (такие как params или config).

Если перезагрузка службы 1С не принесла результата, попробуем перезапустить службу СУБД или выполнить перезагрузку сервера базы данных. Это принудительно сбросит все открытые сетевые сокеты и уберет незавершенные блокировки таблиц на уровне SQL.

Способ 4. Использование штатного диалога завершения из Конфигуратора

Разберем хитрость, которая позволяет сбросить соединения непосредственно из Конфигуратора без входа в консоль сервера. В платформе 1С предусмотрен встроенный механизм запроса монопольного доступа.

  1. Откроем базу в режиме Конфигуратор.
  2. Внесем любое мелкое временное изменение в метаданные (например, создадим временную константу).
  3. Нажмем клавишу F7 или выберем пункт меню «Конфигурация — Обновить конфигурацию базы данных».
  4. Когда платформа обнаружит сторонние подключения, откроется специальное диалоговое окно блокировки.
  5. Нажмем в этом окне кнопку «Завершить сеансы и повторить». Платформа сама отправит команду на разрыв соединений.
  6. После успешного обновления конфигурации зайдём и удалим временную константу.

Способ 5. Перезапуск пула приложений веб-сервера

Проанализируем случай, когда база опубликована на веб-сервере (IIS или Apache). Тонкие клиенты, подключающиеся по HTTP/HTTPS, взаимодействуют с базой через модуль расширения веб-сервера. Пул приложений может держать соединения открытыми даже после того, как пользователи закрыли свои программы.

Для решения достаточно выполнить перезапуск пула приложений в консоли IIS (действие Recycle) или перезапустить службу веб-сервера Apache. Это мгновенно освобождает зависшие веб-подключения.

Профилактика: настройка времени завершения спящих сеансов

Чтобы избежать повторения этой проблемы в будущем, настроим автоматическое завершение пассивных сессий. В параметрах информационной базы в администрировании кластера выставим значение для параметров:

Эти настройки позволят кластеру 1С самостоятельно своевременно зачищать «забытые» и зависшие подключения пользователей.

← На главную