Выгнать всех из базы 1С 8.3 перед обновлением: консоль, блокировка, скрипт

· 9 мин

Содержание

Завершить работу пользователей в 1С 8.3 быстрее всего так: в типовой конфигурации откройте Администрирование → Обслуживание → Блокировка работы пользователей, задайте сообщение и время, нажмите «Установить блокировку». Через несколько минут программа сама закроет все сеансы и не пустит новых. В клиент-серверной базе то же самое делают из консоли администрирования кластера: включают блокировку начала сеансов и удаляют оставшиеся сеансы вручную.

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

Подготовка: кто сейчас в базе и что оборвётся

Начните с того, чтобы увидеть список активных сеансов. Мест, где его можно посмотреть, три.

Где смотретьПутьЧто видно
Пользовательский режим (БП 3.0, ЗУП 3.1, УТ 11)Администрирование → Обслуживание → Активные пользователиПользователь, компьютер, приложение, время начала
КонфигураторАдминистрирование → Активные пользователиТе же сеансы, без кнопки отключения
Консоль кластера (только серверная база)Кластеры → кластер → Информационные базы → база → СеансыСеансы, их рабочие процессы, захваченные лицензии

В списке встречаются не только люди. Разберитесь, что за сеансы перед вами:

  • 👤 1C:Enterprise / Тонкий клиент / Веб-клиент — живые пользователи;
  • 🛠 Конфигуратор — кто-то из программистов. Если его выбить, несохранённые правки пропадут;
  • ⚙️ Фоновое задание — регламентные задания: обмены, загрузка курсов, полнотекстовый поиск;
  • 🔌 COM-соединение — внешние обработки, интеграции, обмен с сайтом.

Принудительное завершение сеанса не сохраняет открытые документы. Если бухгалтер набирал счёт на 40 строк и не записал его — строки пропадут. Предупредите людей хотя бы за 10–15 минут.

Короткий порядок подготовки перед плановыми работами:

  1. Напишите в общий чат время начала и ожидаемую длительность работ.
  2. Договоритесь с программистом, чтобы он сохранил и закрыл Конфигуратор.
  3. Проверьте, не идёт ли сейчас длинная операция: закрытие месяца , расчёт зарплаты, большой обмен. Обрыв на середине придётся перезапускать.
  4. Сделайте резервную копию — после того как все вышли, но до изменений.

Блокировка работы пользователей из самой программы 1С

Этот способ работает и в файловой, и в клиент-серверной базе. Механизм встроен в типовые конфигурации на БСП: Бухгалтерию 3.0, ЗУП 3.1, УТ 11, КА и ERP.

  1. Зайдите в базу под пользователем с полными правами.
  2. Откройте Администрирование → Обслуживание и в группе про сеансы выберите «Блокировка работы пользователей».
  3. В поле сообщения напишите понятный текст: «Обновление программы. Сохраните документы и выйдите. Работа возобновится в 21:00».
  4. Укажите время начала и окончания блокировки. Если начало пустое, блокировка действует сразу.
  5. Задайте код разрешения — короткое слово, например obnovlenie. С ним администратор сможет зайти в заблокированную базу.
  6. Нажмите «Установить блокировку».

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

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

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

Как зайти в заблокированную базу

Добавьте к параметрам запуска ключ /UC с кодом разрешения. В окне выбора базы: Изменить → Дополнительные параметры запуска, строка:

/UCobnovlenie

Или из командной строки:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S"srv1c\buh" /N"Администратор" /P"пароль" /UCobnovlenie

Снимают блокировку там же: кнопкой «Снять блокировку». Если задали время окончания, она снимется сама.

Консоль администрирования серверов 1С: отключение сеансов вручную

Консоль — это оснастка MMC «Администрирование серверов 1С Предприятия», она ставится вместе с платформой. Работает только с клиент-серверными базами.

Блокировка начала сеансов

  1. Откройте консоль, разверните Central 1C:Enterprise 8.3 servers → ваш сервер → Кластеры → кластер → Информационные базы.
  2. Щёлкните правой кнопкой по базе → Свойства. Введите логин и пароль администратора информационной базы (пользователь 1С с полными правами).
  3. Установите флаг «Блокировка начала сеансов включена».
  4. Заполните «Начало» и «Конец» (можно оставить пустыми), «Сообщение» и «Код разрешения».
  5. Если будете обновлять конфигурацию, поставьте также «Блокировка регламентных заданий включена». Иначе фоновые задания будут снова и снова открывать сеансы.
  6. Нажмите «ОК».

Удаление сеансов

Блокировка не пускает новых, но уже открытые сеансы в этом варианте сами не закрываются. Их удаляют руками:

  1. Раскройте базу → Сеансы.
  2. Выделите сеансы — можно все сразу через Shift.
  3. Правая кнопка → Удалить.

Пользователь увидит сообщение о том, что сеанс завершён администратором. Лицензия, которую он занимал, освобождается сразу.

Если консоль не открывается

Частая ситуация после обновления платформы: консоль выдаёт ошибку при запуске или не видит сервер. Помогает перерегистрация компонента radmin.dll той версии платформы, на которой работает сервер. Запустите командную строку от имени администратора:

regsvr32 "C:\Program Files\1cv8\8.3.24.1548\bin\radmin.dll"

Номер версии в пути подставьте свой. Версия консоли должна совпадать с версией сервера — с консолью от другой сборки соединение может не установиться.

