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

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

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

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

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

Проанализируем структуру этого файла. Это обычный текстовый файл в кодировке UTF-8, который должен называться 1Cv8.cdn. В нем можно прописать параметры, которые платформа считает автоматически:


{"Б",
{"20231027100000",
"20231027120000",
"База закрыта на техническое обслуживание. Просьба выйти из программы.",
"КодРазрешения",
""
}
}

Разберем, что означают эти параметры по шагам:

  1. Время начала и окончания блокировки: Формат ГГГГММДДЧЧММСС.
  2. Текст сообщения: Пользователи увидят это окно перед тем, как программа закроется.
  3. Код разрешения: Позволяет администратору зайти в заблокированную базу, запустив 1С с параметром /UC КодРазрешения.

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

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

В современных конфигурациях (таких как «Бухгалтерия предприятия 3.0» или «Управление торговлей 11») этот функционал уже встроен в интерфейс. Нам не нужно создавать файлы вручную.

Выполним следующие действия:

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

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

Метод 3. Завершение сеансов через терминальный сервер (RDP)

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

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

  1. Откроем Диспетчер задач на сервере и перейдем на вкладку Подробности (Details).
  2. Нажмем правой кнопкой на заголовки колонок и выберем пункт Выбрать колонки.
  3. Установим флажок на Командная строка (Command Line).
  4. Теперь в списке процессов 1cv8.exe мы увидим полный путь к базе. Это позволит нам не трогать тех, кто работает в других базах.
  5. Выделим нужный процесс и нажмем Снять задачу.

Внимание: Принудительное «убийство» процесса (Kill process) — это крайняя мера. Для файловой базы это чревато повреждением структуры файла 1Cv8.1CD. После таких действий настоятельно рекомендуется запустить утилиту chdbfl.exe для проверки целостности данных.

Метод 4. Сетевой разрыв соединений (Openfiles)

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

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

openfiles /query

Если мы видим в списке файл 1Cv8.1CD, мы можем разорвать соединение по его ID:

openfiles /disconnect /id [ID_сессии]

Также можно использовать команду net session, чтобы увидеть все компьютеры, подключенные к серверу, и принудительно отключить конкретный компьютер:

net session \\ИмяКомпьютера /delete /y

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

Метод «Переименование папки» (Быстрый сброс всех хвостов)

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

Рассмотрим алгоритм быстрого сброса:

  1. Убедимся, что визуально в 1С никого нет.
  2. Попробуем переименовать папку, в которой лежит база (например, из Accounting в Accounting_Temp).
  3. Если операционная система позволяет переименовать папку — значит, все дескрипторы файлов закрыты.
  4. Если ОС пишет «Папка занята другим процессом» — используйте утилиту Unlocker или системный Resource Monitor, чтобы найти процесс, который держит папку, и завершить его.
  5. После успешного переименования верните папке прежнее имя. Все «фантомные» связи будут разорваны.

Резюме и рекомендации

Мы рассмотрели различные подходы к отключению пользователей. Подведем итог: если время терпит, всегда используйте метод с файлом блокировки .cdn или штатную обработку в интерфейсе 1С. Это гарантирует сохранность данных.

Если же база «зависла» или требуется немедленное вмешательство, используйте Диспетчер задач (для RDP) или команду net session (для сетевых шар). Помните, что после каждого принудительного завершения работы файловой базы крайне желательно делать резервную копию и проверять базу утилитой chdbfl.exe, так как файловый движок 1С чувствителен к некорректным завершениям транзакций.

← На главную