Безопасная остановка 1С: от клиента до сервера и СУБД

· 9 мин

Содержание

Выключить 1С правильно значит закрыть клиентов, остановить сервер 1С:Предприятия и только потом СУБД. Порядок строго такой: пользователи, блокировка новых входов, фоновые задания, сервер 1С, база данных. Обратный порядок включения: СУБД, сервер, клиенты.

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

Перед плановой остановкой сделайте резервную копию базы. Это занимает 10-30 минут, а восстановление после сбоя без копии может занять дни.

Подготовка: что проверить до выключения

Прежде чем что-то останавливать, выясните, кто и что сейчас работает. Три минуты на проверку сэкономят часы разбирательств.

  1. Предупредите пользователей. Напишите в рабочий чат или отправьте письмо минимум за 15-30 минут. Назовите время остановки и срок возврата.
  2. Посмотрите активные сеансы. В клиент-серверном варианте — в консоли администрирования серверов, раздел «Сеансы». В файловом режиме и в целом по базе — через список активных пользователей: в Конфигураторе меню «Администрирование», пункт со списком пользователей и сеансов.
  3. Найдите фоновые задания. Выгрузка обмена, расчёт себестоимости, загрузка банковской выписки по расписанию — всё это работает без участия человека.
  4. Сделайте копию. Выгрузка в .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

  1. Откройте services.msc.
  2. Найдите службу «Агент сервера 1С:Предприятия 8.3» (в названии есть разрядность, например x86-64).
  3. Нажмите «Остановить» и дождитесь статуса «Остановлена».

Из командной строки, от имени администратора:

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 минут, закрытие месяца в фоне, индексация полнотекстового поиска, загрузка курсов валют.

Если остановить сервер посреди такого задания, оно оборвётся. Часть данных запишется, часть нет. Поэтому до остановки:

  1. В консоли администрирования зайдите в раздел «Фоновые задания» и посмотрите активные.
  2. Дождитесь завершения тяжёлых заданий. Закрытие месяца и пересчёт итогов лучше не обрывать.
  3. Запретите запуск новых регламентных заданий. В свойствах информационной базы есть флажок блокировки регламентных заданий.

Через 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С
Выполнено: 0 / 6

Если 1С завис: аварийное выключение и восстановление

Бывает, что сеанс не завершается, служба не останавливается, а консоль не отвечает. Действуйте от мягкого к жёсткому.

Что именно не отвечает?

Что проверить после аварийного завершения

  1. Запустите СУБД и сервер 1С в обычном порядке, СУБД первой.
  2. Откройте базу и пройдитесь по свежим данным. Проверьте документы за последние часы: проведены ли, нет ли пустых строк, совпадают ли итоги.
  3. Для файловой базы выполните в Конфигураторе тестирование и исправление: «Администрирование» → «Тестирование и исправление». Сначала только проверка, без исправлений, чтобы увидеть масштаб проблемы.
  4. Для клиент-серверной базы проверьте журнал событий СУБД и журнал регистрации 1С на ошибки около времени сбоя.
  5. Если база повреждена — восстановление из последней копии. Данные между копией и сбоем придётся ввести заново, поэтому частота бэкапов важнее любых «лечилок».

Файловую базу при аварийном выключении повреждает чаще: нет транзакционной защиты сервера СУБД. Копируйте её каталог регулярно, пока никто не работает.

Остался файл блокировки

После аварийного завершения в каталоге файловой базы может остаться файл блокировки 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.
Как включить обратно после выключения?
В обратном порядке: запустить СУБД, затем службу сервера 1С, затем снять блокировку сеансов и регламентных заданий, после чего сообщить пользователям.