Остановка агента сервера 1С:Предприятия без потери данных и зависаний

· 9 мин

Содержание

Чтобы остановить службу 1С сервера, откройте services.msc, найдите службу «Агент сервера 1С:Предприятия 8.3» (в английской локали — 1C:Enterprise 8.3 Server Agent) и нажмите «Остановить». Из командной строки то же самое делает net stop или sc stop с именем службы, в PowerShell — Stop-Service. Вместе с агентом (ragent.exe) штатно завершаются менеджер кластера (rmngr.exe) и все рабочие процессы (rphost.exe).

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

Что сделать перед остановкой сервера 1С

Служба агента — сердце клиент-серверной 1С. Клиент обращается к агенту на порт 1540, затем к менеджеру кластера на 1541 и к рабочим процессам из диапазона портов рабочего сервера. Нет агента — нет ни одного подключения.

Перед остановкой пройдите короткий список:

  • 👥 Кто сейчас работает. Откройте консоль «Администрирование серверов 1С Предприятия» и посмотрите узел «Сеансы» у каждой базы.
  • 📢 Предупреждение. Напишите пользователям время отключения хотя бы за 10–15 минут.
  • 🔒 Блокировка новых входов. Включите блокировку начала сеансов в свойствах базы (как — в разделе про консоль и rac).
  • ⏸ Регламентные задания. Если идёт обмен или закрытие месяца , дождитесь окончания. Обрыв посреди обмена даёт повторную выгрузку и «зависшие» сообщения.
  • 💾 Копия. Если после остановки планируете обновление платформы или работу с файлами кластера, сделайте резервную копию баз средствами СУБД.

Если на сервере несколько версий платформы, служб тоже несколько: у каждой свой агент со своим портом. Убедитесь, что останавливаете нужную, по пути к ragent.exe в свойствах службы.

Остановка службы 1С через оснастку «Службы» Windows

Самый наглядный способ. Подходит, когда вы зашли на сервер по RDP и нужно разовое действие.

  1. Нажмите Win + R, введите services.msc, нажмите Enter.
  2. Отсортируйте список по имени и найдите службу агента. Для 64-битного сервера в названии есть пометка (x86-64).
  3. Откройте двойным щелчком. На вкладке «Общие» в поле «Исполняемый файл» видно путь, например C:\Program Files\1cv8\8.3.24.1548\bin\ragent.exe. По номеру в пути поймёте, какая это версия.
  4. Нажмите «Остановить». Состояние сменится на «Остановлена» за несколько секунд — до минуты при большом числе сеансов.
  5. Если сервер нужно оставить выключенным надолго (перенос, замена платформы), смените «Тип запуска» на «Вручную» или «Отключена». Иначе служба поднимется после перезагрузки Windows.

Рядом может быть вторая служба — сервер администрирования ras.exe (в названии обычно есть слово Remote Server или «сервер администрирования»). Её останавливать не обязательно. Но если её не остановить, она будет пытаться достучаться до агента и писать ошибки в журнал.

Кнопка «Перезапустить» — это остановка и запуск подряд. Для пользователей она так же разрывает сеансы, как и обычная остановка.

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

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

sc query state= all | findstr /i "1C"

Команда покажет строки SERVICE_NAME и DISPLAY_NAME. Для команд нужно именно SERVICE_NAME. Пробел после state= обязателен — такой синтаксис у sc.

Дальше три равноценных варианта. Командную строку запускайте от имени администратора.

net stop "1C:Enterprise 8.3 Server Agent (x86-64)"
sc stop "1C:Enterprise 8.3 Server Agent (x86-64)"
Get-Service *1C* | Format-Table Name, DisplayName, Status
Stop-Service -Name "1C:Enterprise 8.3 Server Agent (x86-64)"

Имя в примерах — типовое для 64-битной установки. Подставьте своё из вывода sc query.

КомандаЖдёт остановкиОсобенность
net stopДаПишет понятное «Служба успешно остановлена», удобна в bat-файлах
sc stopНетОтправляет сигнал и сразу возвращает управление; статус проверяйте через sc query
Stop-ServiceДаУдобно для удалённой работы через PowerShell Remoting

