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

· 9 мин

Содержание

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

Какой способ выбрать, зависит от ситуации. Нужно один раз освободить базу для обновления — хватит блокировки начала сеансов и завершения текущих. Сеанс завис и не уходит — придётся работать с процессами и файлами. Регулярные ночные работы — проще автоматизировать через rac и параметры запуска.

СпособГде работаетКогда выбирать
Диалог «Завершить сеансы и повторить» в КонфигуратореКлиент-серверОбновление конфигурации БД, мешают чужие сеансы
Консоль администрирования серверов 1СКлиент-серверНужно выборочно завершить один-два сеанса
rac session terminateКлиент-серверСкрипты, ночные регламенты
Блокировка работы пользователей (БСП)Файловая и клиент-серверПлановые работы с предупреждением сотрудников
Закрытие открытых файлов на сервереФайловаяСеанс «умер», а база всё ещё занята

Как 1С ведёт сеансы и почему Конфигуратор только смотрит

Каждый запуск 1С:Предприятия, Конфигуратора, фонового или регламентного задания создаёт сеанс. В клиент-серверном варианте сеансы живут в кластере серверов 1С. Управляет ими менеджер кластера, а не клиентское приложение. Поэтому завершают их инструменты кластера: консоль, rac, программные методы администрирования.

В файловой базе кластера нет. Каждый клиент сам открывает файл 1Cv8.1CD и держит его, пока работает. Убить чужой сеанс «изнутри» платформа не может — только закрыть процесс 1cv8.exe или 1cv8c.exe на машине пользователя либо разорвать сетевое подключение к файлу.

Что показывает окно активных пользователей в Конфигураторе:

  • 👤 имя пользователя информационной базы;
  • 💻 компьютер, с которого открыт сеанс;
  • 🧩 приложение: тонкий клиент, Конфигуратор, фоновое задание, COM-соединение;
  • 🕒 время начала работы.

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

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

Подготовка: что сделать до отключения пользователей

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

Минимальный порядок подготовки:

  1. 📣 Предупредите сотрудников о времени работ — письмом или сообщением в мессенджере за 15–30 минут.
  2. 📋 Откройте Администрирование → Активные пользователи в Конфигураторе и выпишите, кто сейчас в базе.
  3. ⏸️ Проверьте, нет ли долгих фоновых операций: закрытия месяца, обмена, перепроведения. Их лучше дождаться.
  4. 💾 Сделайте резервную копию базы , если после отключения вы будете менять конфигурацию.
  5. 🔑 Для клиент-серверной базы приготовьте логин и пароль администратора кластера и администратора информационной базы — без них консоль и rac не дадут завершить сеансы.

Если в базе работает обмен с сайтом, ЭДО или банком через регламентные задания, они снова откроют сеанс через несколько секунд. Блокируйте не только пользователей, но и регламентные задания.

Отключение пользователей 1С через Конфигуратор и консоль кластера

Способ 1. «Завершить сеансы и повторить» при обновлении базы

Это единственный сценарий, где Конфигуратор сам предлагает выкинуть пользователей. Работает только в клиент-серверном варианте.

  1. Откройте Конфигуратор под администратором базы.
  2. Выполните Конфигурация → Обновить конфигурацию базы данных (клавиша F7).
  3. Если в базе есть другие сеансы и изменения требуют монопольного режима, платформа покажет диалог с кнопкой «Завершить сеансы и повторить».
  4. Нажмите её. При запросе введите учётные данные администратора кластера.
  5. Платформа завершит чужие сеансы и повторит обновление.

Если изменения можно применить без монопольного режима, платформа предложит динамическое обновление. Пользователи при этом остаются в базе, а новую конфигурацию увидят после перезапуска.

Способ 2. Консоль администрирования серверов 1С

Подходит, когда нужно отключить конкретного человека, а не всех.

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

Сеанс пропадёт из списка за несколько секунд. У пользователя клиент покажет сообщение о разрыве соединения.

Консоль не открывается или пишет об ошибке регистрации? Часто помогает перерегистрация компонента: запустите от администратора regsvr32 "C:\Program Files\1cv8\8.3.xx.xxxx\bin\radmin.dll" из каталога нужной версии платформы.

Способ 3. Утилита rac из командной строки

Для rac должен работать сервер администрирования ras (по умолчанию порт 1545). Порядок такой: узнать идентификатор кластера, потом сеансы, потом завершить нужный.

rac cluster list
rac session list --cluster=<id_кластера> --cluster-user=admin --cluster-pwd=pass
rac session terminate --cluster=<id_кластера> --session=<id_сеанса> --cluster-user=admin --cluster-pwd=pass

Чтобы видеть сеансы только одной базы, сначала получите её идентификатор через rac infobase summary list --cluster=<id_кластера>. Полный список параметров для вашей версии платформы показывает rac help session.

Блокировка начала сеансов и монопольный режим

Завершить сеансы мало: через минуту бухгалтер снова откроет базу. Поэтому перед работами вход запрещают.

Блокировка в свойствах информационной базы (клиент-сервер)

В консоли кластера откройте свойства базы. Там есть флажки и поля:

  • 🔒 «Блокировка начала сеансов включена»;
  • 🕒 «Начало» и «Конец» блокировки;
  • 💬 «Сообщение о блокировке» — его увидит пользователь при входе;
  • 🔑 «Код разрешения» — с ним администратор войдёт, несмотря на блокировку;
  • ⛔ «Блокировка регламентных заданий включена».

То же через rac:

rac infobase update --cluster=<id_кластера> --infobase=<id_базы> ^
  --infobase-user=Администратор --infobase-pwd=pass ^
  --sessions-deny=on --scheduled-jobs-deny=on ^
  --denied-message="Обновление базы до 22:00" --permission-code=123

