Работа с файловыми базами 1С:Предприятие накладывает определенные ограничения на администрирование сеансов. В отличие от клиент-серверного варианта, где консоль кластера серверов позволяет мгновенно «сбросить» любое соединение, в файловом режиме централизованный менеджер сеансов отсутствует. Однако задачи обновления конфигурации или проведения регламентных работ требуют освобождения базы от активных пользователей. Разберем подробно, какими методами можно добиться завершения работы пользователей, и проанализируем риски каждого подхода.
Прежде всего, выясним причину, по которой привычное окно «Завершить сеансы» может не появляться. В клиент-серверном варианте платформа взаимодействует с rphost, который может принудительно разорвать TCP-соединение. В файловом варианте каждый экземпляр 1cv8.exe работает с файлом 1Cv8.1CD напрямую через операционную систему. Кнопка «Завершить сеансы» в окне обновления конфигурации — это функционал, предназначенный в первую очередь для взаимодействия с сервером 1С. В файловой базе платформа не имеет прямой власти над процессами на других компьютерах, поэтому зачастую предлагает только варианты «Повторить» или «Отмена».
Рассмотрим наиболее «цивилизованный» способ, который заложен в саму платформу 1С. Для управления доступом к базе используется специальный файл блокировки с расширением .cdn. Если этот файл создать в каталоге базы, платформа начнет интерпретировать его как сигнал к ограничению входа и завершению текущих сеансов.
Посмотрим на структуру этого файла. Это текстовый документ, содержащий параметры блокировки в формате внутренней сериализации 1С. Разберем пример содержания такого файла:
{1,20231027100000,20231027120000,"В базе ведутся технические работы. Пожалуйста, сохраните данные и завершите работу.","12345",""}
Проанализируем параметры в этой строке:
/UC 12345.Когда такой файл появляется в папке с базой, типовые конфигурации, использующие Библиотеку Стандартных Подсистем (БСП), через обработчик ожидания фиксируют это и предлагают пользователю завершить работу в течение установленного времени.
Если вы используете современную конфигурацию (например, 1С:Бухгалтерия 3.0 или УНФ), в ней уже есть встроенная обработка для этих целей. Разберем по шагам, как ей воспользоваться:
Важно понимать принцип работы этого механизма в файловой базе: система не «выбрасывает» пользователя мгновенно. В клиентских сеансах запущен фоновый процесс (обработчик ожидания), который раз в минуту проверяет наличие файла 1Cv8.cdn. Если файл найден, пользователю выводится предупреждение. По истечении времени система вызывает функцию ЗавершитьРаботуСистемы().
Ограничение метода: Если у пользователя открыто модальное окно (например, окно выбора файла или предупреждение системы), обработчик ожидания не сможет сработать, и сеанс останется активным. В таких случаях придется прибегнуть к системным средствам.
Если пользователи ушли домой, оставив программу включенной, а штатные блокировки не помогают, проанализируем ситуацию на уровне операционной системы. Файловая база 1С — это файл 1Cv8.1CD, к которому открыты сетевые сессии.
Для системных администраторов в ОС Windows предусмотрена команда openfiles, которая позволяет разорвать связь конкретного пользователя с файлом. Рассмотрим алгоритм действий:
openfiles /local on (потребуется перезагрузка).openfiles /query.Более современный и безопасный способ — использование модуля SmbShare. Выясним, как закрыть файлы через PowerShell:
# Просмотр всех открытых файлов базы 1С
Get-SmbOpenFile | Where-Object {$_.Path -like "*1Cv8.1CD*"}
# Принудительное закрытие всех сессий к файлу базы
Get-SmbOpenFile | Where-Object {$_.Path -like "*1Cv8.1CD*"} | Close-SmbOpenFile -Force
Этот метод хорош тем, что он прерывает только сетевые обращения к конкретному файлу, не затрагивая другие процессы пользователя.
Проанализируем ситуацию, когда у вас нет прав администратора сервера, но есть полные права на папку с базой. В таких случаях часто используется программка Unlocker или её аналоги. Она позволяет увидеть, какой процесс «держит» файл 1Cv8.1CD, и принудительно разблокировать его.
Внимание: Использование Unlocker эквивалентно «убийству» процесса через диспетчер задач. Это самый радикальный метод, который мы рассмотрим далее с точки зрения безопасности данных.
Выясним причину, по которой 1С не рекомендует «выкидывать» пользователей из файловых баз аварийно. Файловая база крайне чувствительна к целостности данных в момент записи.
1cv8.exe записывал данные в таблицу, транзакция может завершиться некорректно. Это приводит к ошибке «Ошибка формата потока».chdbfl.exe.1Cv8.lcl или 1Cv8.tmp, который может мешать последующему входу.Рекомендация: После каждого случая принудительного завершения сеансов (через Unlocker, PowerShell или отключение сети) обязательно запустите утилиту chdbfl.exe (она находится в папке bin установленной платформы), чтобы убедиться в отсутствии физических повреждений файла базы данных.
Мы рассмотрели различные способы управления сеансами. Подведем итог: наиболее правильным алгоритмом будет следующий:
Close-SmbOpenFile в PowerShell или openfiles, так как это менее травматично для ОС, чем полное отключение сети на сервере.Помните, что регулярное использование аварийных методов завершения работы — это повод задуматься о переходе на клиент-серверный вариант работы (SQL), где управление сеансами реализовано на уровне архитектуры системы.