Администрирование · 10 мин
Как выкинуть пользователя из базы 1С, чтобы зайти в конфигуратор
Как вывести пользователя из базы 1С, чтобы открыть конфигуратор: консоль кластера, завершение сеансов, блокировка соединений, код на встроенном языке и типичные ошибки.
Открыть конфигуратор для обновления конфигурации или динамического обновления часто мешают активные сеансы пользователей: платформа требует монопольного доступа к базе. «Выкинуть пользователя» на практике означает принудительно завершить его сеанс — из консоли кластера серверов 1С, через администрирование в клиентском приложении или программно.
Способ зависит от режима работы базы. Для клиент-серверного варианта основной инструмент — консоль кластера, для файлового — список активных пользователей внутри самой базы либо установка блокировки соединений. Ниже разобраны оба сценария, а также программный метод и типичные ошибки, из-за которых пользователи «возвращаются» сразу после отключения.
Когда вообще нужно завершать сеансы пользователей
Монопольный доступ к информационной базе требуется при обновлении конфигурации базы данных, загрузке и выгрузке данных через конфигуратор, тестировании и исправлении, очистке ссылок и некоторых сервисных операциях. Пока к базе подключён хотя бы один сеанс, конфигуратор при попытке выполнить такую операцию выдаст ошибку о невозможности установить монопольный режим.
Вторая ситуация — динамическое обновление. Оно формально возможно при работающих пользователях, но после него сеансы работают со старой версией конфигурации, что приводит к ошибкам и рассинхронизации. Правильная практика — завершить все сеансы и заблокировать новые подключения до окончания работ.
Третий повод — «зависший» сеанс: пользователь давно закрыл программу, но соединение осталось, и база считается занятой. Такие сеансы просто удаляют, не дожидаясь таймаута.
Как завершить сеанс через консоль кластера серверов 1С
Это основной способ для клиент-серверного режима. Откройте оснастку «Администрирование серверов 1С Предприятия» на сервере или на машине администратора, раскройте нужный кластер и перейдите в ветку «Сеансы». В списке видны все подключения: пользователь, приложение (тонкий клиент, толстый клиент, веб-клиент, фоновое задание), время начала и активность.
Выделите нужный сеанс и выберите в контекстном меню «Удалить». Сеанс завершится немедленно, у пользователя клиентское приложение закроется с сообщением о разрыве соединения. Чтобы отключить всех, выделяйте сеансы группой — но не трогайте сеансы служебных соединений, если не уверены в их назначении.
Обратите внимание на колонку «Приложение»: строки вида «Фоновое задание» — это регламентные операции. Их тоже нужно завершить перед монопольным доступом, иначе конфигуратор всё равно не даст выполнить обновление.
- 1Откройте оснастку «Администрирование серверов 1С Предприятия»
- 2Раскройте нужный кластер и выберите ветку «Сеансы»
- 3Найдите сеанс по имени пользователя и типу приложения
- 4Правой кнопкой — «Удалить», подтвердите завершение
- 5Проверьте, что в списке не осталось активных сеансов и фоновых заданий
Как вывести пользователей из файловой базы
В файловом режиме консоли кластера нет, поэтому действуют изнутри базы. Зайдите в режиме «Предприятие» под учётной записью с правами администратора и откройте «Администрирование → Активные пользователи». Здесь видно, кто подключён, и можно отправить пользователям сообщение с просьбой выйти — например, «База будет заблокирована через 10 минут для обновления».
Штатной кнопки «отключить пользователя» в этом списке в большинстве конфигураций нет: файл базы не позволяет принудительно сбросить чужой сеанс так же просто, как сервер. Поэтому стандартный сценарий — установить блокировку соединений, дождаться выхода пользователей и только потом открывать конфигуратор.
Если пользователь «висит» из-за аварийно закрытой программы, а монопольный доступ не устанавливается, проверьте, не остался ли запущен процесс 1cv8.exe на его компьютере. Завершение процесса на той машине освобождает базу. Крайний случай — файл 1Cv8.1CD остаётся заблокированным из-за сетевого сбоя; тогда помогает переподключение сетевого диска или перезапуск сервера, на котором лежит файл.
Блокировка соединений: как не пустить пользователей обратно
Завершить сеансы — половина дела: через минуту кто-нибудь снова запустит программу, и монопольный режим сорвётся. Поэтому перед работой в конфигураторе устанавливают блокировку соединений. В клиент-серверном режиме это делается в консоли кластера: свойства информационной базы → параметр «Блокировка регламентных заданий» и «Блокировка начала сеансов» с указанием периода и сообщения для пользователей.
При блокировке задаётся код разрешения — строка, которую можно передать пользователю или использовать самому для входа в обход блокировки. Например, администратор заходит в базу с параметром запуска, содержащим этот код, пока остальные видят сообщение «Выполняются регламентные работы». Не забудьте снять блокировку после окончания работ, иначе утром никто не сможет войти.
Программное завершение сеансов из кода
Когда баз много или отключение нужно автоматизировать, сеансы завершают программно — через COM-соединитель с агентом сервера или через административный интерфейс. В типовых конфигурациях на БСП есть готовые механизмы: «Блокировка работы пользователей» в разделе администрирования устанавливает блокировку по расписанию и завершает сеансы.
Для самописных решений используют объектную модель администрирования кластера: подключение к агенту, получение списка сеансов рабочего процесса и вызов метода завершения. Ниже — упрощённый пример идеи на встроенном языке через COM-объект V8*.ComConnector; конкретные имена классов зависят от версии платформы.
// Идея: подключение к агенту сервера и завершение сеансов ИБ
Коннектор = Новый COMОбъект("V83.ComConnector");
Агент = Коннектор.ConnectAgent("server:1540");
Кластер = Агент.GetClusters()[0];
Агент.Authenticate(Кластер, "", "");
РП = Агент.GetWorkingProcesses(Кластер)[0];
СоединениеРП = Коннектор.ConnectWorkingProcess("server:1560");
СоединениеРП.AddAuthentication("Администратор", "пароль");
ИБ = СоединениеРП.CreateInfoBaseInfo();
ИБ.Name = "trade";
Для Каждого Сеанс Из СоединениеРП.GetInfoBaseSessions(ИБ) Цикл
СоединениеРП.TerminateSession(ИБ, Сеанс);
КонецЦикла;Программный способ требует прав администратора кластера или информационной базы и аккуратности: цикл завершения не должен трогать сеанс, из которого выполняется сам код, иначе обработка прервётся на середине.
Проверка результата и частые ошибки
После завершения сеансов и установки блокировки проверьте результат до начала обновления. В консоли кластера список сеансов должен быть пуст или содержать только ваш сеанс конфигуратора. В файловой базе признак успеха — конфигуратор открылся и команда обновления конфигурации базы данных выполняется без сообщения о занятых соединениях.
Как проверить результат
Активных пользовательских сеансов и фоновых заданий нет
Сеансы появляются снова через секунды после удаления
Монопольный режим устанавливается без ошибок
Сообщение о невозможности монопольного доступа
Видит сообщение о блокировке с указанным текстом
Пользователь свободно входит в базу
Отдельная ошибка — путать завершение сеанса с завершением соединения. Соединение — это транспортный уровень, сеанс — логическая сессия пользователя. Для освобождения базы важны именно сеансы; удаление соединений без сеансов эффекта не даёт.
Альтернативы принудительному отключению
Не всегда нужно выкидывать людей вручную. В типовых конфигурациях на базе Библиотеки стандартных подсистем обработка «Блокировка работы пользователей» позволяет задать время начала блокировки: система заранее рассылает предупреждения, а в назначенный момент завершает сеансы автоматически. Это удобно для плановых ночных обновлений.
Для массовых операций в крупных контурах применяют скрипты администрирования через rac — консольную утилиту управления кластером. Она позволяет одной командой завершить все сеансы базы и включить блокировку, что удобно встраивать в сценарии обновления по расписанию.
Способы завершить сеансы
Наглядно, подходит для разовых работ; требует доступа к серверу и прав администратора кластера
Подходит для скриптов и автоматизации; требует знания синтаксиса и аккуратности с идентификаторами кластера и базы
Удобно для файловых баз и плановых работ; зависит от наличия в конфигурации подсистемы блокировки
Гибко, можно интегрировать в свои обработки; требует прав и осторожности, чтобы не завершить собственный сеанс
Что важно запомнить
Сначала предупредите пользователей, затем установите блокировку соединений, потом завершите оставшиеся сеансы в консоли кластера (или дождитесь выхода в файловой базе). Проверьте отсутствие фоновых заданий и только после этого открывайте конфигуратор. По завершении снимите блокировку.
Частые вопросы
Можно ли выкинуть пользователя из файловой базы принудительно?
Штатной кнопки принудительного отключения в файловом режиме нет. Рабочий сценарий — отправить сообщение через «Активные пользователи», установить блокировку соединений и дождаться выхода. Если сеанс завис, завершите процесс 1cv8.exe на компьютере пользователя.
Удалил сеанс, а он появился снова. Почему?
Клиентское приложение при разрыве пытается переподключиться, либо пользователь запускает программу заново. Перед завершением сеансов включите блокировку начала сеансов в свойствах базы в консоли кластера — тогда новые подключения будут отклоняться.
Что будет с несохранёнными данными пользователя?
При принудительном завершении сеанса все незаписанные изменения теряются: открытые документы, набранные строки, отборы. Платформа не сохраняет такие данные автоматически, поэтому всегда предупреждайте сотрудников заранее.
Мешают фоновые задания — их тоже нужно завершать?
Да. Регламентные и фоновые задания держат сеанс и не дают установить монопольный доступ. В консоли кластера завершите соответствующие сеансы и одновременно включите блокировку регламентных заданий в свойствах информационной базы.
Как зайти в базу самому, пока действует блокировка?
При установке блокировки задаётся код разрешения. Укажите его в параметре запуска клиента (/UC код) или в строке подключения — тогда ваш сеанс будет допущен, а остальные пользователи увидят сообщение о блокировке.
Можно ли автоматизировать отключение пользователей по расписанию?
Да. В конфигурациях на БСП используйте «Блокировку работы пользователей» с расписанием, а на уровне кластера — скрипты с утилитой rac, которые завершают сеансы и включают блокировку перед плановым обновлением.