Как восстановить доступ к базе 1С после блокировки из-за настройки «Время завершения сеанса при бездействии»?

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

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

Выясним причину: ловушка лицензирования ПРОФ и КОРП

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

Разберем механику ограничения:

  1. Функции расширенного управления сеансами (к которым относится таймаут бездействия) официально считаются функционалом уровня КОРП.
  2. Для владельцев лицензий уровня ПРОФ сделано исключение: эти функции доступны только в том случае, если в информационной базе одновременно работает не более 10 сеансов.
  3. Как только вы активируете настройку Время завершения сеанса при бездействии, сервер начинает проверять количество активных подключений. Если их больше 10, сервер блокирует возможность создания новых сеансов, считая использование функционала неправомерным.

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

Способ 1. Оперативное уменьшение количества сеансов

Самый быстрый способ «проскочить» проверку лицензионности — временно уменьшить количество работающих пользователей. Если в базе останется менее 10 сеансов, сервер 1С позволит администратору зайти в Конфигуратор и вернуть настройки в исходное состояние.

Рассмотрим порядок действий:

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

Важно: Учтите, что пользователи могут пытаться зайти в базу повторно, снова занимая «слоты» сеансов. Рекомендуется временно включить «Блокировку начала сеансов» в свойствах базы в той же консоли администрирования, чтобы никто, кроме вас, не смог занять место.

Способ 2. Редактирование параметров через консоль администрирования

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

Разберем этот процесс по шагам:

  1. В консоли администрирования серверов 1С найдите нужную информационную базу.
  2. Нажмите на нее правой кнопкой мыши и выберите «Свойства».
  3. В открывшемся окне найдите поля, отвечающие за время завершения. Обычно это Время завершения сеанса при бездействии и Время ожидания начала завершения сеанса.
  4. Установите в этих полях значение 0. В терминологии 1С значение «0» означает, что механизм отключен.
  5. Нажмите «ОК» для сохранения изменений.

После этого попробуйте войти в систему. Если вход по-прежнему заблокирован, возможно, параметры кэшированы процессом rmngr. В таком случае потребуется перезагрузка службы 1C:Enterprise Server (через оснастку services.msc).

Способ 3. Прямое исправление в базе данных (для SQL-варианта)

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

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

Проанализируем структуру: настройки параметров базы хранятся в таблице IBParams. Нам необходимо найти записи, отвечающие за таймауты, и обнулить их. Примерный алгоритм действий в SQL Management Studio:


-- Посмотрим текущие параметры базы
SELECT * FROM IBParams;

-- Обычно параметры таймаута хранятся в бинарном или строковом виде
-- Для полного сброса параметров (в критическом случае) 
-- некоторые администраторы очищают таблицу, но это крайняя мера.
-- Безопаснее найти конкретную запись с именем параметра.

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

Особенности для файлового варианта базы данных

Хотя в обсуждении рассматривался клиент-серверный вариант, для файловых баз проблема также актуальна. В файловой базе настройки хранятся внутри 1Cv8.1CD. Если вы оказались заблокированы в файловом варианте, попробуйте следующие приемы:

  1. Монопольный запуск: Попробуйте запустить базу с параметром командной строки /AllowExecuteScheduledJobs -Off. Это может предотвратить запуск фоновых процессов, которые сервер засчитывает как активные сеансы.
  2. Перемещение файла: Временно переместите файл 1Cv8.1CD в новую пустую папку. Это гарантирует, что никакие старые .lck файлы (файлы блокировок) не будут мешать входу.

Рекомендации по безопасному тестированию настроек

Чтобы не повторять подобных ошибок, давайте выработаем правила безопасной настройки параметров сервера:

1. Использование профилей безопасности. Вместо жесткой установки параметров для всей базы в Конфигураторе, лучше использовать Профили безопасности в консоли администрирования. Это более гибкий инструмент, который легче откатить.

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


Процедура ПроверитьВремяБездействия()
    Если ИмяПользователя() = "Администратор" Тогда
        Возврат; // Администратора никогда не выкидываем
    КонецЕсли;
    
    // Логика проверки времени и завершения работы
    // ...
КонецПроцедуры

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

Подводя итог, можно сказать, что ситуация «Все пропало, шеф!» в данном случае легко решаема через внешние инструменты администрирования. Главное — понимать связь между настройками платформы и типом используемых лицензий 1С:Предприятие.

← На главную