Для удалённого сервера без входа по RDP подойдёт sc \\SRV-1C stop "имя службы", если у вашей учётной записи есть права администратора на том сервере.

Готовый bat-файл с ожиданием и проверкой результата:

@echo off
set SVC=1C:Enterprise 8.3 Server Agent (x86-64)
net stop "%SVC%"
sc query "%SVC%" | findstr /i "STOPPED" >nul
if errorlevel 1 (
  echo Служба не остановилась, проверьте процессы ragent/rmngr/rphost
  exit /b 1
)
echo Служба 1С остановлена

Сеансы и блокировка: консоль кластера и утилита rac

Сама консоль «Администрирование серверов 1С Предприятия» службу не останавливает. Зато в ней готовят мягкую остановку: выгоняют пользователей и закрывают вход.

Блокировка через консоль

  1. Откройте консоль, разверните сервер, затем кластер и узел «Информационные базы».
  2. Правой кнопкой по базе → «Свойства». Нужны логин и пароль администратора этой базы.
  3. Отметьте «Блокировка начала сеансов включена», задайте «Начало» и «Конец» блокировки, текст сообщения и «Код разрешения».
  4. Отдельно включите «Блокировка регламентных заданий включена», чтобы фоновые задания не стартовали заново.
  5. В узле «Сеансы» выделите оставшиеся сеансы и удалите их через контекстное меню.

Код разрешения позволяет администратору зайти в заблокированную базу: в строке запуска добавляют параметр /UC с этим кодом.

То же самое через rac

Утилита rac лежит в папке bin платформы и работает не напрямую с агентом, а через сервер администрирования ras. Если службы ras нет, её запускают вручную:

"C:\Program Files\1cv8\8.3.24.1548\bin\ras.exe" cluster --port=1545 localhost:1540

Дальше получаем идентификатор кластера, список баз и сеансов:

rac cluster list
rac infobase summary list --cluster=<uuid-кластера>
rac session list --cluster=<uuid-кластера>

Завершение одного сеанса:

rac session terminate --cluster=<uuid-кластера> --session=<uuid-сеанса>

Если на кластере задан администратор, к каждой команде добавьте --cluster-user и --cluster-pwd. Блокировку входа в базу ставит rac infobase update с параметрами --sessions-deny=on и --scheduled-jobs-deny=on — точный список ключей для вашей версии смотрите в rac help infobase.

На Linux та же утилита rac работает одинаково. Отличается только способ остановки самой службы — через systemctl. Имя юнита содержит номер версии платформы, поэтому найдите его командой systemctl list-units | grep 1cv8.

Принудительное завершение ragent, rmngr и rphost

Иногда служба висит в состоянии «Остановка» минутами. Обычно это рабочий процесс, который ждёт ответа СУБД или дописывает большой журнал. Сначала подождите 3–5 минут. Принудительное завершение — только когда ждать бессмысленно.

Принудительное убийство rphost посреди записи может оставить незавершённую транзакцию на стороне СУБД. Делайте это только после того, как все пользователи вышли.

Через Диспетчер задач:

  1. Откройте Диспетчер задач → вкладка «Подробности».
  2. Отсортируйте по имени. Найдите ragent.exe, rmngr.exe и все rphost.exe.
  3. Завершайте в порядке: rphost.exe → rmngr.exe → ragent.exe. Кнопка «Снять задачу».
  4. Проверьте в services.msc, что служба перешла в «Остановлена».

Через командную строку, если служба зависла в остановке:

sc queryex "1C:Enterprise 8.3 Server Agent (x86-64)"
taskkill /PID 4312 /F
taskkill /IM rphost.exe /F
taskkill /IM rmngr.exe /F

sc queryex покажет PID процесса службы — его и передайте в taskkill. Число 4312 в примере условное.

Если на сервере стоят две версии платформы, taskkill /IM rphost.exe завершит рабочие процессы обеих. В таком случае убивайте по PID, сверяя путь к файлу в Диспетчере задач (столбец «Путь к образу» включается правой кнопкой по заголовку).

