Завершение работы 1С:Предприятия без потери данных и зависших сеансов

· 9 мин

Содержание

Закрыть 1С:Предприятие 8.3 правильно — значит выйти через главное меню (☰ → Файл → Выход), крестик в правом верхнем углу или Alt+F4. Программа спросит, сохранить ли изменённые документы, завершит сеанс на сервере и освободит лицензию. Снимать процесс через диспетчер задач — крайняя мера, а не обычный способ.

Если же нужно закрыть 1С у других пользователей — перед обновлением, выгрузкой базы или ночным регламентом, — работают другие инструменты: блокировка сеансов, консоль кластера, утилита rac и скрипты. Ниже все способы по порядку: от самого мягкого к самому жёсткому.

СпособКогда подходитРиск для данных
Выход из меню, крестик, Alt+F4обычное завершение работынет, программа спросит про несохранённое
Блокировка работы пользователей в конфигурацииобслуживание базы с предупреждениемминимальный: людей предупреждают заранее
Удаление сеанса в консоли кластера или через racнужно срочно освободить базу или лицензиюнесохранённые изменения пропадут
taskkill /F, диспетчер задачпрограмма зависла и не отвечаетнесохранённые изменения пропадут
Перезапуск rphost или службы агентазавис весь сервер 1Собрываются сеансы всех пользователей

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

Для пользователя есть три равноценных способа закрыть 1С Предприятие:

  1. Главное меню. Кнопка с тремя полосками в левом верхнем углу окна, далее Файл → Выход.
  2. Крестик окна. Кнопка закрытия в правом верхнем углу главного окна программы.
  3. Клавиши Alt+F4, когда активно главное окно 1С.

Во всех трёх случаях платформа делает одно и то же:

  • ✅ проверяет открытые формы с несохранёнными изменениями и предлагает их записать;
  • ✅ выполняет обработчики завершения конфигурации (например, сохраняет настройки форм пользователя);
  • ✅ сообщает серверу, что сеанс закрыт, — лицензия освобождается сразу.

Не путайте закрытие программы с закрытием отдельной формы. Esc и Ctrl+F4 закрывают только активную вкладку или окно документа, а сама 1С остаётся запущенной.

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

Конфигуратор

В режиме Конфигуратора выход такой же: Файл → Выход или крестик. Если в конфигурации есть несохранённые изменения, Конфигуратор спросит, сохранять ли их. Если идёт отладка, сначала остановите её — иначе закрытие прервёт отлаживаемый сеанс.

Закрытие из командной строки и пакетного режима

Командная строка нужна, когда 1С надо закрыть без участия пользователя: в скрипте обслуживания, на сервере терминалов, на кассе.

Мягкое закрытие через taskkill

Команда без ключа /F отправляет окну обычный сигнал закрытия — как будто пользователь нажал крестик:

taskkill /IM 1cv8c.exe

Имена процессов, которые встречаются чаще всего:

ПроцессЧто это
1cv8c.exeтонкий клиент
1cv8.exeтолстый клиент и Конфигуратор
1cestart.exeстартер — окно выбора базы

Мягкое закрытие сработает, только если в программе нет вопросов к пользователю. Если открыт изменённый документ, 1С покажет диалог «Сохранить?» и будет ждать ответа.

Принудительное закрытие

С ключом /F процесс снимается сразу, без вопросов:

taskkill /IM 1cv8c.exe /F

Несохранённые данные в открытых формах пропадут. Проведённые и записанные документы в базе останутся — транзакция, которая не успела завершиться, просто откатится. Но всё, что пользователь набрал и не записал, будет потеряно.

Практичный вариант для скрипта — сначала попросить, потом заставить:

@echo off
rem Сначала мягко просим закрыть все тонкие клиенты
taskkill /IM 1cv8c.exe
rem Даём 60 секунд на сохранение
timeout /t 60 /nobreak
rem Добиваем тех, кто не закрылся
taskkill /IM 1cv8c.exe /F

На сервере терминалов эта команда закроет 1С у всех пользователей сразу. Чтобы закрыть программу только у одного, добавьте фильтр по имени: taskkill /IM 1cv8c.exe /FI "USERNAME eq ivanov".

Пакетный режим закрывается сам

Если 1С запускается из скрипта для обслуживания — выгрузки базы в .dt, обновления конфигурации, — используйте пакетный режим Конфигуратора. В нём программа выполняет команду и сама завершает работу, закрывать ничего не надо:

