Сервер 1С:Предприятия в роли службы: права, регистрация, автоперезапуск

· 9 мин

Содержание

Как служба Windows запускается не клиент 1С, а агент сервера 1С:Предприятия — процесс ragent.exe. Проще всего получить службу при установке платформы: в установщике отметить компонент «Сервер 1С:Предприятия 8» и флажок «Установить 1С:Предприятие 8 как сервис Windows ». Если сервер уже стоит, службу регистрируют командой ragent.exe -instsrvc или через sc create.

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

СпособКогда подходитЧто учесть
Установщик платформыНовый сервер, стандартные портыУчётная запись USR1CV8 создаётся сама
ragent.exe -instsrvcПеререгистрация после обновления, своя учётная записьЗапускать из каталога bin нужной версии
sc createНестандартные порты, второй экземпляр, тонкая настройкаАккуратно с кавычками и пробелами после =

1. Учётная запись службы и права доступа

Агент сервера не стоит запускать от «Локальной системы» или от доменного администратора. Нужна отдельная учётная запись с минимальными правами. Установщик по умолчанию создаёт локального пользователя USR1CV8 — его и используйте, если нет причин иначе.

Своя учётная запись нужна, когда сервер 1С ходит в сеть: выгружает файлы в общую папку, читает каталог обмена, работает с SQL через проверку подлинности Windows. Тогда заводят доменного пользователя, например DOMAIN\svc-1c.

Что должно быть у учётной записи:

  • 🔑 право «Вход в качестве службы»: secpol.msc → Локальные политики → Назначение прав пользователя;
  • 📁 полный доступ к каталогу кластера srvinfo (по умолчанию C:\Program Files\1cv8\srvinfo);
  • 📂 чтение и выполнение для каталога платформы C:\Program Files\1cv8\<версия>\bin;
  • 📊 членство в группе «Пользователи журналов производительности» — без него сервер не может читать счётчики производительности;
  • 🌐 права на сетевые папки, куда база пишет выгрузки и обмены.

Каталог srvinfo лучше вынести на отдельный быстрый диск, например D:\srvinfo. Там лежат реестр кластера, сеансовые данные и кеш — при росте баз он занимает гигабайты.

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

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

2. Установка службы 1С при установке платформы

Порядок для нового сервера:

  1. Запустите setup.exe из дистрибутива сервера нужной разрядности. Для рабочих баз берите 64-разрядный сервер.
  2. В списке компонентов отметьте «Сервер 1С:Предприятия 8» и «Администрирование сервера 1С:Предприятия».
  3. На шаге параметров сервера поставьте флажок «Установить 1С:Предприятие 8 как сервис Windows».
  4. Выберите: создать пользователя USR1CV8 (задайте пароль) или указать существующего.
  5. Завершите установку и откройте services.msc.

В списке появится служба с именем вида 1C:Enterprise 8.3 Server Agent (x86-64). Откройте её свойства и проверьте вкладки:

  • Общие — тип запуска «Автоматически». Если сервер SQL на той же машине, ставьте «Автоматически (отложенный запуск)», чтобы 1С стартовала после СУБД.
  • Вход в систему — нужная учётная запись и актуальный пароль.
  • Восстановление — об этом ниже, в разделе про мониторинг.

Отложенный запуск не гарантирует, что СУБД уже готова. Надёжнее прописать зависимость: sc config "<имя службы 1С>" depend= MSSQLSERVER. Учтите, что команда заменяет весь список зависимостей, а не дописывает в него. Имя службы SQL для именованного экземпляра другое — посмотрите его в services.msc.

Строка запуска службы (поле «Исполняемый файл») выглядит примерно так:

"C:\Program Files\1cv8\8.3.25.1374\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"

Здесь -port 1540 — порт агента, -regport 1541 — порт главного менеджера кластера, -range 1560:1591 — диапазон для рабочих процессов, -d — каталог кластера. Если в строке есть ключ -debug, а отладка на рабочем сервере не нужна, его стоит убрать.

