Выгнать коллег из базы 1С без потери данных: консоль, rac, файловый вариант
Содержание
В клиент-серверной 1С 8.3 работу других пользователей завершают в консоли кластера: Кластер → Информационные базы → <база> → Сеансы, правый клик по сеансу → Удалить. Чтобы люди не зашли обратно через минуту, в свойствах базы там же включают «Блокировку начала сеансов». В файловой базе консоли нет: пользователей просят выйти, ставят блокировку из самой программы или закрывают открытый файл 1Cv8.1CD на сервере, где лежит база.
Сеанс, завершённый принудительно, теряет несохранённые данные: открытый документ, который человек не записал, пропадёт. Поэтому порядок всегда один: предупредить, закрыть вход, дать 5–10 минут, и только потом удалять оставшиеся сеансы.
Перед отключением: кто сидит в базе и что именно мешает
Не всегда нужно выгонять всех. Иногда базу держит один забытый сеанс на ноутбуке бухгалтера, ушедшего в отпуск. Сначала посмотрите список.
Где увидеть активных пользователей:
- 🖥 Конфигуратор →
Администрирование → Активные пользователи. Список есть, кнопки завершения нет. - 📋 Пользовательский режим типовых конфигураций → форма «Активные пользователи». В БП 3.0 она в разделе
Администрирование → Обслуживание, в ЗУП 3.1 и УТ 11 — вАдминистрирование → Поддержка и обслуживание. - ⚙️ Консоль кластера → узел
Сеансыу нужной базы. Здесь видно больше всего: компьютер, приложение, время начала, занятая лицензия.
Обратите внимание на колонку «Приложение». Она подсказывает, что за сеанс перед вами:
| Что в колонке | Кто это | Можно ли удалять |
|---|---|---|
| Тонкий клиент, толстый клиент | Обычный пользователь | Да, после предупреждения |
| Конфигуратор | Разработчик или администратор | Только согласовав: потеряет несохранённую конфигурацию |
| Фоновое задание | Регламентное задание (обмен, загрузка курсов) | Да, но лучше сначала заблокировать регламентные задания |
| COM-соединение | Внешняя программа, интеграция | Да, но она может переподключиться сама |
| Веб-клиент | Работа через браузер | Да |
| Консоль кластера | Ваш сеанс администрирования | Нет смысла |
Завершение сеанса пользователя через консоль администрирования серверов 1С
Консоль — это оснастка MMC «Администрирование серверов 1С:Предприятия». Она ставится вместе с платформой, если при установке отмечен компонент администрирования серверов.
Подключение к кластеру
- Запустите консоль из меню «Пуск» (ищите по слову «Администрирование серверов»).
- На узле
Central 1C:Enterprise 8.3 serversправый клик →Создать → Центральный сервер 1С:Предприятия 8.3. - Укажите имя сервера и порт агента — по умолчанию
1540. - Раскройте
Кластеры → Локальный кластер → Информационные базы. - Откройте нужную базу. Консоль спросит логин и пароль пользователя информационной базы с правами администратора. Если в кластере заданы администраторы, сначала спросит и их.
Удаление сеансов
- Откройте
Информационные базы → <база> → Сеансы. - Выделите сеансы. Работают
ShiftиCtrlдля группового выделения. - Правый клик →
Удалить.
Пользователь увидит сообщение о том, что сеанс завершён администратором, и клиент закроется. Лицензия освобождается сразу.
Узел Соединения рядом с Сеансами — не то же самое. Разрыв соединения без удаления сеанса часто ведёт к тому, что клиент переподключается сам. Удаляйте именно сеансы.
Блокировка начала сеансов
Без блокировки самые настойчивые коллеги зайдут обратно раньше, чем вы начнёте обновление.
- Правый клик по базе →
Свойства. - Отметьте «Блокировка начала сеансов включена».
- Задайте время начала и окончания блокировки, текст сообщения («Обновление до 19:30»).
- В поле «Код разрешения» впишите любое слово, например
upd2610. С ним сможете зайти вы сами. - Если идёт обновление или загрузка .dt, отметьте и «Блокировка регламентных заданий включена».
Запуск с кодом разрешения — параметр /UC:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S"srv1c\buh" /UC upd2610
Не забудьте снять блокировку после работ. Иначе утром никто не войдёт, а сообщение будет висеть с вашим текстом про обновление.
Если консоль не открывается
Типичная ситуация после обновления платформы: оснастка выдаёт ошибку или пустое окно. Консоль использует библиотеку radmin.dll конкретной версии платформы. Перерегистрируйте её от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.24.1691\bin\radmin.dll"
Номер версии в пути подставьте свой — тот, что совпадает с версией сервера. Для 32-битной платформы путь будет в Program Files (x86).
Завершить работу пользователей из самой программы
В типовых конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11, ERP, КА) есть форма «Блокировка работы пользователей». Она лежит рядом с «Активными пользователями» в тех же разделах администрирования.
Как это работает:
- Вы задаёте сообщение, время начала блокировки и код разрешения.
- Нажимаете «Установить блокировку».
- Программа рассылает пользователям предупреждение и через несколько минут сама закрывает их сеансы.
- Новые входы блокируются до снятия блокировки.
Плюс этого способа — людям не нужно ничего объяснять: они видят сообщение заранее и успевают записать документы. Он работает и в файловом, и в клиент-серверном варианте.
Для клиент-серверной базы форма может спросить параметры администрирования кластера. Без них она поставит блокировку, но не сможет удалить «упрямые» сеансы — например, повисший клиент, который не реагирует на предупреждение.
Те же действия запускаются параметрами командной строки — удобно для ночного обновления по расписанию:
rem Поставить блокировку и выгнать пользователей
1cv8.exe ENTERPRISE /S"srv1c\buh" /N"Администратор" /P"пароль" /C"ЗавершитьРаботуПользователей" /UC upd2610
rem Снять блокировку после работ
1cv8.exe ENTERPRISE /S"srv1c\buh" /N"Администратор" /P"пароль" /C"РазрешитьРаботуПользователей" /UC upd2610
Эти параметры понимают конфигурации на БСП. В самописной или сильно старой конфигурации они ничего не сделают.
В форме «Активные пользователи» клиент-серверной базы есть и точечная команда завершения выбранного сеанса. Это удобнее консоли, когда нужно выгнать одного человека, а прав на сервер у вас нет.
Файловая база: как отключить пользователей без консоли
У файловой базы нет кластера и нет списка сеансов, которыми можно управлять снаружи. Есть только файл 1Cv8.1CD, который открыт у каждого работающего клиента.
Порядок действий:
- Блокировка из программы (раздел выше). Это основной путь, если конфигурация типовая.
- Сообщение коллегам в мессенджере. Банально, но решает половину ситуаций.
- Закрытие файла на сервере. Для тех, кто ушёл домой с открытой 1С.
Если база лежит в общей папке на Windows-компьютере, откройте на нём «Управление компьютером» → Общие папки → Открытые файлы. Найдите строку с 1Cv8.1CD, правый клик → «Закрыть открытый файл».
То же из командной строки на компьютере с базой:
rem Список открытых по сети файлов с их ID
net file
rem Закрыть файл по ID из списка
net file 1207 /close
Закрытие файла — аварийный способ. Клиент на другом конце теряет несохранённые данные и получит ошибку. Если в этот момент шла запись, базу потом стоит проверить через «Тестирование и исправление» в Конфигураторе. Делайте так только с теми, кто точно ушёл.
Если база на NAS или Linux-сервере (Samba), «Открытые файлы» Windows вам не помогут. Смотрите открытые файлы средствами самого хранилища или перезапустите службу общего доступа, предупредив всех: оборвутся все сеансы разом.
Журнал регистрации: кто был в базе и почему сеанс завис
Журнал нужен в двух случаях. Первый — понять, кто держал базу ночью и почему не прошло обновление. Второй — найти пользователя, чей клиент постоянно «висит».
Где открыть:
- В БП 3.0:
Администрирование → Обслуживание → Журнал регистрации. - В ЗУП и УТ:
Администрирование → Поддержка и обслуживание → Журнал регистрации. - В Конфигураторе:
Администрирование → Журнал регистрации.
Что фильтровать:
- 🔑 События «Сеанс. Начало» и «Сеанс. Завершение» — время входа и выхода. Сеанс с началом и без завершения — кандидат на зависший.
- 👤 Пользователь и компьютер — с какого рабочего места заходили.
- 🔢 Номер сеанса — совпадает с номером в консоли кластера. По нему видно, что именно делал сеанс перед зависанием: какой документ записывал, какой отчёт формировал.
- ⛔ Ошибки за тот же период — часто рядом лежит причина: тяжёлый отчёт, обмен, ошибка блокировки данных.
Если удалённый сеанс снова и снова появляется с одного компьютера, загляните на этот компьютер. Часто это 1С в свёрнутом окне на терминальном сервере или незакрытая сессия RDP.
Автоматическое завершение сеансов: rac и скрипт через COM
Для регулярных работ — ночное обновление, выгрузка .dt, пересчёт итогов — выгонять людей руками неудобно. Есть два инструмента.
Утилита rac
rac работает через сервер администрирования ras. Его запускают на сервере 1С (порт по умолчанию 1545), лучше как службу.
rem Список кластеров — нужен UUID
rac cluster list
rem Сеансы кластера
rac session list --cluster=<uuid-кластера>
rem Завершить конкретный сеанс
rac session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>
Если в кластере есть администратор, добавьте --cluster-user и --cluster-pwd. Полный список параметров — в rac help session. В вывод rac session list попадают сеансы всех баз кластера, поэтому в скрипте фильтруйте по UUID базы (его даёт rac infobase summary list).
Обработка на встроенном языке через COM
Второй путь — внешняя обработка, которая подключается к агенту сервера через V83.COMConnector. На сервере, где выполняется код, должна быть зарегистрирована comcntr.dll нужной версии (regsvr32 из папки bin платформы).
&НаСервере
Процедура ЗавершитьСеансыБазыНаСервере(ИмяСервера, ИмяБазы, АдминКластера, ПарольКластера)
Коннектор = Новый COMОбъект("V83.COMConnector");
Агент = Коннектор.ConnectAgent("tcp://" + ИмяСервера + ":1540");
МойНомерСеанса = НомерСеансаИнформационнойБазы();
Для Каждого Кластер Из Агент.GetClusters() Цикл
Агент.Authenticate(Кластер, АдминКластера, ПарольКластера);
Для Каждого Сеанс Из Агент.GetSessions(Кластер) Цикл
Если НРег(Сеанс.infoBase.Name) <> НРег(ИмяБазы) Тогда
Продолжить;
КонецЕсли;
// свой сеанс и сеанс консоли не трогаем
Если Сеанс.SessionID = МойНомерСеанса Или Сеанс.AppID = "SrvrConsole" Тогда
Продолжить;
КонецЕсли;
Агент.TerminateSession(Кластер, Сеанс);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Код удаляет все сеансы указанной базы, кроме своего. Пароль администратора кластера не храните в тексте обработки: передавайте его параметром или берите из защищённого хранилища.
Сначала поставьте блокировку начала сеансов, потом запускайте скрипт. Иначе пользователи успеют войти заново, пока вы выгоняете остальных.
Как реже выгонять людей: таймауты и регламент
Принудительное завершение — следствие. Причина обычно в том, что работы не согласованы, а забытые сеансы никто не закрывает.
Что помогает:
- ⏰ Регламентное окно. Обновления и тяжёлые операции — в фиксированное время, например по четвергам после 19:00. Люди привыкают и сохраняются заранее.
- 💤 Засыпание пассивных сеансов. В свойствах базы в консоли кластера есть «Время засыпания пассивного сеанса» и «Время завершения спящего сеанса» (в секундах). Например, 3600 и 7200: через час простоя сеанс уснёт и освободит лицензию, ещё через два часа завершится.
- 🔒 Блокировка заранее. Поставьте её с временем начала в будущем — предупреждение пользователи увидят до старта работ.
- 🖥 Терминальный сервер. Настройте завершение отключённых RDP-сессий через несколько часов. Тогда «свёрнутые» 1С не будут жить неделями.
- 📊 Журнал регистрации раз в неделю: кто чаще всего оставляет открытую базу.
Когда принудительно выгонять не нужно:
- Для формирования отчётов и обычного резервного копирования средствами СУБД монопольный доступ не требуется.
- Для загрузки обновления в Конфигураторе без обновления структуры базы — тоже. Монопольный режим нужен для обновления конфигурации базы данных, загрузки .dt, тестирования и исправления.