Как отключить всех пользователей от базы 1С:УПП 1.3 в клиент-серверном режиме?

Системный администратор 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

При обслуживании корпоративных информационных систем на базе 1С:Предприятие 8.3, работающих в связке с MS SQL Server (включая конфигурацию 1С:Управление производственным предприятием 1.3), регулярно возникает задача монопольного доступа к базе данных. Обновление конфигурации, архивация, тестирование и исправление или регламентные операции на сервере СУБД требуют полного завершения всех пользовательских сеансов. Разберем по шагам все доступные способы отключения пользователей — от штатных интерфейсных механизмов конфигурации до низкоуровневых административных инструментов кластера серверов и СУБД.

Способ 1. Использование встроенной обработки блокировки соединений в УПП 1.3

В конфигурации 1С:Управление производственным предприятием 1.3 реализован штатный механизм корректного предупреждения и отключения пользователей. Этот способ считается наиболее мягким, так как клиенты получают системное оповещение и время для сохранения открытых документов.

  1. Откроем программу под учетной записью с полными административными правами.
  2. Перейдем в главное меню: Операции — Обработки — Блокировка соединений с информационной базой (в некоторых редакциях форма вызывается как Блокировка работы пользователей).
  3. Установим флаг Блокировка работы пользователей включена.
  4. Зададим параметры планируемого окна обслуживания: определим поля Начало действия блокировки и Конец действия блокировки.
  5. Заполним поле Сообщение для пользователей (например: «Внимание! База закрывается на регламентное техническое обслуживание. Пожалуйста, сохраните данные и закройте программу»).
  6. Обязательно укажем Код разрешения. Это секретный строковый пароль, который позволит администратору войти в заблокированную базу для выполнения работ.
  7. Для принудительного разрыва уже существующих сеансов откроем список активных пользователей через кнопку Активные сеансы. При необходимости в настройках формы укажем параметры подключения к кластеру серверов (сетевое имя сервера и рабочий порт). В контекстном меню строки пользователя выберем команду Завершить сеанс.

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

Способ 2. Завершение сеансов через консоль «Администрирование серверов 1С Предприятия»

Если пользователи не реагируют на оповещения или клиентские приложения зависли, воспользуемся графической утилитой управления кластером серверов. Рассмотрим порядок действий системного администратора:

  1. Запустим утилиту Администрирование серверов 1С Предприятия на сервере приложений или рабочей станции администратора.
  2. Раскроем дерево нужного кластера серверов, перейдем в ветку Информационные базы и найдем рабочую базу УПП.
  3. Откроем свойства информационной базы (двойной клик или пункт «Свойства» в контекстном меню) и установим следующие параметры:
    — Флаг Блокировка начала сеансов включена;
    — Поля Начало и Конец блокировки;
    — Текст Сообщение;
    — Код разрешения;
    — Флаг Блокировка регламентных заданий включена (критически важный параметр, блокирующий создание сеансов фоновыми процессами).
  4. Нажмем Применить или ОК. Теперь новые подключения запрещены.
  5. Перейдем в ветку Сеансы внутри нашей информационной базы. В рабочей области отобразится список всех пользователей, фоновых заданий и системных подключений.
  6. Выделим сеансы, которые необходимо завершить (можно выделить все сеансы комбинацией клавиш Ctrl+A), нажмем правую кнопку мыши и выберем пункт Удалить.

Способ 3. Пакетное управление сеансами через консольную утилиту RAC

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

  1. Установим блокировку запуска новых сеансов:

rac infobase update --cluster=CLUSTER_ID --ibase=IBASE_ID --sessions-deny=on --denied-from="2025-01-01T22:00:00" --denied-message="Технические работы" --permission-code="SecretPass"
  1. Получим список всех текущих сеансов информационной базы:

rac session list --cluster=CLUSTER_ID --ibase=IBASE_ID

  1. Завершим конкретный сеанс по его идентификатору:

rac session terminate --cluster=CLUSTER_ID --session=SESSION_ID

Способ 4. Программный сброс сеансов через COM-соединение

Если требуется встроить отключение пользователей во внешний скрипт резервного копирования или регламентную внешнюю обработку, подключимся к агенту кластера через объект V83.COMConnector. Разберем пример кода на встроенном языке 1С:


Соединитель = Новый COMОбъект("V83.COMConnector");
Агент = Соединитель.ConnectAgent("ServerName");
Кластеры = Агент.GetClusters();

Для Каждого Кластер Из Кластеры Цикл
    Агент.Authenticate(Кластер, "ClusterAdmin", "Password");
    РабочиеПроцессы = Агент.GetWorkingProcesses(Кластер);
    
    Для Каждого Процесс Из РабочиеПроцессы Цикл
        Описание = Соединитель.ConnectWorkingProcess(Процесс.HostName + ":" + Формат(Процесс.MainPort, "ЧГ="));
        Описание.AddAuthentication("BaseAdmin", "BasePassword");
        
        Инфобаза = Описание.CreateInfoBaseInfo();
        Инфобаза.Name = "upp_production";
        
        Сеансы = Описание.GetSessions(Инфобаза);
        Для Каждого Сеанс Из Сеансы Цикл
            Если Не Сеанс.AppID = "COMConsole" Тогда
                Описание.TerminateSession(Инфобаза, Сеанс);
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
КонецЦикла;

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

Когда в базе включена блокировка сеансов, стандартный запуск клиента выдает ошибку о запрете соединений. Чтобы администратор мог зайти в конфигуратор или предприятие, используется специальный ключ командной строки /UC. Запуск выполняется следующим образом:


"C:\Program Files\1cv8\8.3.XX.XXXX\bin\1cv8.exe" ENTERPRISE /S "ServerName\upp_production" /N "Администратор" /P "Пароль" /UC "SecretPass"

Здесь параметр /UC принимает значение кода разрешения, указанного ранее в свойствах базы или в обработке блокировки.

Нюансы и возможные проблемы при отключении пользователей

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

  1. Открытые модальные окна. Если у пользователя на рабочем месте открыт диалог печати, системное окно выбора файла или модальное окно предупреждения платформы, клиентское приложение не может обработать команду закрытия от сервера. В таких случаях завершение возможно только через завершение процесса 1cv8.exe на стороне ОС/RDP или сбросом сеанса на сервере СУБД.
  2. Длительные вызовы и блокировки SQL. Если сеанс выполняет сложный расчет, формирование тяжелого отчета или заблокирован взаимоблокировкой (deadlock), сервер приложений 1С помечает сеанс на удаление, но освобождение ресурсов откладывается до возврата из СУБД. В экстренных случаях на стороне MS SQL Server разрывают все подключения к базе командой:

ALTER DATABASE [upp_production] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE [upp_production] SET MULTI_USER;
  1. Разница между сеансом и соединением. Удаление сеанса в консоли кластера прекращает логическую сессию пользователя 1С. При этом низкоуровневое TCP-соединение рабочего процесса rphost с клиентским компьютером может оставаться в пуле еще некоторое время, что является нормальным поведением платформы.
  2. Фоновые и регламентные задания. Если не включить флаг блокировки регламентных заданий, планировщик 1С будет непрерывно генерировать новые сеансы фоновых заданий, что помешает монопольному обновлению конфигурации.
← На главную