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

· 10 мин

Содержание

Чтобы выключить активных пользователей в 1С, сначала закройте вход новым сеансам, а потом завершите текущие. В типовых конфигурациях (БП 3.0, ЗУП 3.1, УТ 11) это делается из самой программы: Администрирование → Обслуживание → Блокировка работы пользователей. В клиент-серверной базе то же самое можно сделать в консоли администрирования сервера или командой rac, в файловой — блокировкой из программы или закрытием файла базы на файловом сервере.

Какой способ выбрать, зависит от ситуации. Плановое обновление вечером — блокировка из программы с предупреждением. Один зависший сеанс — точечное удаление в консоли сервера. Ночной регламент без людей — скрипт на rac. Убивать процессы в диспетчере задач стоит только тогда, когда всё остальное не сработало.

Какой способ отключения подходит вашей базе

Сначала определите вариант базы. Это видно в окне запуска: у файловой базы под названием указан путь вида File="D:\Bases\Buh", у серверной — Srvr="srv1c";Ref="buh".

СпособВариант базыКогда применятьРиски
Блокировка из программы (БСП)файловый и серверныйплановые работы, есть 10–15 минут на предупреждениепочти нет, пользователи успевают сохраниться
Консоль администрирования серверовсерверныйубрать 1–2 конкретных сеанса, закрыть базу без входа в неёнесохранённые данные у отключённого пользователя теряются
Утилита racсерверныйночные регламенты, скрипты, серверы на Linuxнужен запущенный ras, ошибка в скрипте задевает чужие базы
Закрытие файла на серверефайловыйкто-то держит базу, а войти в неё нельзяобрыв записи, редко — повреждение базы
Остановка процессов и службсерверныйсеансы не удаляются штатнообрываются все сеансы всех баз на этом сервере

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

Шаг 1. Блокировка работы пользователей из режима «Предприятие»

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

Как поставить блокировку

  1. Войдите в базу под пользователем с полными правами.
  2. Откройте Администрирование → Обслуживание. В старых релизах раздел назывался «Поддержка и обслуживание».
  3. Перейдите по ссылке «Блокировка работы пользователей».
  4. Заполните поля:
    • 🕐 начало и окончание блокировки — дайте людям 10–15 минут;
    • 💬 сообщение, например: «С 19:00 обновление программы, сохраните документы»;
    • 🔑 код для разрешения работы — любое слово или число, например upd77.
  5. Нажмите «Установить блокировку».

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

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

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

/UCupd77

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

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

Где посмотреть, кто сейчас в базе

В той же панели Администрирование → Обслуживание есть ссылка «Активные пользователи». Форма показывает пользователя, компьютер, приложение и время начала сеанса. Выделите строку и завершите сеанс командой из панели формы.

Если ссылки нет, откройте платформенный список: ≡ (главное меню) → Все функции → Стандартные → Активные пользователи. Пункт «Все функции» включается в ≡ → Сервис → Параметры галочкой «Отображать команду “Все функции”». Этот список только показывает сеансы, отключать из него нельзя.

Шаг 2. Завершение сеансов в консоли администрирования сервера 1С

Для клиент-серверной базы это основной инструмент администратора. Входить в саму базу не нужно, хватит прав администратора кластера.

Как удалить сеансы

  1. Запустите оснастку «Администрирование серверов 1С:Предприятия» (ставится вместе с сервером или клиентом с компонентом администрирования).
  2. Раскройте Central 1C:Enterprise 8.3 servers → имя сервера → Кластеры → Локальный кластер → Информационные базы → имя базы → Сеансы.
  3. Отсортируйте список по колонке «Пользователь» или «Компьютер».
  4. Выделите нужные строки (Shift или Ctrl для нескольких), правая кнопка мыши → «Удалить».

Пользователь увидит сообщение о разрыве соединения. Всё, что он не записал, пропадёт, поэтому перед массовым удалением предупредите людей по телефону или в мессенджере.

Как закрыть базу для новых входов

Удалённые сеансы вернутся, если не запретить вход. Правая кнопка по базе → «Свойства»:

  • ✅ «Блокировка начала сеансов включена» — главная галочка;
  • 🕐 «Начало» и «Конец» интервала блокировки — можно оставить пустыми, тогда блокировка действует сразу и до снятия;
  • 💬 «Сообщение о блокировке» — его увидит пользователь при входе;
  • 🔑 «Код разрешения» — тот самый код для ключа /UC;
  • ⏸️ «Блокировка регламентных заданий включена» — включите, иначе фоновые задания (загрузка курсов, обмены) будут создавать новые сеансы.