3. Регистрация службы из командной строки

Командная строка нужна в трёх случаях: после обновления платформы служба смотрит на старый каталог bin; надо поменять порты или srvinfo; на одной машине нужен второй сервер. Командную строку открывайте от имени администратора.

Через ragent.exe

Перейдите в каталог bin новой версии и зарегистрируйте службу:

cd /d "C:\Program Files\1cv8\8.3.25.1374\bin"
ragent.exe -instsrvc -usr .\USR1CV8 -pwd "Пароль" -port 1540 -regport 1541 -range 1560:1591 -d "D:\srvinfo"
ragent.exe -start

Удалить старую регистрацию — ragent.exe -rmsrvc, остановить — ragent.exe -stop. Удаляйте службу из каталога той версии, которой она принадлежит.

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

Через sc create

Тот же результат даёт системная утилита sc. После binPath=, start=, obj= обязателен пробел:

sc create "1C:Enterprise 8.3 Server Agent (x86-64)" binPath= "\"C:\Program Files\1cv8\8.3.25.1374\bin\ragent.exe\" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d \"D:\srvinfo\"" start= delayed-auto obj= ".\USR1CV8" password= "Пароль" DisplayName= "Агент сервера 1С:Предприятия 8.3"
sc start "1C:Enterprise 8.3 Server Agent (x86-64)"

Если служба уже есть и нужно только перевести её на новую версию, проще поправить путь: sc config "<имя службы>" binPath= "..." — права и учётная запись сохранятся.

Второй сервер на той же машине

Например, для тестовой версии платформы. Каждому экземпляру — свои порты и свой srvinfo:

Экземпляр-port-regport-range-d
Рабочий154015411560:1591D:\srvinfo
Тестовый254025412560:2591D:\srvinfo_test

Клиенты тестового сервера подключаются к server:2541, в консоли кластера указывают порт агента 2540.

Служба сервера администрирования RAS

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

sc create "1C:Enterprise 8.3 Remote Server" binPath= "\"C:\Program Files\1cv8\8.3.25.1374\bin\ras.exe\" cluster --service --port=1545 localhost:1540" start= auto obj= ".\USR1CV8" password= "Пароль"

Проверка: rac cluster list localhost:1545 должна вернуть кластер с его идентификатором и портом 1541.

4. Консоль администрирования кластера 1С

Оснастка «Администрирование серверов 1С Предприятия» — это MMC-консоль, файл 1CV8 Servers.msc. Ставится вместе с компонентом администрирования.

Подключение:

  1. Откройте консоль, на узле «Central 1C:Enterprise 8.3 servers» выберите «Создать → Центральный сервер 1С:Предприятия 8.3».
  2. Укажите имя компьютера и порт агента — 1540.
  3. Раскройте «Кластеры»: там должен быть «Локальный кластер» с портом 1541.

Если консоль пишет об ошибке компонента или не открывается после обновления платформы, перерегистрируйте radmin.dll той же версии, что и сервер:

regsvr32 "C:\Program Files\1cv8\8.3.25.1374\bin\radmin.dll"

В каталоге bin для этого есть готовый RegMSC.cmd — запускайте его от имени администратора. Консоль версии 8.3.24 к серверу 8.3.25 не подключится: версии должны совпадать.

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

Первое, куда смотреть, — журнал Windows: eventvwr.msc → Журналы Windows → Приложение и Система. Сервер 1С пишет туда причины отказа старта.

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

Ещё две ситуации, которые путают с поломкой службы:

  • 🧩 После обновления платформы работает старый сервер. Новая версия установлена, а служба по-прежнему запускает ragent.exe из старого каталога. Клиенты новой версии к нему не подключаются. Лечится правкой binPath или перерегистрацией из нового bin.
  • 🧹 Сервер запускается, но базы ведут себя странно. Повреждён сеансовый кеш в srvinfo. Остановите службу, удалите только папки snccntx* внутри каталога кластера, запустите службу. Файл реестра кластера 1CV8Clst.lst не трогайте — в нём список баз и настроек кластера.

