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

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

Если вы не администратор, а обычный пользователь — часть методов будет для вас недоступна. В таком случае обратитесь к IT-отделу или используйте только те способы, которые не требуют прав сервера (например, через 1С:Предприятие в режиме конфигуратора).

1. Отключение через консоль администрирования 1С

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

Чтобы открыть консоль:

  • 🖥️ Запустите 1С:Предприятие в режиме Конфигуратор (для этого удерживайте Shift при запуске ярлыка).
  • 🔧 Перейдите в меню Администрирование → Управление пользователями и правами → Активные пользователи.
  • 🚫 В списке найдите нужного пользователя, кликните по нему правой кнопкой и выберите Завершить сеанс.
  • ⚡ Если сеанс не завершается — попробуйте вариант Принудительное завершение (доступен не во всех конфигурациях).

Этот метод работает в 90% случаев для клиент-серверных баз, но может не сработать, если:

  • 🔌 Пользователь подключён через тонкий клиент с устаревшей версией платформы.
  • 🔄 Сеанс "завис" на уровне SQL-сервера (например, при долгой транзакции).
  • 🛡️ У вас недостаточно прав (требуется роль Администратор или Полные права).
⚠️ Внимание: В файловых базах (1Сv8.1CD) консоль администрирования может не показывать активные сеансы корректно. В этом случае используйте методы из следующих разделов.
📊 Какой тип базы 1С вы используете?
Файловая
Клиент-серверная (MS SQL)
Клиент-серверная (PostgreSQL)
Не знаю

2. Принудительное завершение через SQL-запрос (для MS SQL и PostgreSQL)

Если консоль администрирования не помогла, можно обратиться напрямую к SQL-серверу. Этот метод требует доступа к Microsoft SQL Server Management Studio (для MS SQL) или pgAdmin (для PostgreSQL) и знания основ SQL.

Для MS SQL выполните следующий запрос:

-- Найдём активные сеансы 1С

SELECT

s.session_id,

s.login_name,

s.host_name,

s.program_name,

s.status,

s.last_request_start_time

FROM

sys.dm_exec_sessions s

WHERE

s.program_name LIKE '%1cv8%'

AND s.status = 'running';

-- Завершаем сеанс по ID (замените {ID} на реальный номер)

KILL {ID};

Для PostgreSQL используйте:

-- Просмотр активных подключений

SELECT

pid,

usename,

application_name,

client_addr,

state,

query_start

FROM

pg_stat_activity

WHERE

application_name LIKE '%1C%';

-- Принудительное завершение (замените {PID} на ID процесса)

SELECT pg_terminate_backend({PID});

Важные нюансы:

  • 🔍 Перед выполнением KILL или pg_terminate_backend убедитесь, что вы завершаете правильный сеанс — иначе можете прервать работу других пользователей.
  • 🔄 После принудительного завершения сеанс в 1С может остаться в списке активных, но будет неработоспособен. Перезапустите сервер 1С, чтобы очистить кеш.
  • 🛡️ Для выполнения этих команд требуются права sysadmin (MS SQL) или superuser (PostgreSQL).
⚠️ Внимание: Некоторые конфигурации (например, 1С:ERP) могут использовать длинные транзакции. Принудительное завершение такого сеанса может привести к блокировкам таблиц. Перед выполнением проверьте, нет ли открытых транзакций:

-- Для MS SQL

DBCC OPENTRAN;

3. Использование утилиты rac (для Linux-серверов)

Если ваш сервер 1С работает под управлением Linux, для управления сеансами можно использовать утилиту rac (Remote Administration Console), которая входит в состав серверного ПО 1С:Предприятие.

Основные команды:

# Просмотр активных сеансов

rac session list --cluster=<имя_кластера>

Принудительное завершение сеанса по ID

rac session terminate --cluster=<имя_кластера> --session-id=<ID_сеанса>

Пример вывода команды rac session list:

ID сеанса Пользователь Приложение Хост Время начала
1245 ИвановИИ 1C:Enterprise 8.3 192.168.1.105 2026-05-15 10:15:22
1246 ПетровАА ThinClient 192.168.1.107 2026-05-15 09:45:11

Преимущества метода:

  • ⚡ Быстрота — не требует подключения к SQL-серверу.
  • 🔧 Гибкость — можно завершать сеансы на конкретном рабочем сервере кластера.
  • 📌 Логирование — все действия записываются в журнал rac.log.
⚠️ Внимание: Утилита rac может отсутствовать в дистрибутиве 1С для Windows. Для Windows-серверов используйте 1cv8 с ключом /Disconnect (см. следующий раздел).

4. Командная строка Windows: утилита 1cv8

На Windows-серверах для управления сеансами можно использовать консольную утилиту 1cv8.exe, которая устанавливается вместе с платформой. Она позволяет завершать сеансы без запуска конфигуратора.

Синтаксис команды:

1cv8.exe CONFIG /Disconnect /Out <файл_вывода> /IBName <имя_базы> /IBConnectionString <строка_подключения>

Пример для файловых баз:

1cv8.exe CONFIG /Disconnect /Out C:\temp\disconnect.log /IBName "C:\Bases\MainBase" /N "ИвановИИ" /Force

Ключи команды:

  • /N — имя пользователя (необязательно, если нужно завершить всех).
  • /Force — принудительное завершение.
  • /Out — файл для лога (полезно для отладки).

Для клиент-серверных баз строка подключения будет выглядеть так:

/IBConnectionString "Srvr=my_server;Ref=main_base;"

Убедиться, что утилита 1cv8.exe доступна в %PATH%|Создать папку для логов (например, C:\temp)|Проверить права на запись в папку с базой|Сохранить резервную копию базы (рекомендуется)