Для изменения свойств консоль запросит логин и пароль пользователя информационной базы с правами администратора.

Если оснастка открывается с ошибкой или пустая, перерегистрируйте библиотеку консоли нужной версии платформы командой от имени администратора: regsvr32 "C:\Program Files\1cv8\8.3.24.1342\bin\radmin.dll". Номер версии в пути подставьте свой, он должен совпадать с версией сервера.

Шаг 3. Отключение пользователей через окно запуска и параметры командной строки

Блокировку БСП можно поставить, вообще не открывая формы. Типовые конфигурации понимают два параметра запуска:

  • /CЗавершитьРаботуПользователей — ставит блокировку и выгоняет всех;
  • /CРазрешитьРаботуПользователей — снимает блокировку.

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

Через окно запуска

  1. Выделите базу → «Изменить» → дойдите до страницы с дополнительными параметрами.
  2. Впишите: /CЗавершитьРаботуПользователей /UCupd77.
  3. Запустите базу в режиме «1С:Предприятие».

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

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

Для файловой базы:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /C"ЗавершитьРаботуПользователей" /UC"upd77"

Для серверной базы вместо /F укажите /S"srv1c\buh". В Конфигураторе тоже есть список сеансов (Администрирование → Активные пользователи), но отключать из него нельзя: он только показывает, кто мешает.

Шаг 4. Как закрыть файловую базу и получить монопольный режим

В файловом варианте нет сервера и консоли. Каждый пользователь держит открытым файл 1Cv8.1CD в папке базы. Пока файл открыт хоть одним процессом, монопольный режим не установится.

Порядок действий

  1. Поставьте блокировку из программы (шаг 1) или параметром запуска (шаг 3). Для файловой базы это работает так же, как для серверной.
  2. Подождите время блокировки и проверьте «Активных пользователей».
  3. Если в списке остался чей-то сеанс, а дозвониться до человека не получается, закройте файл на сервере.

Как закрыть файл базы на файловом сервере Windows

  1. На компьютере, где лежит папка базы, откройте «Управление компьютером» (compmgmt.msc).
  2. Перейдите в Общие папки → Открытые файлы.
  3. Найдите строки с путём к 1Cv8.1CD. В колонке «Пользователь» видно, чей это сеанс.
  4. Правая кнопка → «Закрыть открытый файл».

То же из командной строки сервера:

openfiles /query /fo table | findstr /i "1Cv8.1CD"
net file
net file 12345 /close

Здесь 12345 — идентификатор из вывода net file.

Закрывайте файл только когда у человека нет несохранённой работы и не идёт запись. Обрыв во время проведения документа или обмена может повредить базу. Перед любыми работами в монопольном режиме выгрузите копию: Конфигуратор → Администрирование → Выгрузить информационную базу.

Если база лежит на локальном диске самого компьютера, а пользователи работают через удалённый рабочий стол, ищите сеансы в «Диспетчере задач» на вкладке «Пользователи»: там видно, у кого запущен 1cv8.exe или 1cv8c.exe.

Шаг 5. Аварийное отключение: процессы и службы сервера

Бывает, что сеанс в консоли удаляется, но тут же появляется снова или висит со статусом «спящий» часами. Тогда переходят к процессам.

Что можно сделать, от мягкого к жёсткому

  1. Удалить соединения. В консоли раскройте базу → «Соединения» и удалите соединения проблемного пользователя. Иногда сеанс уже удалён, а соединение осталось.
  2. Перезапустить рабочий процесс. В консоли раскройте кластер → «Рабочие процессы», посмотрите, какой rphost обслуживает зависший сеанс, и завершите этот процесс в «Диспетчере задач» по PID. Кластер сам поднимет новый.
  3. Перезапустить службу агента сервера. В services.msc найдите службу «Агент сервера 1С:Предприятия 8.3» и перезапустите её. На Linux найдите имя юнита командой systemctl list-units | grep srv1cv8 и выполните для него systemctl restart.