Очистка кеша требует остановки службы: все пользователи будут отключены. Планируйте её на нерабочее время.

6. Производительность службы сервера 1С

Служба сама по себе ресурсов почти не ест — нагрузку дают рабочие процессы rphost.exe. Что настроить:

  • ⚡ Схема электропитания Windows — «Высокая производительность». На «Сбалансированной» процессор сбрасывает частоту, и сервер 1С заметно тормозит на коротких запросах.
  • 🛡️ Исключения антивируса: каталог srvinfo, каталог платформы и процессы ragent.exe, rmngr.exe, rphost.exe. Проверка на лету каждого обращения к кешу сильно замедляет работу.
  • 💾 Диск под srvinfo — SSD. Там пишутся сеансовые данные и временные файлы.
  • 🧠 Память рабочих процессов — в консоли кластера, в свойствах кластера и рабочего сервера. Ограничение памяти на процесс и безопасный расход памяти за один вызов не дают одному тяжёлому отчёту уронить весь сервер.
  • 🔁 Перезапуск рабочих процессов — в свойствах кластера задаётся интервал перезапуска. Процесс плавно передаёт сеансы новому, пользователи этого не видят.

Главное правило по памяти: ограничения ставьте с запасом. Слишком низкий порог безопасного расхода прерывает нормальные отчёты и закрытие месяца с ошибкой о превышении памяти.

7. Мониторинг службы и автоматический перезапуск

Если ragent.exe упал, Windows может поднять его сама. В services.msc на вкладке «Восстановление» выставьте для первого, второго и последующих сбоев «Перезапуск службы» через 1 минуту, сброс счётчика — через 1 день. То же из командной строки:

sc failure "1C:Enterprise 8.3 Server Agent (x86-64)" reset= 86400 actions= restart/60000/restart/60000/restart/60000

Это спасает от падения процесса, но не от зависания: зависшая служба для Windows остаётся «Выполняется». Для этого нужен внешний контроль. Простейший вариант — проверка порта агента по расписанию:

$ok = Test-NetConnection -ComputerName localhost -Port 1540 -InformationLevel Quiet
if (-not $ok) {
    Write-EventLog -LogName Application -Source "Application" -EventId 1540 -EntryType Error -Message "Агент сервера 1С не отвечает на порту 1540"
}

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

Для разбора причин сбоев включают технологический журнал: файл logcfg.xml в каталоге conf платформы. Там настраивают запись исключений (EXCP) и дампов процессов при падении. Журнал быстро растёт, поэтому задавайте срок хранения в часах и выключайте его после разбора.

Служба 1С готова к работе
Выполнено: 0 / 7

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

Можно ли запустить как службу файловую базу 1С?
Нет. Служба — это сервер 1С:Предприятия, он работает только с клиент-серверными базами. Файловую базу можно опубликовать на веб-сервере, но отдельного агента у неё не будет.
Нужна ли лицензия на сервер, чтобы служба работала?
Да. Для рабочего сервера 1С:Предприятия нужна серверная лицензия на этом компьютере, клиентские лицензии её не заменяют.
Как узнать, какой версии платформы служба сейчас?
Откройте свойства службы в services.msc и посмотрите поле «Исполняемый файл»: номер версии стоит в пути к каталогу bin.
Можно ли запускать службу от доменного администратора, чтобы не возиться с правами?
Технически да, но это дыра в безопасности: любой код в базе получит права администратора домена. Выдайте служебной записи только нужные права.
Что будет с пользователями при перезапуске службы?
Все сеансы оборвутся, несохранённые документы пропадут, фоновые задания прервутся. Перезапускайте службу после рабочего дня.