Как принудительно завершить сеансы пользователей в файловой базе 1С

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

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

Различие механизмов завершения в разных режимах работы

Прежде всего, выясним причину, по которой привычное окно «Завершить сеансы» может не появляться. В клиент-серверном варианте платформа взаимодействует с rphost, который может принудительно разорвать TCP-соединение. В файловом варианте каждый экземпляр 1cv8.exe работает с файлом 1Cv8.1CD напрямую через операционную систему. Кнопка «Завершить сеансы» в окне обновления конфигурации — это функционал, предназначенный в первую очередь для взаимодействия с сервером 1С. В файловой базе платформа не имеет прямой власти над процессами на других компьютерах, поэтому зачастую предлагает только варианты «Повторить» или «Отмена».

Метод 1: Использование штатного файла блокировки 1Cv8.cdn

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

Посмотрим на структуру этого файла. Это текстовый документ, содержащий параметры блокировки в формате внутренней сериализации 1С. Разберем пример содержания такого файла:


{1,20231027100000,20231027120000,"В базе ведутся технические работы. Пожалуйста, сохраните данные и завершите работу.","12345",""}

Проанализируем параметры в этой строке:

  1. Первое значение (1) — признак установки блокировки.
  2. Второе значение — дата и время начала блокировки в формате ГГГГММДДЧЧММСС.
  3. Третье значение — дата и время окончания блокировки.
  4. Текст в кавычках — сообщение, которое увидит пользователь на своем экране.
  5. "12345" — код разрешения. С его помощью администратор сможет зайти в заблокированную базу, используя параметр запуска /UC 12345.

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

Метод 2: Блокировка через Библиотеку стандартных подсистем (БСП)

Если вы используете современную конфигурацию (например, 1С:Бухгалтерия 3.0 или УНФ), в ней уже есть встроенная обработка для этих целей. Разберем по шагам, как ей воспользоваться:

  1. Перейдите в раздел Администрирование — Обслуживание.
  2. Найдите пункт Блокировка работы пользователей.
  3. Укажите текст сообщения и время начала блокировки.
  4. Нажмите «Установить блокировку».

Важно понимать принцип работы этого механизма в файловой базе: система не «выбрасывает» пользователя мгновенно. В клиентских сеансах запущен фоновый процесс (обработчик ожидания), который раз в минуту проверяет наличие файла 1Cv8.cdn. Если файл найден, пользователю выводится предупреждение. По истечении времени система вызывает функцию ЗавершитьРаботуСистемы().

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

Метод 3: Принудительное закрытие дескрипторов через ОС

Если пользователи ушли домой, оставив программу включенной, а штатные блокировки не помогают, проанализируем ситуацию на уровне операционной системы. Файловая база 1С — это файл 1Cv8.1CD, к которому открыты сетевые сессии.

Использование системной утилиты Openfiles

Для системных администраторов в ОС Windows предусмотрена команда openfiles, которая позволяет разорвать связь конкретного пользователя с файлом. Рассмотрим алгоритм действий:

  1. Запустите командную строку (cmd) от имени администратора на сервере, где физически лежит база.
  2. Выполните команду для включения режима отслеживания (если он был выключен): openfiles /local on (потребуется перезагрузка).
  3. Для просмотра открытых файлов используйте openfiles /query.
  4. Чтобы «выкинуть» пользователя, выполните команду разрыва соединения.

Использование PowerShell

Более современный и безопасный способ — использование модуля SmbShare. Выясним, как закрыть файлы через PowerShell:


# Просмотр всех открытых файлов базы 1С
Get-SmbOpenFile | Where-Object {$_.Path -like "*1Cv8.1CD*"}

# Принудительное закрытие всех сессий к файлу базы
Get-SmbOpenFile | Where-Object {$_.Path -like "*1Cv8.1CD*"} | Close-SmbOpenFile -Force

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

Метод 4: Использование сторонних утилит (Unlocker)

Проанализируем ситуацию, когда у вас нет прав администратора сервера, но есть полные права на папку с базой. В таких случаях часто используется программка Unlocker или её аналоги. Она позволяет увидеть, какой процесс «держит» файл 1Cv8.1CD, и принудительно разблокировать его.

Внимание: Использование Unlocker эквивалентно «убийству» процесса через диспетчер задач. Это самый радикальный метод, который мы рассмотрим далее с точки зрения безопасности данных.

Риски и последствия принудительного завершения

Выясним причину, по которой 1С не рекомендует «выкидывать» пользователей из файловых баз аварийно. Файловая база крайне чувствительна к целостности данных в момент записи.

Рекомендация: После каждого случая принудительного завершения сеансов (через Unlocker, PowerShell или отключение сети) обязательно запустите утилиту chdbfl.exe (она находится в папке bin установленной платформы), чтобы убедиться в отсутствии физических повреждений файла базы данных.

Заключение и лучшие практики

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

  1. Попытаться использовать штатную Блокировку работы пользователей через интерфейс 1С.
  2. Если через 5-10 минут сеансы остались, проверить наличие «зависших» окон у пользователей через терминальный доступ (если работа ведется в RDP).
  3. В крайнем случае использовать Close-SmbOpenFile в PowerShell или openfiles, так как это менее травматично для ОС, чем полное отключение сети на сервере.
  4. Если база опубликована на веб-сервере (IIS или Apache), самым быстрым способом будет перезапуск службы веб-сервера, что мгновенно закроет все клиентские подключения по HTTP/HTTPS.

Помните, что регулярное использование аварийных методов завершения работы — это повод задуматься о переходе на клиент-серверный вариант работы (SQL), где управление сеансами реализовано на уровне архитектуры системы.

← На главную