После работ верните --sessions-deny=off и --scheduled-jobs-deny=off.

Блокировка не завершает уже открытые сеансы сама по себе. Она лишь не пускает новых. Текущие сеансы завершают способами из предыдущего раздела.

Блокировка работы пользователей в типовых конфигурациях

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

Что делает обработка:

  1. Устанавливает блокировку с вашим сообщением и кодом разрешения.
  2. Предупреждает открытые клиенты, что скоро сеанс завершится.
  3. Через заданное время клиенты закрываются сами.

То же можно запустить из командной строки без входа в интерфейс:

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

Снять блокировку — тот же запуск с /C"РазрешитьРаботуПользователей". Параметр /UC с кодом разрешения пропускает вас в заблокированную базу, в том числе в Конфигуратор.

Самозакрытие клиентов срабатывает только у тех, кто работает в конфигурации на БСП. Зависший клиент, Конфигуратор коллеги или внешнее COM-соединение так не закроются.

Монопольный режим программно

Во встроенном языке монопольный режим ставит УстановитьМонопольныйРежим(Истина). Если в базе есть другие сеансы, метод вызовет исключение. Это удобно в своих обработках обслуживания: сначала проверили, что вы одни, потом выполняете работу.

Зависшие сеансы и файлы блокировки файловой базы

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

Файловая база

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

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

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

Закрытие открытого файла на сервере и удаление 1Cv8.1CL обрывают работу всех, кто ещё в базе, без сохранения данных. Делайте это только когда убедились, что живых пользователей нет, и после резервной копии 1Cv8.1CD. Никогда не удаляйте сам 1Cv8.1CD.

Если 1Cv8.1CL не удаляется с ошибкой «файл занят» — значит, его ещё держит процесс. Ищите его по шагам 1–2.

Клиент-серверная база

Сеанс, который не удаляется из консоли, обычно держит зависший рабочий процесс rphost. Посмотрите в консоли, какой процесс обслуживает сеанс, — колонка «Рабочий процесс» или раздел «Рабочие процессы».

Варианты от мягкого к жёсткому:

  1. Подождать: после обрыва соединения кластер сам удаляет сеанс по таймауту.
  2. Завершить нужный процесс rphost в «Диспетчере задач» на рабочем сервере, сверив PID.
  3. Перезапустить службу «Агент сервера 1С:Предприятия 8.3».

Процесс rphost обслуживает сразу много сеансов, часто нескольких баз. Его завершение и перезапуск службы обрывают работу всех пользователей кластера. Делайте это вне рабочего времени.

Крайний приём для «вечных» сеансов, которые возвращаются после рестарта, — очистка сеансовых данных кластера. Остановите службу агента, в каталоге srvinfo\reg_1541 удалите папки snccntx…, затем запустите службу. Перед этим скопируйте весь каталог srvinfo в резерв. Файлы 1CV8Clst.lst и 1CV8Reg.lst не трогайте: в них список баз и настройки кластера.

Как найти, кто держит базу: техжурнал и журнал регистрации

Когда сеанс появляется снова и снова, нужно понять, кто его открывает. Чаще всего это регламентное задание, внешний обмен через COM или чей-то забытый скрипт.

Журнал регистрации

В Конфигураторе откройте Администрирование → Журнал регистрации. Отберите события «Сеанс. Начало» и «Сеанс. Завершение» за нужный интервал. В колонках видны пользователь, компьютер и приложение.

Признаки виновника:

  • 🔁 сеансы с интервалом в одну-две минуты — регламентное задание;
  • 🧷 приложение «COM-соединение» — внешняя программа или обмен;
  • 🖥️ компьютер сервера приложений — фоновые задания самой базы.

Технологический журнал

Если журнала регистрации не хватает, включите техжурнал. Создайте файл logcfg.xml в каталоге conf платформы, например C:\Program Files\1cv8\conf\:

<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="C:\techlog" history="24">
    <event>
      <eq property="name" value="CONN"/>
    </event>
    <event>
      <eq property="name" value="SESN"/>
    </event>
    <event>
      <eq property="name" value="EXCP"/>
    </event>
    <property name="all"/>
  </log>
</config>

Платформа подхватит настройку в течение минуты без перезапуска. Параметр history="24" хранит логи 24 часа. Событие SESN фиксирует действия с сеансами, CONN — установку и разрыв соединений, EXCP — исключения.

Не оставляйте техжурнал включённым постоянно. С property name="all" он быстро растёт, на нагруженном сервере — на гигабайты в час. Разобрались — удалите или переименуйте logcfg.xml.

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

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

Можно ли отключить пользователя из Конфигуратора в файловой базе?
Нет. Конфигуратор показывает активных пользователей, но завершить их сеанс не может. Закройте 1С на компьютере пользователя или снимите открытый файл базы на сервере.
Пользователь отключён, а лицензия всё ещё занята. Почему?
В клиент-серверном варианте лицензия освобождается вместе с сеансом. Если сеанс завис в кластере, лицензия числится за ним, пока он не удалён. Проверьте список командой rac session list --licenses.
Нужен ли монопольный режим, чтобы просто поправить модуль?
Нет. Правку можно сохранить в конфигурации без применения к базе. Монопольный режим понадобится при обновлении конфигурации базы данных, если изменения затрагивают структуру.
Как зайти в базу, если я сам поставил блокировку?
Добавьте в строку запуска параметр /UC с кодом разрешения, который указали при блокировке. В клиент-серверной базе код можно посмотреть или сменить в свойствах базы в консоли кластера.
Отключение сеанса удалит несохранённые данные?
Да. Открытые и не записанные документы пропадут, незавершённая транзакция откатится. Записанные данные останутся в базе.