Один rphost обслуживает сеансы нескольких баз. Его завершение оборвёт работу всем, кто на нём сидит, а перезапуск службы агента — всем пользователям всех баз сервера, включая фоновые задания и обмены. Делайте это в нерабочее время или после оповещения всех отделов.

Не останавливайте СУБД (MS SQL, PostgreSQL), чтобы «выгнать» пользователей. Это не решает задачу 1С, а рисков добавляет: незавершённые транзакции, долгий старт, сбой обменов.

Шаг 6. Скрипт для автоматической выгрузки пользователей через rac

Для ночных регламентов удобнее утилита rac. Она работает через сервер администрирования ras, который должен быть запущен (по умолчанию слушает порт 1545). На Windows ras обычно регистрируют отдельной службой, на Linux запускают командой ras cluster --daemon.

Базовые команды:

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

Если у кластера задан администратор, к каждой команде добавьте --cluster-user=<логин> --cluster-pwd=<пароль>. Полный список параметров — rac help session и rac help infobase.

Пример для Linux: заблокировать базу и отключить всех

#!/bin/bash
RAC=/opt/1cv8/x86_64/8.3.24.1342/rac
BASE=buh
IBUSER="Администратор"
IBPWD="пароль"

CL=$($RAC cluster list | awk -F' : ' '/^cluster /{print $2; exit}')

IB=$($RAC infobase summary list --cluster=$CL \
  | awk -F' : ' -v b="$BASE" '/^infobase /{id=$2} /^name /{if ($2==b) {print id; exit}}')

# 1. Запрещаем вход и регламентные задания
$RAC infobase update --cluster=$CL --infobase=$IB \
  --infobase-user="$IBUSER" --infobase-pwd="$IBPWD" \
  --sessions-deny=on --scheduled-jobs-deny=on \
  --denied-message="Идёт обновление" --permission-code=upd77

# 2. Завершаем все сеансы базы
for S in $($RAC session list --cluster=$CL --infobase=$IB | awk -F' : ' '/^session /{print $2}'); do
  $RAC session terminate --cluster=$CL --session=$S
done

Регулярка /^session / с пробелом нужна, чтобы не захватить строку session-id. Скрипт берёт первый кластер в списке; если кластеров несколько, укажите UUID вручную. После работ снимите блокировку той же командой infobase update с --sessions-deny=off --scheduled-jobs-deny=off.

На Windows логика та же: rac.exe лежит в папке bin платформы, разбор вывода делается через Select-String в PowerShell. Запускайте скрипт из Планировщика заданий от учётной записи, которой разрешено читать пароль администратора базы, и не храните пароли в общем доступе.

Приёмы, которые экономят время

  • 🔍 В выводе session list есть поле app-id. Значения 1CV8C и 1CV8 — тонкий и толстый клиент, Designer — Конфигуратор, BackgroundJob — фоновое задание. По нему легко отфильтровать, кого выгонять.
  • 🔁 Если после отключения сеансы фоновых заданий появляются снова, значит не включена блокировка регламентных заданий.
  • 🧾 Перед завершением сохраните вывод session list в файл: утром будет видно, кто работал ночью и почему обновление не стартовало.
Что у вас сейчас?

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

Почему после отключения пользователи сразу заходят снова?
Вы удалили сеансы, но не запретили вход. Включите блокировку начала сеансов в свойствах базы на сервере или блокировку работы пользователей в программе.
Нужно ли отключать пользователей, чтобы обновить конфигурацию?
Для загрузки обновления в конфигурацию — нет. Для применения изменений к базе данных (обновление структуры), загрузки .dt, тестирования и исправления нужен монопольный режим, а значит, в базе никого не должно быть.
Можно ли отключить одного пользователя, не трогая остальных?
Да. В серверной базе удалите его сеанс в консоли администрирования или через rac session terminate. В типовых конфигурациях это же делается в форме «Активные пользователи».
Что будет с несохранёнными документами отключённого пользователя?
Они пропадут: записанное в базу сохраняется, открытые несохранённые формы — нет. Поэтому при плановых работах дайте людям время по сообщению блокировки.
Я поставил блокировку и сам не могу войти. Что делать?
Запустите базу с ключом /UC и кодом разрешения, который указали при блокировке. Если код забыт, в серверной базе снимите галочку блокировки в свойствах базы через консоль сервера.