-->

5. Скрипт на встроенном языке 1С для автоматического отключения

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

Пример скрипта для завершения всех сеансов кроме текущего:

Процедура ЗавершитьВсеСеансыКромеТекущего()

Сеансы = ПолучаемСписокСеансов();

ТекущийИдентификатор = УникальныйИдентификаторСеанса();

Для Каждого Сеанс Из Сеансы Цикл

Если Сеанс.УникальныйИдентификатор <> ТекущийИдентификатор Тогда

Попытка

ЗавершитьСеанс(Сеанс.Идентификатор);

Исключение

ЗаписатьЖурналРегистрации(НСтр("ru = 'Ошибка завершения сеанса: '") + ОписаниеОшибки(), УровеньЖурналаРегистрации.Ошибка);

КонецПопытки;

КонецЕсли;

КонецЦикла;

КонецПроцедуры

Чтобы этот скрипт работал, его нужно:

  1. Поместить в общий модуль с правом ВызовСервера.
  2. Создать регламентное задание, которое будет его выполнять.
  3. Назначить заданию права на завершение сеансов (роль Администрирование).

Для завершения конкретного пользователя модифицируйте условие:

Если Сеанс.ИмяПользователя = "ИвановИИ" Тогда

ЗавершитьСеанс(Сеанс.Идентификатор);

КонецЕсли;

💡

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

6. Radical-методы: перезапуск служб и серверов

Если ни один из вышеперечисленных способов не сработал, остаётся крайняя мера — перезапуск служб 1С или самого сервера. Это гарантированно завершит все сеансы, но может привести к:

  • 🔴 Потере несохранённых данных у всех пользователей.
  • 🛠️ Временной недоступности базы (5-15 минут).
  • 🔄 Необходимости проверки целостности базы после перезапуска.

Как перезапустить службы корректно:

  1. Откройте services.msc (для Windows) или используйте systemctl (для Linux).
  2. Найдите службы:
    • 🖥️ 1С:Предприятие 8.3 Сервер (для клиент-серверного варианта).
    • 🗄️ Агент сервера 1С:Предприятия 8.3.
  3. Остановите их поочерёдно, затем запустите в обратном порядке.
  4. Для Linux командная строка будет такой:

    sudo systemctl stop srv1cv83
    

    sudo systemctl stop ragents

    Ждём 30 секунд

    sudo systemctl start ragents

    sudo systemctl start srv1cv83

    ⚠️ Внимание: После перезапуска служб проверьте целостность базы через Тестирование и исправление в конфигураторе. В файловых базах выполните команду:

    chdbfl.exe -F <путь_к_базе> -C

    7. Особенности для файловых баз (1Cv8.1CD)

    Файловые базы (1Cv8.1CD) не имеют централизованного управления сеансами, поэтому большинство методов из этой статьи для них не работают. Вот что можно сделать:

    • 🔌 Отключить сетевой доступ к папке с базой (если она на сетевом диске).
    • 📂 Переименовать файл базы (1Cv8.1CD) — пользователи потеряют соединение.
    • 🖥️ Перезагрузить компьютер, на котором хранится база (если это локальный ПК).

Для файловых баз также работает утилита 1cv8 с ключом /Disconnect (см. раздел 4), но её эффективность зависит от версии платформы.

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

chdbfl.exe -F C:\Bases\MyBase.1CD -R
Что делать, если после отключения база не открывается?

Если после принудительного завершения сеансов база перестала открываться, выполните следующие действия:

1. Сделайте резервную копию файла 1Cv8.1CD.

2. Запустите утилиту chdbfl.exe с ключом -C для проверки целостности.

3. Если ошибки не исправлены, используйте ключ -R для восстановления.

4. В крайнем случае восстановите базу из последней резервной копии.

FAQ: Частые вопросы по отключению пользователей 1С

Можно ли отключить пользователя, не прерывая его работу?

Нет, любое принудительное завершение сеанса приведёт к потере несохранённых данных у пользователя. Если нужно "мягко" попросить пользователя выйти — используйте уведомления через ПоказатьОповещениеПользователя() или отправьте сообщение в чат (если интегрирован 1С:Документооборот или 1С:Connect).

Почему после завершения сеанса через SQL пользователь снова появляется в списке?

Это происходит из-за кеширования сеансов на уровне сервера 1С. Чтобы очистить кеш, перезапустите службу 1С:Предприятие или выполните команду rac cache clear --cluster=<имя_кластера> (для Linux).

Как заблокировать пользователя, чтобы он не мог войти снова?

Принудительное завершение сеанса не блокирует учётную запись. Чтобы запретить вход:

  1. Откройте Администрирование → Пользователи в конфигураторе.
  2. Найдите пользователя и снимите галочку Разрешить вход.
  3. Сохраните изменения.

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

Какие права нужны для принудительного отключения?

Минимальные требования:

  • Для методов через конфигуратор — роль Администратор или Полные права.
  • Для SQL-запросов — права sysadmin (MS SQL) или superuser (PostgreSQL).
  • Для утилиты rac — права на выполнение команд в кластере 1С.
  • Для перезапуска служб — права локального администратора на сервере.
Можно ли отключить всех пользователей сразу?

Да, для этого:

  • В консоли администрирования 1С выделите всех пользователей (Ctrl+A) и выберите Завершить сеанс.
  • В SQL выполните запрос на завершение всех сеансов с program_name LIKE '%1cv8%'.
  • Через утилиту 1cv8 используйте команду без указания пользователя: 1cv8.exe CONFIG /Disconnect /IBName "C:\Bases\MainBase" /Force.

⚠️ Это приведёт к потере данных у всех активных пользователей!

💡

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