Администрирование · 9 мин
Как отключить активных пользователей в конфигураторе 1С
Как отключить активных пользователей в конфигураторе 1С: консоль кластера, консольные команды, код на встроенном языке, монопольный режим и проверка результата.
Завершить сеансы пользователей требуется при обновлении конфигурации, загрузке данных, реструктуризации базы и других операциях, требующих монопольного доступа. Пока в информационной базе остаются активные сеансы, конфигуратор не даст выполнить обновление или установить монопольный режим, поэтому администратору нужен рабочий способ быстро и безопасно отключить всех.
Способ отключения зависит от режима работы базы: файловая и клиент-серверная версии управляются по-разному. В клиент-серверном варианте основной инструмент — консоль кластера серверов 1С, в файловом — установка блокировки сеансов и программное завершение со стороны сервера либо регламентные процедуры. Ниже разобраны все основные методы и их ограничения.
Важно понимать разницу между «отключить пользователя» и «заблокировать вход». Отключение завершает текущие сеансы, но не мешает пользователям зайти снова через минуту. Поэтому перед обслуживанием базы сначала устанавливают блокировку соединений, и только затем завершают активные сеансы.
Подготовка: блокировка сеансов перед отключением
Если просто удалить сеансы, пользователи сразу переподключатся — фоновые задания и тонкий клиент автоматически восстанавливают соединение. Поэтому первым шагом всегда ставится блокировка соединений с информационной базой. В клиент-серверном режиме это делается в консоли кластера: щёлкните правой кнопкой по нужной базе, выберите «Свойства» и установите флаг «Блокировка регламентных заданий включена» и «Блокировка начала сеансов включена».
В свойствах блокировки можно задать сообщение для пользователей, время начала и окончания блокировки, а также код разрешения. Код разрешения — это пароль, который позволяет войти в заблокированную базу администратору: при запуске 1С его указывают параметром /UC код в строке запуска.
В файловом режиме блокировку обычно ставят через типовой механизм «Блокировка работы пользователей» (в конфигурациях на базе БСП — раздел «Администрирование → Обслуживание → Блокировка работы пользователей»). Он сам установит блокировку и предложит завершить активные сеансы.
Отключение пользователей через консоль кластера серверов
Это основной способ для клиент-серверных баз. Откройте консоль управления серверами 1С (оснастка «Администрирование серверов 1С Предприятия»), разверните нужный кластер, затем ветку «Информационные базы» и выберите базу. В правой части перейдите на вкладку «Сеансы» — здесь отображаются все активные подключения.
Выделите нужные сеансы (Ctrl+A — все) и нажмите «Удалить» в контекстном меню. Сеанс завершается принудительно: у пользователя клиентское приложение закроется с сообщением о разрыве соединения. Несохранённые данные в открытых формах будут потеряны, поэтому желательно заранее предупредить сотрудников.
Обратите внимание на различие «Сеансы» и «Соединения». Соединение — это сетевое подключение, сеанс — логическая сессия пользователя или фонового задания. Удалять следует именно сеансы: разрыв соединений без удаления сеансов не всегда освобождает базу полностью.
- 1Откройте консоль администрирования серверов 1С и найдите нужную информационную базу
- 2В свойствах базы включите блокировку начала сеансов и задайте код разрешения
- 3Перейдите на вкладку «Сеансы», выделите все сеансы и удалите их
- 4Убедитесь, что список сеансов пуст, затем выполняйте обслуживание
- 5После завершения работ снимите блокировку сеансов в свойствах базы
Отключение пользователей в файловой базе
В файловом режиме консоли кластера нет, поэтому администратор действует иначе. Самый простой вариант — типовой механизм «Активные пользователи» и «Блокировка работы пользователей» в конфигурациях на Библиотеке стандартных подсистем. Администратор открывает список активных пользователей, устанавливает блокировку и инициирует завершение их работы.
Если типового механизма нет, применяют штатную обработку или код на встроенном языке с использованием объекта ПолучитьСоединенияИнформационнойБазы() — он возвращает список соединений файловой базы. Однако программно завершить чужое соединение в файловом режиме штатно нельзя: пользователь получит команду на завершение только если в конфигурации реализована соответствующая обработка на клиенте.
Крайний способ для файловой базы — остановить доступ к файлу на уровне операционной системы (закрыть сетевые сессии к файлу 1Cv8.1CD на файловом сервере). Это грубый метод: риск повреждения файла выше, чем при штатном завершении, применять его стоит только когда пользователи недоступны, а база нужна срочно, и обязательно после резервного копирования.
Программное завершение сеансов из кода
В клиент-серверном режиме сеансы можно завершать программно через COM-соединитель (V83.COMConnector) или через административный интерфейс кластера. Типовой сценарий: подключиться к агенту сервера, получить список сеансов базы и вызвать метод завершения для каждого, кроме текущего.
Пример логики на встроенном языке через COM-объект агента сервера:
Агент = Новый COMОбъект("V83.ComConnector");
// далее: подключение к агенту, получение кластера,
// аутентификация, получение рабочих процессов и сеансов,
// вызов TerminateSession для каждого чужого сеанса
Также популярен инструмент RAC — консольная утилита администрирования кластера из состава платформы. Она позволяет скриптами ставить блокировку и завершать сеансы, что удобно для автоматизации ночных обновлений:
rac session terminate --cluster=<ид_кластера> --infobase=<ид_базы> --session=<ид_сеанса>При программном завершении не забудьте исключить собственный сеанс администратора, иначе скрипт отключит сам себя до завершения работы. Также завершайте сеансы фоновых заданий — они часто держат базу незаметно для администратора.
Монопольный режим в конфигураторе
После отключения пользователей можно выполнять обслуживание. При обновлении конфигурации базы данных конфигуратор сам запросит монопольный доступ; если сеансы остались, появится ошибка «Информационная база используется другими пользователями». Это сигнал, что сеансы завершены не все — вернитесь к списку сеансов и проверьте фоновые задания и сеансы веб-сервисов.
Установить монопольный режим вручную можно и из кода: УстановитьМонопольныйРежим(Истина). Если функция возвращает ложь или вызывает исключение — в базе есть активные соединения. После завершения работ монопольный режим снимается той же функцией с параметром Ложь.
Как проверить результат
Сеансов нет или остался только сеанс администратора
Сеансы появляются снова — не установлена блокировка
Процесс запускается без ошибки занятости
Ошибка «база используется другими пользователями»
Появляется сообщение о блокировке работы
Пользователь входит как обычно — блокировка не сохранена
Типичные ошибки и ограничения
Самая частая ошибка — завершение сеансов без установки блокировки. Пользователи переподключаются за секунды, и монопольный режим установить не удаётся. Вторая распространённая ситуация — забытые фоновые и регламентные задания: их сеансы видны в консоли кластера отдельно и тоже требуют завершения, а в свойствах базы нужно включить блокировку регламентных заданий.
Ещё одна проблема — отсутствие прав администратора кластера. Удалять сеансы может только пользователь с правами администратора кластера или информационной базы. Если кнопка удаления недоступна, проверьте список администраторов в свойствах кластера и базы.
Частые вопросы
Можно ли отключить только одного конкретного пользователя?
Да. В консоли кластера на вкладке «Сеансы» найдите нужного пользователя по имени и удалите только его сеанс. Блокировку всей базы при этом устанавливать не обязательно.
Почему после удаления сеансов они появляются снова?
Не установлена блокировка начала сеансов: клиентские приложения и фоновые задания автоматически восстанавливают соединение. Установите блокировку в свойствах информационной базы и повторите завершение сеансов.
Что будет с несохранёнными данными пользователей?
При принудительном завершении сеанса несохранённые данные в открытых формах теряются. Перед отключением предупредите сотрудников или дайте им время завершить работу штатно.
Как войти в базу, пока действует блокировка сеансов?
Используйте код разрешения, заданный при установке блокировки. В клиент-серверном режиме его передают параметром запуска /UC, в файловом — в диалоге блокировки или через параметр запуска.
Можно ли автоматизировать отключение пользователей по расписанию?
Да, через утилиту RAC из состава платформы: скрипт устанавливает блокировку, завершает сеансы, запускает обновление и снимает блокировку. Такой сценарий удобно запускать планировщиком задач в нерабочее время.
Что важно запомнить
Сначала установите блокировку сеансов, затем завершайте активные сеансы через консоль кластера (клиент-сервер) или типовые механизмы БСП (файловый режим). Не забывайте про фоновые задания, делайте резервную копию и снимайте блокировку после завершения работ.