Остановка службы 1С по расписанию

Регулярное окно обслуживания — например, ночная перезагрузка для очистки памяти рабочих процессов или перед резервным копированием файлов — удобно собрать из двух частей.

1. Блокировка входа заранее. В свойствах базы задайте «Начало» и «Конец» блокировки начала сеансов. Пользователи увидят сообщение, а новые входы закроются сами. Блокировка включается флажком и действует в заданном интервале, поэтому её можно поставить один раз на конкретную дату.

2. Задание Планировщика Windows. Положите bat-файл из раздела выше, например, в C:\Scripts\stop1c.bat и создайте задание:

schtasks /create /tn "Stop 1C Server" /tr "C:\Scripts\stop1c.bat" /sc daily /st 03:00 /ru SYSTEM

Для обратного запуска сделайте парный start1c.bat с net start и отдельное задание на 03:30.

Пример ночного окна:

ВремяДействие
02:45Начало блокировки сеансов и регламентных заданий
03:00net stop службы агента
03:05–03:25Резервное копирование, обслуживание СУБД
03:30net start службы, снятие блокировки по сроку «Конец»

Для ежедневной профилактики полностью гасить службу не обязательно. В свойствах рабочего сервера есть ограничение памяти рабочих процессов: при его превышении кластер сам перезапускает процесс без ручной остановки.

Почему служба 1С не останавливается или не запускается снова

Большая часть проблем видна в журнале Windows: eventvwr.msc → «Журналы Windows» → «Приложение», фильтр по источнику с «1C». Ниже — типичные симптомы и что проверить.

Диагностика: выберите симптом

Кэш сеансов в srvinfo

После аварийной остановки в папке кластера иногда остаются повреждённые служебные данные. Типовой путь — C:\Program Files\1cv8\srvinfo\reg_1541. Внутри лежат папки snccntx… с сеансовыми данными. При полностью остановленной службе их удаляют, после чего агент создаёт их заново.

Остальное в reg_1541 не трогайте: там файл 1CV8Clst.lst с реестром кластера — списком баз и настроек. Перед любыми действиями скопируйте папку srvinfo целиком в сторону.

Если служба не стартует из-за прав, откройте её свойства → вкладка «Вход в систему». Учётная запись (по умолчанию USR1CV8) должна иметь полный доступ к srvinfo и право «Вход в качестве службы».

Как проверить, что сервер поднялся после запуска

После net start убедитесь, что всё работает, до того как снимать блокировку:

  1. В services.msc служба в состоянии «Выполняется».
  2. В Диспетчере задач есть ragent.exe, rmngr.exe и хотя бы один rphost.exe.
  3. Команда netstat -ano | findstr :1540 показывает порт в состоянии LISTENING.
  4. В консоли кластера открываются список баз и узел «Рабочие процессы».
  5. Тестовый вход в одну базу проходит без ошибок.

Если пункт 4 не проходит, а служба запущена — проверьте, не закрыт ли в брандмауэре порт 1541 и диапазон портов рабочих процессов.

Частые вопросы

Потеряются ли данные базы при остановке службы 1С?
Сохранённые данные лежат в СУБД и не пострадают. Пропадут только несохранённые изменения в открытых формах, а незавершённые транзакции откатятся.
Нужно ли останавливать SQL Server вместе с 1С?
Нет. СУБД — отдельная служба. Для обновления платформы 1С её не трогают; останавливают только при обслуживании самой СУБД.
Что делать, если пароль администратора кластера забыт?
Остановите службу агента и восстановите файл 1CV8Clst.lst из резервной копии или обратитесь к администратору сервера, который настраивал кластер. Пересоздавать кластер не нужно.
Можно ли остановить одну базу, не останавливая весь сервер?
Да. Включите для неё блокировку начала сеансов и удалите её сеансы в консоли. Остальные базы кластера продолжат работать.
Зачем ставить тип запуска «Вручную» при обновлении платформы?
Чтобы старая версия агента не поднялась после перезагрузки и не заняла порт 1540, пока вы регистрируете службу новой версии.