"C:\Program Files\1cv8\<версия>\bin\1cv8.exe" DESIGNER /F "D:\Base\Buh" /N "Администратор" /P "пароль" /DumpIB "D:\Backup\buh.dt" /Out "D:\Backup\log.txt"

Результат смотрите в файле из ключа /Out и в коде возврата: 0 — успех.

Отключение пользователей в консоли кластера

В клиент-серверном варианте каждый пользователь — это сеанс на сервере 1С. Закрыть его можно, не подходя к компьютеру сотрудника.

Порядок действий

  1. Откройте оснастку «Администрирование серверов 1С Предприятия».
  2. Разверните: центральный сервер → Кластеры → нужный кластер → Информационные базы → ваша база → Сеансы.
  3. В списке видны пользователь, компьютер, приложение и время начала сеанса.
  4. Выделите сеанс (или несколько через Shift/Ctrl), правой кнопкой мыши — Удалить.

У пользователя появится сообщение, что сеанс завершён, и клиент закроется или предложит перезапуск.

Удаление сеанса — то же самое, что принудительное закрытие: несохранённые данные пропадут. Сначала предупредите людей.

Что смотреть в колонке «Приложение»

  • 🖥 «Тонкий клиент», «Толстый клиент», «Веб-клиент» — живые пользователи.
  • 🛠 «Конфигуратор» — разработчик или администратор. Не удаляйте его сеанс, не спросив: можно оборвать сохранение конфигурации.
  • ⚙️ «Фоновое задание» — регламентные задания. Их обрывать без причины не стоит.
  • 🔌 «COM-соединение», «Веб-сервис» — обмены и интеграции.

Блокировка новых входов

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

  • поставьте флажок «Блокировка начала сеансов включена»;
  • задайте время начала и окончания блокировки;
  • впишите сообщение для пользователей;
  • задайте код разрешения — с ним вы сами сможете войти, указав в строке запуска ключ /UC<код>.

Скрипты и встроенный язык: закрыть 1С программно

Утилита rac

rac — консольная утилита администрирования кластера, лежит в папке bin платформы. Она работает через сервер администрирования ras, который должен быть запущен (по умолчанию порт 1545).

Основные команды:

rem Узнать идентификатор кластера
rac cluster list

rem Список баз и их идентификаторов
rac infobase summary list --cluster=<uuid кластера>

rem Сеансы конкретной базы
rac session list --cluster=<uuid кластера> --infobase=<uuid базы>

rem Завершить один сеанс
rac session terminate --cluster=<uuid кластера> --session=<uuid сеанса>

Если в кластере задан администратор, добавьте --cluster-user и --cluster-pwd. Остальные параметры смотрите в справке rac help session.

Пример на PowerShell, который закрывает в базе только тонкие клиенты и не трогает фоновые задания и Конфигуратор:

$rac = 'C:\Program Files\1cv8\<версия>\bin\rac.exe'
$cl  = '<uuid кластера>'
$ib  = '<uuid базы>'

# Разбираем вывод rac на блоки «сеанс — свойства»
$blocks = (& $rac session list --cluster=$cl --infobase=$ib) -join "`n" -split "`n\s*`n"

foreach ($b in $blocks) {
    if ($b -match 'app-id\s*:\s*1CV8C') {
        $sid = ([regex]::Match($b, 'session\s*:\s*([0-9a-f-]{36})')).Groups[1].Value
        if ($sid) { & $rac session terminate --cluster=$cl --session=$sid }
    }
}

Перед боевым запуском замените строку с terminate на вывод $sid на экран и проверьте, что в список попали именно те сеансы.

Блокировка средствами конфигурации

В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) есть свой механизм: Администрирование → Обслуживание → Блокировка работы пользователей. Он работает и в файловой, и в клиент-серверной базе:

  • пользователи заранее видят предупреждение о скором завершении работы;
  • в назначенное время программа сама закрывается у всех, кроме того, кто ставил блокировку;
  • новые входы запрещены до снятия блокировки.

Этим же механизмом можно управлять из строки запуска: параметр /C"ЗавершитьРаботуПользователей" вместе с кодом /UC включает блокировку и выгоняет пользователей, а /C"РазрешитьРаботуПользователей" снимает её. Это удобно для ночного скрипта обновления.

Метод встроенного языка

Разработчику закрыть 1С из кода позволяет метод ЗавершитьРаботуСистемы(). Он выполняется на клиенте:

&НаКлиенте
Процедура ЗакрытьПрограмму(Команда)
    // Ложь — не задавать пользователю вопрос о завершении
    ЗавершитьРаботуСистемы(Ложь);
КонецПроцедуры

