Как отключить активных пользователей в файловой 1С и решить проблему с зависшими лицензиями?

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

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

Метод 1. Использование индивидуальных пулов приложений (для веб-сервера IIS)

Если в качестве веб-сервера вы используете Internet Information Services (IIS), то наиболее профессиональным решением будет тонкая настройка пулов приложений. По умолчанию все публикации баз данных могут работать в рамках одного общего пула. Перезапуск этого общего пула приведет к мгновенному обрыву сессий абсолютно во всех базах, что критично, если на сервере работает несколько отделов или клиентов.

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

  1. Откройте Диспетчер служб IIS на вашем сервере.
  2. В левом дереве подключений выберите раздел Пулы приложений (Application Pools).
  3. В панели «Действия» (справа) нажмите Добавить пул приложений. Задайте ему понятное имя, например, соответствующее имени вашей информационной базы (например, Pool_Trade). Версию среды .NET Framework можно оставить без изменений (или выбрать «Без управляемого кода»).
  4. Перейдите в раздел СайтыDefault Web Site (или ваш веб-сайт) и найдите виртуальный каталог вашей опубликованной базы 1С.
  5. Кликните по нему правой кнопкой мыши, выберите Управление приложениемДополнительные параметры.
  6. В строке Пул приложений нажмите кнопку выбора и укажите только что созданный вами пул (Pool_Trade).

Теперь, когда вам потребуется монопольно зайти в базу данных или сбросить зависших пользователей конкретной публикации, вам достаточно открыть Диспетчер IIS, выбрать пул приложений этой базы и нажать кнопку Перезапуск (Recycle) или Завершить работу. Все сессии именно этой базы будут мгновенно завершены, тогда как другие публикации на веб-сервере продолжат стабильную работу. Также для отключения зависших сессий есть обработка мониторинга журнала регистрации и прерывания сеансов.

Метод 2. Настройка автоматического завершения спящих сеансов в 1С

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

Проанализируем процедуру настройки этой функции через режим «1С:Предприятие» под учетной записью с правами администратора:

  1. Перейдите в раздел меню АдминистрированиеПараметры информационной базы (в некоторых конфигурациях этот пункт может находиться в подразделе «Обслуживание»).
  2. Найдите блок параметров, отвечающий за работу сеансов.
  3. Установите значение для параметра Время засыпания пассивного сеанса. Рекомендуется установить значение 1200 секунд (20 минут). Если пользователь не совершает никаких действий в программе в течение этого времени, его сеанс переходит в спящий режим и перестает удерживать активные транзакции.
  4. Установите значение для параметра Время завершения спящего сеанса. Рекомендуется установить значение 3600 секунд (1 час). По истечении этого времени спящий сеанс будет полностью удален веб-сервером, а занятая им лицензия вернется в общий пул свободных лицензий.

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

Метод 3. Программная установка блокировки соединений

Иногда требуется принудительно запретить новые подключения и выгнать текущих пользователей для проведения технических работ — для этого подойдёт обработка завершения сеансов и обслуживания системы. Для этого в платформе существует объект БлокировкаСеансов. Мы можем использовать обработку или выполнить следующий код в привилегированном модуле для программной установки блокировки:


НоваяБлокировка = ПараметрыБлокировкиСеансов();
НоваяБлокировка.Начало = ТекущаяДата();
НоваяБлокировка.Конец = ТекущаяДата() + 3600; // Блокировка на 1 час
НоваяБлокировка.Сообщение = "Выполняются технические работы. Пожалуйста, зайдите позже.";
НоваяБлокировка.Установлена = Истина;
НоваяБлокировка.КодРазрешения = "KeyAdmin123";

УстановитьБлокировкуСеансов(НоваяБлокировка);

После выполнения этого кода пользователи веб-клиента увидят предупреждение и их сеансы будут завершены. Администратор же сможет зайти в базу, запустив ярлык с параметром запуска /UC KeyAdmin123.

Метод 4. Освобождение заблокированных файлов на уровне операционной системы

Бывают ситуации, когда веб-сервер перезапущен, но файлы базы данных 1Cv8.1CD все равно остаются заняты (заблокированы). Это происходит из-за того, что кто-то из пользователей подключен к базе напрямую через общий сетевой ресурс (так называемую «расшаренную» папку) по протоколу SMB/CIFS.

Выясним, как снять эти блокировки без перезагрузки всего сервера:

  1. На сервере, где физически расположена папка с файлом базы данных, откройте утилиту Управление компьютером (Computer Management) — её можно запустить через команду compmgmt.msc в окне «Выполнить» (Win + R).
  2. Перейдите по пути: Системные инструментыОбщие папкиОткрытые файлы.
  3. В центральной части окна вы увидите список всех файлов, которые открыты сетевыми пользователями в данный момент. Найдите в списке файлы, содержащие в пути вашу базу 1С (особенно файлы с расширениями .1CD, .1CLck).
  4. Кликните правой кнопкой мыши по заблокированному файлу и выберите пункт Закрыть открытый файл.

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

Часть 2. Почему один клиент забирает все 5 лицензий и как это исправить

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

Основная причина кроется в специфике веб-протоколов и механизме подсчета лицензий веб-сервером:

Для предотвращения «захвата» лицензий рекомендуется внедрить следующие организационные и технические меры:

  1. Провести инструктаж пользователей: Настоятельно потребуйте от сотрудников завершать работу с программой исключительно через команду меню 1С «Завершить работу». Категорически запретите обновлять страницу через F5 в браузере.
  2. Использовать Тонкий клиент: Если есть техническая возможность, вместо браузеров установите сотрудникам бесплатную платформу Тонкий клиент 1С. В окне запуска добавьте базу, указав ссылку на веб-сервер (протокол HTTP/HTTPS). Тонкий клиент гораздо стабильнее держит связь, корректно обрабатывает разрывы сети и умеет использовать локальные лицензии, установленные на компьютерах пользователей, что значительно снижает нагрузку на пул лицензий веб-сервера.
← На главную