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

Особое внимание уделим рискам, которые возникают при принудительном разрыве сессий, и объясним, как минимизировать последствия. Например, отключение пользователя во время записи документа может привести к"битым" транзакциям, которые потом придётся восстанавливать через тестирование и исправление (chdbfl). Также рассмотрим нюансы для разных версий платформы — от 1С 8.2 до 8.3.22, включая облачные решения.

Если вы администрируете базу на SQL Server или PostgreSQL, найдёте здесь и актуальные команды для работы с сессиями через СУБД. А для тех, кто управляет кластером серверов , приведём примеры использования rac и ras.

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

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

Чтобы отключить пользователей:

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

В клиент-серверном варианте здесь же можно увидеть блокировки, которые пользователь наложил на объекты базы. Это поможет оценить риски: например, если пользователь блокировал справочник Номенклатура, его отключение может прервать работу других сотрудников с этим справочником.

💡

Перед отключением проверьте колонку"Последний запрос" в окне активных пользователей — это поможет понять, насколько критична текущая операция пользователя.

2. Принудительное отключение через сервер 1С

Если пользователь"завис" или его сессия не закрывается через Конфигуратор, придётся использовать серверные утилиты. Для этого нужен доступ к серверу 1С:Предприятия или кластеру.

Способы принудительного отключения:

  • 🖥️ Через rac (Remote Administration Console):
    rac session terminate --cluster=TcpCluster --session-id=123

    где 123 — идентификатор сессии (узнать можно командой rac session list).

  • 🔄 Через ras (Remote Administration Server):
    ras session --cluster=TcpCluster kill --session-id=123
  • 📊 Через оснастку Администрирование кластера серверов (графический интерфейс).

⚠️ Внимание: Принудительное отключение может привести к потере несохранённых данных пользователя. Если база работает на SQL Server, после такого отключения рекомендуется запустить тестирование и исправление (chdbfl) с ключом -fix.

Что делать, если после отключения база перестала открываться?

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

1. Запустите тестирование и исправление через chdbfl с параметрами -fix -ib.

2. Если ошибки остались, попробуйте восстановить резервную копию.

3. В крайнем случае обратитесь в поддержку 1С с логами сервера (srvinfo).

3. Отключение пользователей на уровне СУБД

Если работает на SQL Server или PostgreSQL, можно разорвать сессии через СУБД. Это полезно, когда сервер недоступен, а база"зависла" из-за долгих транзакций.

Примеры команд:

СУБД Команда для просмотра сессий Команда для отключения
Microsoft SQL Server
SELECT * FROM sys.dm_exec_sessions

WHERE program_name LIKE'1C%'

KILL 55
(где 55 — session_id)
PostgreSQL
SELECT * FROM pg_stat_activity

WHERE application_name LIKE'1C%'

SELECT pg_terminate_backend(1234)
(где 1234 — pid)
IBM DB2
db2"SELECT * FROM SYSIBM.SYSAPPLSTATS

WHERE APPLICATION_NAME LIKE'1C%'"

db2"FORCE APPLICATION (55)"

⚠️ Внимание: Отключение сессий на уровне СУБД не гарантирует корректное завершение транзакций 1С. После таких действий обязательно:

  1. Перезапустите сервер 1С:Предприятия.
  2. Выполните тестирование базы через chdbfl.
  3. Проверьте логи сервера на ошибки (srvinfo -log).

Microsoft SQL Server|PostgreSQL|IBM DB2|Другую|Не знаю-->