Принудительное отключение в файловой базе

У файловой базы нет сервера и нет консоли. Пользователи работают с файлом 1Cv8.1CD напрямую, поэтому способы здесь такие.

Штатный. Блокировка работы пользователей из программы, описанная выше. Она отлично работает и в файловом варианте: каждый клиент сам проверяет блокировку и закрывается. Но только если программа у пользователя не зависла.

Если кто-то не выходит. Типичная история: человек ушёл домой, оставил 1С открытой, а компьютер заблокирован. Варианты по нарастающей:

  1. Позвонить или подключиться к его компьютеру удалённо и закрыть программу.
  2. На терминальном сервере — в диспетчере задач на вкладке «Пользователи» найти его процессы 1cv8.exe или 1cv8c.exe и завершить.
  3. Если база лежит в общей папке Windows — на сервере открыть Управление компьютером → Общие папки → Открытые файлы, найти 1Cv8.1CD и закрыть файл у нужного пользователя.

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

Зависшие сеансы и аварийная очистка

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

Диагностика: выберите симптом

Крайняя мера — перезапуск службы «Агент сервера 1С:Предприятия 8.3». Он обрывает сеансы всех баз кластера, а не одной. Делайте это только вне рабочего времени и только если другие способы не помогли. Если на сервере крутится несколько организаций, предупредите всех.

Перед перезапуском службы посмотрите, не идёт ли в какой-то базе ночной обмен или пересчёт итогов. Обрыв в середине такой операции потом разбирать дольше, чем ждать её окончания.

Автоматизация: выгнать пользователей скриптом ночью

Если обновления и выгрузки идут по расписанию, вручную ставить блокировку неудобно. Есть два рабочих подхода.

Параметр запуска ЗавершитьРаботуПользователей

Типовые конфигурации на БСП понимают параметр запуска /C"ЗавершитьРаботуПользователей". Программа стартует, ставит блокировку, дожидается закрытия всех сеансов и выходит. Обратный параметр — /C"РазрешитьРаботуПользователей".

Пример bat-файла для клиент-серверной базы:

@echo off
set V8="C:\Program Files\1cv8\common\1cestart.exe"
set BASE=/S"srv1c\buh"
set ADM=/N"Администратор" /P"пароль"

rem 1. Блокируем и выгоняем всех
%V8% ENTERPRISE %BASE% %ADM% /C"ЗавершитьРаботуПользователей" /UCnightjob /DisableStartupMessages

rem 2. Выгрузка базы в dt
%V8% DESIGNER %BASE% %ADM% /UCnightjob /DumpIB "D:\backup\buh.dt" /Out "D:\backup\log.txt"

rem 3. Снимаем блокировку
%V8% ENTERPRISE %BASE% %ADM% /C"РазрешитьРаботуПользователей" /UCnightjob /DisableStartupMessages

Код разрешения во всех трёх строках один и тот же — иначе второй шаг сам не попадёт в базу.

Через rac — утилиту управления кластером

Для серверных баз удобнее работать напрямую с кластером. Нужна запущенная служба сервера администрирования ras (по умолчанию порт 1545). Сама утилита rac лежит в папке bin платформы.

Сначала узнайте идентификатор кластера и базы:

rac localhost:1545 cluster list
rac localhost:1545 infobase summary list --cluster=<uuid-кластера>

Список сеансов и завершение одного сеанса:

rac localhost:1545 session list --cluster=<uuid-кластера> --infobase=<uuid-базы>
rac localhost:1545 session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>

Если у кластера задан администратор, добавьте к каждой команде --cluster-user и --cluster-pwd. Блокировку начала сеансов и регламентных заданий тоже ставят через rac infobase update — точный набор ключей для вашей версии смотрите в rac help infobase.

Чтобы отключить сразу всех, удобно обернуть это в PowerShell:

$rac  = "C:\Program Files\1cv8\8.3.24.1548\bin\rac.exe"
$cl   = "<uuid-кластера>"
$ib   = "<uuid-базы>"

$ids = & $rac localhost:1545 session list --cluster=$cl --infobase=$ib |
       Select-String '^session\s+:\s+(\S+)' |
       ForEach-Object { $_.Matches[0].Groups[1].Value }

foreach ($id in $ids) {
    & $rac localhost:1545 session terminate --cluster=$cl --session=$id
}

Скрипт кладут в планировщик заданий Windows на нужное время. Запускайте его только после блокировки начала сеансов — иначе пользователи тут же зайдут обратно, а фоновые задания откроют новые сеансы.

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

Какой способ выбрать

СпособКогда подходитРиски
Блокировка из программыПлановое обновление, любая базаНе закроет зависший клиент в файловой базе
Консоль кластераСерверная база, нужно выгнать конкретного человекаУдаление сеанса теряет несохранённые данные
Закрытие файла / процессаФайловая база, один «забытый» клиентРиск повредить базу при записи
Перезапуск службы агентаВсё зависло, другие способы не сработалиПадают все базы сервера
bat + /C"ЗавершитьРаботуПользователей"Регулярная ночная выгрузка или обновлениеПароль в открытом виде
rac + PowerShellМного баз, нужен полный контрольНужен ras, знание идентификаторов
Перед тем как нажать «Удалить» на чужом сеансе
Выполнено: 0 / 6

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

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