К статье
Практический материал

Администрирование · 9 мин

Как отключить активных пользователей в конфигураторе 1С

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

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

Способ отключения зависит от режима работы базы: файловая и клиент-серверная версии управляются по-разному. В клиент-серверном варианте основной инструмент — консоль кластера серверов 1С, в файловом — установка блокировки сеансов и программное завершение со стороны сервера либо регламентные процедуры. Ниже разобраны все основные методы и их ограничения.

Важно понимать разницу между «отключить пользователя» и «заблокировать вход». Отключение завершает текущие сеансы, но не мешает пользователям зайти снова через минуту. Поэтому перед обслуживанием базы сначала устанавливают блокировку соединений, и только затем завершают активные сеансы.

Подготовка: блокировка сеансов перед отключением

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

В свойствах блокировки можно задать сообщение для пользователей, время начала и окончания блокировки, а также код разрешения. Код разрешения — это пароль, который позволяет войти в заблокированную базу администратору: при запуске 1С его указывают параметром /UC код в строке запуска.

В файловом режиме блокировку обычно ставят через типовой механизм «Блокировка работы пользователей» (в конфигурациях на базе БСП — раздел «Администрирование → Обслуживание → Блокировка работы пользователей»). Он сам установит блокировку и предложит завершить активные сеансы.

Отключение пользователей через консоль кластера серверов

Это основной способ для клиент-серверных баз. Откройте консоль управления серверами 1С (оснастка «Администрирование серверов 1С Предприятия»), разверните нужный кластер, затем ветку «Информационные базы» и выберите базу. В правой части перейдите на вкладку «Сеансы» — здесь отображаются все активные подключения.

Выделите нужные сеансы (Ctrl+A — все) и нажмите «Удалить» в контекстном меню. Сеанс завершается принудительно: у пользователя клиентское приложение закроется с сообщением о разрыве соединения. Несохранённые данные в открытых формах будут потеряны, поэтому желательно заранее предупредить сотрудников.

Обратите внимание на различие «Сеансы» и «Соединения». Соединение — это сетевое подключение, сеанс — логическая сессия пользователя или фонового задания. Удалять следует именно сеансы: разрыв соединений без удаления сеансов не всегда освобождает базу полностью.

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

Отключение пользователей в файловой базе

В файловом режиме консоли кластера нет, поэтому администратор действует иначе. Самый простой вариант — типовой механизм «Активные пользователи» и «Блокировка работы пользователей» в конфигурациях на Библиотеке стандартных подсистем. Администратор открывает список активных пользователей, устанавливает блокировку и инициирует завершение их работы.

Если типового механизма нет, применяют штатную обработку или код на встроенном языке с использованием объекта ПолучитьСоединенияИнформационнойБазы() — он возвращает список соединений файловой базы. Однако программно завершить чужое соединение в файловом режиме штатно нельзя: пользователь получит команду на завершение только если в конфигурации реализована соответствующая обработка на клиенте.

Крайний способ для файловой базы — остановить доступ к файлу на уровне операционной системы (закрыть сетевые сессии к файлу 1Cv8.1CD на файловом сервере). Это грубый метод: риск повреждения файла выше, чем при штатном завершении, применять его стоит только когда пользователи недоступны, а база нужна срочно, и обязательно после резервного копирования.

Программное завершение сеансов из кода

В клиент-серверном режиме сеансы можно завершать программно через COM-соединитель (V83.COMConnector) или через административный интерфейс кластера. Типовой сценарий: подключиться к агенту сервера, получить список сеансов базы и вызвать метод завершения для каждого, кроме текущего.

Пример логики на встроенном языке через COM-объект агента сервера:

Агент = Новый COMОбъект("V83.ComConnector");

// далее: подключение к агенту, получение кластера,

// аутентификация, получение рабочих процессов и сеансов,

// вызов TerminateSession для каждого чужого сеанса

Также популярен инструмент RAC — консольная утилита администрирования кластера из состава платформы. Она позволяет скриптами ставить блокировку и завершать сеансы, что удобно для автоматизации ночных обновлений:

bash
rac session terminate --cluster=<ид_кластера> --infobase=<ид_базы> --session=<ид_сеанса>

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

Монопольный режим в конфигураторе

После отключения пользователей можно выполнять обслуживание. При обновлении конфигурации базы данных конфигуратор сам запросит монопольный доступ; если сеансы остались, появится ошибка «Информационная база используется другими пользователями». Это сигнал, что сеансы завершены не все — вернитесь к списку сеансов и проверьте фоновые задания и сеансы веб-сервисов.

Установить монопольный режим вручную можно и из кода: УстановитьМонопольныйРежим(Истина). Если функция возвращает ложь или вызывает исключение — в базе есть активные соединения. После завершения работ монопольный режим снимается той же функцией с параметром Ложь.

Контрольные точки

Как проверить результат

Список сеансов в консоли кластера
Норма

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

Тревожный признак

Сеансы появляются снова — не установлена блокировка

Обновление конфигурации базы данных
Норма

Процесс запускается без ошибки занятости

Тревожный признак

Ошибка «база используется другими пользователями»

Вход пользователя после блокировки
Норма

Появляется сообщение о блокировке работы

Тревожный признак

Пользователь входит как обычно — блокировка не сохранена

Типичные ошибки и ограничения

Самая частая ошибка — завершение сеансов без установки блокировки. Пользователи переподключаются за секунды, и монопольный режим установить не удаётся. Вторая распространённая ситуация — забытые фоновые и регламентные задания: их сеансы видны в консоли кластера отдельно и тоже требуют завершения, а в свойствах базы нужно включить блокировку регламентных заданий.

Ещё одна проблема — отсутствие прав администратора кластера. Удалять сеансы может только пользователь с правами администратора кластера или информационной базы. Если кнопка удаления недоступна, проверьте список администраторов в свойствах кластера и базы.

Типичные ошибки
01
Удаление сеансов без блокировки — пользователи переподключаются, монопольный режим недоступен
02
Игнорирование фоновых заданий — их сеансы держат базу и мешают обновлению
03
Разрыв соединений вместо удаления сеансов — база остаётся занятой
04
Отсутствие резервной копии перед принудительным завершением — риск потери данных
05
Принудительное отключение без предупреждения — потеря несохранённых данных пользователей

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

Можно ли отключить только одного конкретного пользователя?

Да. В консоли кластера на вкладке «Сеансы» найдите нужного пользователя по имени и удалите только его сеанс. Блокировку всей базы при этом устанавливать не обязательно.

Почему после удаления сеансов они появляются снова?

Не установлена блокировка начала сеансов: клиентские приложения и фоновые задания автоматически восстанавливают соединение. Установите блокировку в свойствах информационной базы и повторите завершение сеансов.

Что будет с несохранёнными данными пользователей?

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

Как войти в базу, пока действует блокировка сеансов?

Используйте код разрешения, заданный при установке блокировки. В клиент-серверном режиме его передают параметром запуска /UC, в файловом — в диалоге блокировки или через параметр запуска.

Можно ли автоматизировать отключение пользователей по расписанию?

Да, через утилиту RAC из состава платформы: скрипт устанавливает блокировку, завершает сеансы, запускает обновление и снимает блокировку. Такой сценарий удобно запускать планировщиком задач в нерабочее время.

Итог

Что важно запомнить

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