Безопасная остановка 1С: от клиента до сервера и СУБД
Содержание
Выключить 1С правильно значит закрыть клиентов, остановить сервер 1С:Предприятия и только потом СУБД. Порядок строго такой: пользователи, блокировка новых входов, фоновые задания, сервер 1С, база данных. Обратный порядок включения: СУБД, сервер, клиенты.
Типичная ситуация: в пятницу вечером админ видит, что на сервере нужно поставить обновления Windows. Он жмёт «Перезагрузить», а в базе в этот момент закрывается месяц и идёт массовое проведение документов. Утром половина документов не проведена, у кого-то «зависла» блокировка. Ниже разобрано, как выключать 1С, чтобы такого не было: для файловой базы, для клиент-серверной и для аварийных случаев.
Перед плановой остановкой сделайте резервную копию базы. Это занимает 10-30 минут, а восстановление после сбоя без копии может занять дни.
Подготовка: что проверить до выключения
Прежде чем что-то останавливать, выясните, кто и что сейчас работает. Три минуты на проверку сэкономят часы разбирательств.
- Предупредите пользователей. Напишите в рабочий чат или отправьте письмо минимум за 15-30 минут. Назовите время остановки и срок возврата.
- Посмотрите активные сеансы. В клиент-серверном варианте — в консоли администрирования серверов, раздел «Сеансы». В файловом режиме и в целом по базе — через список активных пользователей: в Конфигураторе меню «Администрирование», пункт со списком пользователей и сеансов.
- Найдите фоновые задания. Выгрузка обмена, расчёт себестоимости, загрузка банковской выписки по расписанию — всё это работает без участия человека.
- Сделайте копию. Выгрузка в
.dtчерез Конфигуратор или копия каталога файловой базы, бэкап средствами СУБД для клиент-серверной.
💡 Если остановка плановая, назначьте окно в нерабочее время и один раз опубликуйте его в регламенте. Пользователи привыкают, и звонков «а почему всё закрылось» становится меньше.
Как закрыть клиент 1С и завершить работу пользователей
Обычный пользователь закрывает 1С крестиком окна программы или через меню «Файл» → «Выход». Если в окне есть несохранённые документы, программа спросит, что с ними делать. Это нормальный путь, на нём данные не теряются.
Сложнее, когда нужно закрыть всех сразу. Есть три способа.
| Способ | Когда подходит | Риск |
|---|---|---|
| Попросить пользователей выйти | Мало людей, есть время | Кто-то забыл или ушёл домой с открытой 1С |
| Блокировка начала сеансов + завершение сеансов в консоли | Клиент-серверная база, нужен контроль | Несохранённые данные пользователя пропадут |
| Завершение работы пользователей средствами самой конфигурации | Типовые конфигурации с подсистемой администрирования | Нужны права администратора |
Блокировка входа новых пользователей
Пока вы закрываете старые сеансы, кто-то откроет новые. Чтобы этого не случилось, включите блокировку.
В консоли администрирования серверов 1С откройте нужную информационную базу, перейдите в её свойства и поставьте флажок блокировки начала сеансов. Заполните:
- начало и конец блокировки — период, на который закрыт вход;
- сообщение — текст, который увидит пользователь при попытке войти;
- код разрешения — слово, с которым администратор всё же сможет зайти (параметр
/UCв строке запуска клиента).
Для файловой базы похожая блокировка настраивается в Конфигураторе: «Администрирование» → «Блокировка начала сеансов», если такой пункт есть в вашей версии платформы. На практике при файловом режиме проще убедиться, что все вышли, и посмотреть, нет ли файла блокировки в каталоге базы.
Завершение сеансов
В консоли в разделе «Сеансы» выделите нужные строки и выберите завершение сеанса. Пользователь получит сообщение и потеряет всё несохранённое. Поэтому предупреждение из подготовки нужно не для вежливости.
Тот же результат даёт утилита rac, которая идёт в комплекте с сервером 1С:
rac session list --cluster=<идентификатор_кластера>
rac session terminate --cluster=<идентификатор_кластера> --session=<идентификатор_сеанса>
Идентификаторы кластера и сеанса rac показывает в своём выводе (rac cluster list покажет кластер). Параметры подключения — адрес и порт агента — зависят от вашей установки.
Остановка сервера 1С:Предприятия
Это служба Windows или Linux-демон «Агент сервера». Остановка сервера обрывает все сеансы в кластере, в том числе фоновые. Поэтому делайте её только после блокировки входа и завершения сеансов.
Windows
- Откройте
services.msc. - Найдите службу «Агент сервера 1С:Предприятия 8.3» (в названии есть разрядность, например x86-64).
- Нажмите «Остановить» и дождитесь статуса «Остановлена».
Из командной строки, от имени администратора:
net stop "1C:Enterprise 8.3 Server Agent (x86-64)"
Точное имя службы смотрите в services.msc: оно зависит от версии платформы и разрядности.
Linux
Название службы зависит от того, как ставили платформу. Часто это srv1cv83 (иногда с номером релиза в имени):
systemctl stop srv1cv83
systemctl status srv1cv83
Что остаётся после остановки
После нормальной остановки процессы ragent, rmngr и rphost пропадают. Если остался rphost, значит сеанс завис. Посмотрите в диспетчере задач (Windows) или командой ps aux | grep rphost (Linux). Принудительно убивайте процесс только когда служба уже остановлена, а пользователей нет.
Выключение СУБД после остановки сервера 1С
Базу данных гасят последней. Если остановить СУБД раньше, сервер 1С потеряет связь с хранилищем посреди записи. Результат: ошибки при следующем запуске, а иногда и повреждение данных.
PostgreSQL
На Linux:
systemctl stop postgresql
Название службы зависит от дистрибутива и версии. Для сборок 1С она бывает с номером версии в имени, посмотрите systemctl list-units | grep postgres. При штатной остановке PostgreSQL сам дожидается завершения транзакций и записывает всё на диск. Режим «быстрой» остановки (pg_ctl stop -m fast) отключает клиентов принудительно, но целостность сохраняет. Режим immediate — это фактически сбой питания, его применяйте как последнюю меру.
Microsoft SQL Server
Остановите службу SQL Server в services.msc или через SQL Server Configuration Manager. Служба ждёт завершения текущих транзакций. Если нужно сначала освободить базу, в SQL Server Management Studio можно перевести её в режим одного пользователя, но для остановки всей службы обычно этого не требуется.
💡 Если сервер 1С и СУБД стоят на одной машине и вы просто перезагружаете её, достаточно остановить службу сервера 1С, а СУБД система остановит сама при выключении. Но «сама» значит по таймауту. Для больших баз он может не хватить, поэтому на продуктиве лучше остановить СУБД руками.
Фоновые и регламентные задания: как не потерять работу
Фоновое задание — это процесс, который 1С выполняет без окна на экране. Примеры: обмен с интернет-магазином раз в 10 минут, закрытие месяца в фоне, индексация полнотекстового поиска, загрузка курсов валют.
Если остановить сервер посреди такого задания, оно оборвётся. Часть данных запишется, часть нет. Поэтому до остановки:
- В консоли администрирования зайдите в раздел «Фоновые задания» и посмотрите активные.
- Дождитесь завершения тяжёлых заданий. Закрытие месяца и пересчёт итогов лучше не обрывать.
- Запретите запуск новых регламентных заданий. В свойствах информационной базы есть флажок блокировки регламентных заданий.
Через rac одной командой блокируются и сеансы, и регламентные задания:
rac infobase update --cluster=<кластер> --infobase=<база> ^
--infobase-user=<админ> --infobase-pwd=<пароль> ^
--sessions-deny=on --scheduled-jobs-deny=on ^
--denied-message="Плановые работы, вернёмся в 22:00" ^
--permission-code=<код>
После окончания работ те же параметры ставятся в off. Забытая блокировка — частая причина звонков «никто не может войти в базу».
Не оставляйте пароль администратора открытым текстом в скриптах, которые лежат в общем доступе. Храните их в каталоге с ограниченными правами.
Если 1С завис: аварийное выключение и восстановление
Бывает, что сеанс не завершается, служба не останавливается, а консоль не отвечает. Действуйте от мягкого к жёсткому.
rac session terminate. Если не помогло, закройте процесс клиента 1cv8 в диспетчере задач на машине пользователя.rphost и завершите процесс, после чего остановите службу ещё раз.Что проверить после аварийного завершения
- Запустите СУБД и сервер 1С в обычном порядке, СУБД первой.
- Откройте базу и пройдитесь по свежим данным. Проверьте документы за последние часы: проведены ли, нет ли пустых строк, совпадают ли итоги.
- Для файловой базы выполните в Конфигураторе тестирование и исправление: «Администрирование» → «Тестирование и исправление». Сначала только проверка, без исправлений, чтобы увидеть масштаб проблемы.
- Для клиент-серверной базы проверьте журнал событий СУБД и журнал регистрации 1С на ошибки около времени сбоя.
- Если база повреждена — восстановление из последней копии. Данные между копией и сбоем придётся ввести заново, поэтому частота бэкапов важнее любых «лечилок».
Файловую базу при аварийном выключении повреждает чаще: нет транзакционной защиты сервера СУБД. Копируйте её каталог регулярно, пока никто не работает.
Остался файл блокировки
После аварийного завершения в каталоге файловой базы может остаться файл блокировки 1Cv8.1CL. Пока в базе нет активных сеансов, его можно удалить, и база снова откроется. Но сначала убедитесь, что 1С действительно нигде не запущена: на других компьютерах и в сеансах терминального сервера.
Автоматизация: как остановить 1С по расписанию
Если остановка повторяется (ночное обслуживание, бэкап, перезагрузка раз в неделю), выделите один скрипт. Он делает всё в нужном порядке и не зависит от того, что админ вспомнил.
Скелет скрипта для Windows:
@echo off
rem 1. Блокируем вход и регламентные задания
rac infobase update --cluster=<кластер> --infobase=<база> ^
--infobase-user=<админ> --infobase-pwd=<пароль> ^
--sessions-deny=on --scheduled-jobs-deny=on --permission-code=<код>
rem 2. Ждём, пока пользователи закончат работу
timeout /t 600
rem 3. Останавливаем сервер 1С
net stop "1C:Enterprise 8.3 Server Agent (x86-64)"
rem 4. Останавливаем СУБД
net stop "<имя службы SQL Server>"
Для Linux то же самое пишется на bash с systemctl stop. Запуск по расписанию: «Планировщик заданий» в Windows или cron/таймеры systemd в Linux.
Что добавить в скрипт, чтобы он не навредил:
- 📋 Запись в журнал. Пишите время каждого шага в текстовый файл: потом проще понять, где сломалось.
- 🔔 Уведомление. Письмо или сообщение в мессенджер, если какой-то шаг завершился ошибкой.
- ⏱ Проверка перед остановкой. Скрипт должен смотреть на фоновые задания и не гасить сервер, пока идёт закрытие месяца.
- 🔁 Обратный скрипт запуска. СУБД, потом сервер 1С, потом снятие блокировок. Забытая блокировка входа сводит пользу автоматизации к нулю.
Типичные ошибки при остановке 1С
- Выключили СУБД раньше сервера 1С. Сервер теряет хранилище на лету. Всегда в порядке «сервер, потом СУБД».
- Не сняли блокировку после работ. Пользователи видят «Работа с информационной базой заблокирована». Проверьте свойства базы и параметр
--sessions-deny. - Убили
rphost, не остановив службу. Агент сервера запустит его заново, и вы получите то же зависание. - Перезагрузили сервер кнопкой питания. Для клиент-серверной базы СУБД обычно переживёт, для файловой — не гарантировано.
Частые вопросы
Можно ли просто закрыть окно 1С, если работаю один?
1cv8 пропал из диспетчера задач.Нужно ли останавливать сервер 1С при перезагрузке Windows?
Что будет с несохранённым документом при принудительном завершении сеанса?
Как понять, что база действительно остановлена?
ragent, rmngr, rphost.