Если передать вторым параметром Истина, программа перезапустится — так делают после обновления конфигурации.

Зависшая 1С и «мёртвые» сеансы

Окно не отвечает

Сначала подождите 2–3 минуты. Длинный отчёт или проведение большого документа выглядят как зависание, но на деле сервер работает. Признак настоящего зависания — процесс 1cv8c.exe не нагружает процессор и не реагирует долгое время.

Дальше по шагам:

  1. Откройте диспетчер задач (Ctrl+Shift+Esc).
  2. На вкладке «Подробности» найдите 1cv8c.exe или 1cv8.exe.
  3. Нажмите «Снять задачу».

Сеанс остался на сервере после снятия процесса

Бывает, что процесс у пользователя снят, а в консоли кластера его сеанс висит. Он держит лицензию и может держать управляемые блокировки данных. Удалите такой сеанс в консоли кластера, как описано выше.

Чтобы такие «хвосты» убирались сами, в Конфигураторе есть параметры информационной базы (Администрирование → Параметры информационной базы): время засыпания пассивного сеанса и время завершения спящего сеанса. Они задаются в секундах. Например, засыпание через 1200 секунд и завершение через 3600 — и брошенный сеанс сам исчезнет примерно через полтора часа.

Завершение рабочего процесса

Если завис не один сеанс, а весь сервер 1С, иногда помогает перезапуск рабочего процесса rphost или службы «Агент сервера 1С:Предприятия».

Остановка rphost или службы оборвёт сеансы всех пользователей, работающих на этом процессе или сервере. Делайте это вне рабочего времени или после предупреждения сотрудников. Не удаляйте при этом файлы кластера и сеансовых данных вручную.

Файловая база

В файловом варианте нет консоли кластера. Закрыть 1С у другого пользователя можно тремя путями:

  • 🗣 попросить его выйти;
  • 🔒 включить блокировку работы пользователей в самой конфигурации;
  • 🖥 снять процесс 1С на его компьютере или на сервере терминалов.

Не удаляйте файлы рядом с базой, чтобы «снять блокировку»: если программа ещё открыта у кого-то, это не поможет и может навредить.

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

Выход из 1С в RDP, RemoteApp и веб-клиенте

Терминальный сервер

Главная ловушка: пользователь закрывает крестиком окно подключения к удалённому рабочему столу, а не окно 1С. Windows-сессия при этом не завершается, а переходит в состояние «Отключено». 1С внутри неё продолжает работать и держит лицензию.

Что делать:

  • 👤 пользователю — сначала закрыть 1С, потом выйти из Windows через «Выйти», а не крестиком подключения;
  • 🛠 администратору — задать лимит для отключённых сессий в групповой политике: Конфигурация компьютера → Административные шаблоны → Компоненты Windows → Службы удаленных рабочих столов → Узел сеансов удаленных рабочих столов → Ограничение сеансов по времени. После лимита Windows сама завершит сессию, а с ней и 1С.

В режиме RemoteApp закрытие окна 1С обычно завершает и удалённое приложение. Если сессия всё же осталась висеть, её видно в диспетчере задач сервера на вкладке «Пользователи».

Веб-клиент

В веб-клиенте закрыть 1С — значит выйти через главное меню программы (Файл → Выход) или закрыть вкладку браузера. При закрытии вкладки браузер просит сервер завершить сеанс, но если связь оборвалась или браузер упал, сеанс останется висеть до срабатывания таймаутов из параметров информационной базы.

Не закрывайте веб-клиент, пока идёт запись документа: после повторного входа проверьте, сохранился ли он.

Что ещё полезно знать

Почему после выхода из 1С лицензия ещё несколько минут занята?
Чаще всего сеанс завершился некорректно: программу сняли процессом, оборвалась сеть или закрыли окно RDP. Удалите сеанс в консоли кластера или дождитесь таймаута спящего сеанса.
Может ли принудительное закрытие 1С повредить базу?
В клиент-серверном варианте незавершённая транзакция откатывается, база остаётся целой. В файловом варианте риск выше, особенно при сбое питания или сети во время записи. Если после сбоя база ведёт себя странно, сделайте копию и запустите тестирование и исправление.
Как узнать, кто сейчас работает в базе?
В типовых конфигурациях на БСП — список активных пользователей в разделе Администрирование. В клиент-серверной базе полную картину даёт список сеансов в консоли кластера или команда rac session list.
Можно ли закрыть 1С у пользователя, не потеряв его открытый документ?
Только если он сам его запишет. Поэтому блокировка с предупреждением за 5–10 минут лучше мгновенного удаления сеанса.