4. Отключение всех пользователей сразу (для обслуживания)

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

  • 🔌 Через Конфигуратор:
    1. Откройте Администрирование → Активные пользователи.
    2. Нажмите Отключить всех (доступно только если у вас права администратора кластера).
  • 📛 Через rac:
    rac session terminate --cluster=TcpCluster --all
  • 🔄 Через регламентное задание:

    Создайте задание в , которое отключает пользователей по расписанию (например, ночью перед резервным копированием).

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

    Уведомить пользователей за 10-15 минут|Проверить, нет ли долгих транзакций|Сделать резервную копию базы|Подготовить скрипт для автоматического перезапуска сервера-->

    5. Особенности для облачной версии 1С (1C:Fresh)

    В 1C:Fresh и других облачных решениях прямого доступа к серверу или СУБД нет. Здесь отключение пользователей осуществляется через:

    • 🌐 Личный кабинет 1С:Fresh:
      1. Перейдите в раздел Управление пользователями.
      2. Выберите пользователя и нажмите Заблокировать (это разорвёт его текущую сессию).
  • 📧 Техническую поддержку:

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

  • ⚠️ Внимание: В облаке нет доступа к rac, ras или СУБД. Все операции выполняются через API или интерфейс 1С. Также учтите, что:

    • 🕒 Отключение пользователя может занять до 5 минут (зависит от нагрузки на облако).
    • 🔄 После принудительного отключения база автоматически перезапускается (это может прервать работу других пользователей).
    • 💡

      В 1C:Fresh нельзя использовать chdbfl или прямые SQL-запросы — все операции по восстановлению выполняет поддержка 1С.

      6. Автоматизация отключения пользователей (скрипты)

      Если вам регулярно нужно отключать пользователей (например, для ночного обслуживания), можно автоматизировать процесс с помощью скриптов на PowerShell или Bash.

      Пример скрипта для Windows (PowerShell), который отключает всех пользователей в кластере:

      $ClusterName ="TcpCluster"
      

      $Sessions = rac session list --cluster=$ClusterName | Select-String"SessionID"

      foreach ($Session in $Sessions) {

      $SessionID = ($Session -split"\s+")[1]

      rac session terminate --cluster=$ClusterName --session-id=$SessionID

      }

      Для Linux (Bash):

      #!/bin/bash
      

      CLUSTER="TcpCluster"

      for session in $(rac session list --cluster=$CLUSTER | awk'/SessionID/ {print $2}'); do

      rac session terminate --cluster=$CLUSTER --session-id=$session

      done

      🔹 Где взять rac?

      Утилита входит в комплект поставки сервера 1С:Предприятия. Путь по умолчанию:

      • Windows: C:\Program Files\1cv8\8.3.x.x\bin\rac.exe
      • Linux: /opt/1C/v8.3/x86_64/rac
      • 7. Частые ошибки и как их избежать

        При отключении пользователей администраторы часто сталкиваются с следующими проблемами:

        Ошибка Причина Решение
        Ошибка блокировки при отключении Пользователь держит блокировку на критичном объекте (например, РегистрБухгалтерии) Используйте rac lock list, чтобы увидеть блокировки, и дождитесь их освобождения или принудительно снимите через rac lock clear
        База не открывается после отключения Прервана транзакция, повредившая данные Запустите chdbfl -fix -ib и восстановите базу из резервной копии, если ошибки остались
        Session not found в rac Сессия уже завершилась или указан неверный session-id Обновите список сессий командой rac session list

        🔸 Совет для файловой базы:

        Если после отключения пользователей файловая база (.1CD) не открывается, попробуйте:

        1. Скопировать файл базы в другую папку (иногда помогает сбросить блокировки ОС).
        2. Запустить с ключом /Repair.
        3. Использовать утилиту chdbfl с параметром -monopoly.

      FAQ: Ответы на частые вопросы

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

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

      Что делать, если после отключения пользователя база стала медленно работать?

      Это может быть связано с:

      • 🔄 Незавершёнными транзакциями — проверьте логи сервера на ошибки.
      • 🗃️ Фрагментацией индексов — выполните реиндексацию через chdbfl -reindex.
      • 📉 Перегрузкой сервера — перезапустите кластер .

      Если проблема осталась, обратитесь в поддержку с логами (srvinfo -dump).

      Как отключить пользователя, если Конфигуратор не открывается?

      Возможные причины и решения:

      • 🔑 Не хватает прав — запустите Конфигуратор от имени администратора.
      • 🖥️ База заблокирована — используйте rac session terminate или отключите сессии через СУБД.
      • 💻 Повреждена конфигурация — запустите с ключом /ConfigDump и восстановите резервную копию.
      Можно ли отключить пользователя по расписанию?

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

      1. Создайте регламентное задание в (раздел Администрирование → Регламентные задания).
      2. Используйте скрипт на PowerShell/Bash с планировщиком задач (cron в Linux).
      3. В облаке (1C:Fresh) настройте автоматическое отключение через API (требуется документация от 1С).
      Что делать, если пользователь подключается сразу после отключения?

      Это может происходить из-за:

      • 🔄 Автоматического переподключения в тонком клиенте — отключите опцию Автовосстановление соединения в настройках клиента.
      • 📥 Фоновых задач (например, регламентных заданий) — проверьте список активных задач в Конфигураторе.
      • 🤖 Ботов или интеграций — временно отключите внешние подключения через rac connection deny.