Сервер 1С, RAS и регламентные операции в режиме службы Windows
Содержание
Чтобы запустить 1С как службу Windows, регистрируют агент сервера ragent.exe командой ragent.exe -instsrvc (или через sc create) и ставят тип запуска «Автоматически». Установщик платформы делает это сам, если отметить компонент «Сервер 1С:Предприятия» и галочку установки как сервиса Windows.
Типичная ситуация: сервер перезагрузили после обновлений, а утром бухгалтерия не может войти в базу, потому что кластер поднимался вручную из командной строки. Или после обновления платформы служба по-прежнему смотрит в каталог старой версии.
Какие компоненты 1С работают службами
Пользовательский клиент 1cv8.exe службой не бывает: это оконное приложение. Службами работают серверные компоненты.
| Компонент | Исполняемый файл | Зачем нужен службой |
|---|---|---|
| 🖥 Агент сервера | ragent.exe | Поднимает кластер: менеджер кластера (rmngr.exe) и рабочие процессы (rphost.exe) |
| 🔌 Сервер администрирования | ras.exe | Даёт доступ утилите rac и сторонним консолям к кластеру |
| 🔐 Менеджер лицензий HASP | hasplms.exe | Раздаёт сетевые USB-ключи защиты |
| 🗄 Автономный сервер | ibsrv.exe | Отдельный сервер для одной базы, появился в 8.3.14 |
Агент сам запускает и следит за rmngr.exe и rphost.exe. Отдельные службы для них не нужны: если завершить агент, процессы кластера завершатся вместе с ним.
Порты по умолчанию:
- 🔹
1540— агент сервера, к нему обращаются клиенты и консоль; - 🔹
1541— менеджер кластера; - 🔹
1560:1591— диапазон рабочих процессов (задаётся в свойствах рабочего сервера); - 🔹
1545— сервер администрирования RAS.
Регистрация агента сервера 1С как службы
Через установщик
При установке платформы выберите компонент «Сервер 1С:Предприятия 8» и оставьте отметку установки как сервиса Windows. Установщик предложит учётную запись: создать нового пользователя
USR1CV8 или указать существующего. Служба зарегистрируется на портах по умолчанию и сразу запустится.
Через ragent.exe
Если служба удалена или её нужно пересоздать с другими параметрами, работайте из командной строки от имени администратора. Перейдите в каталог bin нужной версии платформы:
cd "C:\Program Files\1cv8\8.3.24.1548\bin"
ragent.exe -instsrvc -usr .\USR1CV8 -pwd "Пароль" -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"
ragent.exe -start
Что значат ключи:
-instsrvc— зарегистрировать службу;-usrи-pwd— учётная запись, от имени которой она работает;-port,-regport,-range— порты агента, менеджера и рабочих процессов;-d— каталог данных кластера (srvinfo), где лежит реестр кластера и сеансовые данные;-startи-stop— запустить и остановить зарегистрированную службу;-rmsrvc— удалить службу.
Номер версии в пути подставьте свой. Посмотреть, какие версии стоят, можно в C:\Program Files\1cv8\.
Через sc create
Способ нужен, когда на одном компьютере работают два кластера разных версий, например рабочий и тестовый. Второй экземпляр регистрируют на других портах и с отдельным каталогом данных:
sc create "1C Server 8.3.25 test" binPath= "\"C:\Program Files\1cv8\8.3.25.1374\bin\ragent.exe\" -srvc -agent -regport 2541 -port 2540 -range 2560:2591 -d \"D:\srvinfo_test\"" start= auto obj= ".\USR1CV8" password= "Пароль" DisplayName= "Агент сервера 1С 8.3.25 (тест)"
sc start "1C Server 8.3.25 test"
В синтаксисе sc после знака «=» обязателен пробел: start= auto, а не start=auto. Без пробела команда выдаёт справку и ничего не создаёт.
Ключ -srvc в строке запуска говорит агенту, что он работает в режиме службы. Ключ -debug в этой же строке включает отладку на сервере: она нужна разработчикам, на рабочем сервере её обычно не держат.
После обновления платформы
Это главный источник проблем. Новая версия ставится в соседний каталог, а служба продолжает запускать ragent.exe из старого. Проверьте путь:
sc qc "1C:Enterprise 8.3 Server Agent (x86-64)"
Если в строке BINARY_PATH_NAME старая версия, остановите службу в нерабочее время: все пользователи будут отключены от баз. Затем удалите её командой ragent.exe -rmsrvc из каталога старой версии и зарегистрируйте заново из каталога новой с теми же портами и тем же -d. Каталог srvinfo при этом не трогайте: в нём список информационных баз кластера.
Точное имя службы на вашем сервере может отличаться. Узнать его:
Get-Service | Where-Object { $_.DisplayName -like "*1С*" -or $_.DisplayName -like "*1C*" }
Сервер администрирования RAS и утилиты в режиме службы
Служба RAS
Утилита rac и сторонние консоли управляют кластером через сервер администрирования. Его тоже удобно держать службой:
sc create "1C:Enterprise 8.3 Remote Server" binPath= "\"C:\Program Files\1cv8\8.3.24.1548\bin\ras.exe\" cluster --service --port=1545 localhost:1540" start= auto DisplayName= "Сервер администрирования 1С 8.3"
sc start "1C:Enterprise 8.3 Remote Server"
После запуска проверьте связь:
rac localhost:1545 cluster list
Команда выведет идентификатор кластера, его имя и порт. Остальные подкоманды смотрите в rac help.
Обработки и пакетные операции по расписанию
Частый вопрос: как запускать внешнюю обработку
или выгрузку базы «как службу», без входа пользователя. Обернуть 1cv8.exe в службу через сторонние программы-обёртки можно, но это плохая идея. Служба работает в изолированном сеансе без рабочего стола: любое окно с вопросом подвесит процесс, и никто этого не увидит.
Надёжнее три варианта:
| Способ | Когда подходит | Ограничения |
|---|---|---|
| Регламентные задания в базе | Клиент-серверная база, задача внутри 1С: загрузка курсов, обмены, проверка почты | Нужна доработка, если задачи нет в типовой |
Планировщик заданий Windows + 1cv8.exe | Выгрузка .dt, запуск внешней обработки, обновление по ночам | Нужна учётная запись с правами и подавление диалогов |
Автономный сервер ibsrv | Одна файловая база, к которой нужен доступ как к серверу | Отдельный продукт со своими параметрами, смотрите ibsrv --help |
В клиент-серверном варианте регламентные задания выполняет сам кластер. Достаточно, чтобы служба агента работала, а в свойствах базы в консоли не стояла блокировка регламентных заданий. Это самый правильный путь «фоновой» автоматизации.
Пример строки для Планировщика заданий, которая выгружает базу в файл:
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /S "srv1c\buh" /N "Регламент" /P "Пароль" /DumpIB "E:\backup\buh.dt" /Out "E:\backup\dump.log" /DisableStartupDialogs /DisableStartupMessages
Запуск внешней обработки в режиме предприятия:
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" ENTERPRISE /S "srv1c\buh" /N "Регламент" /P "Пароль" /Execute "E:\scripts\obrabotka.epf" /DisableStartupDialogs /DisableStartupMessages
Выгрузка в .dt требует, чтобы в базе не было других сеансов. Ставьте задание на ночь и заранее отключайте пользователей. Обработка, запущенная через /Execute, должна сама завершать сеанс (ЗавершитьРаботуСистемы(Ложь)), иначе процесс останется висеть до утра.
В задании Планировщика отметьте «Выполнять для всех пользователей» и «Выполнить с наивысшими правами». Для файловой базы вместо /S укажите /F "D:\Bases\buh".
Учётная запись службы и права доступа
Запускать агент от LocalSystem удобно, но небезопасно: рабочие процессы получают полные права на сервер, а через них и код конфигурации. Отдельный пользователь USR1CV8 без прав администратора — нормальная практика.
Что нужно этому пользователю:
- ✅ право «Вход в качестве службы» (локальная политика безопасности → Назначение прав пользователя);
- ✅ полный доступ к каталогу
srvinfoи к каталогу технологического журнала, если он включён; - ✅ чтение файлов программных лицензий, по умолчанию
C:\ProgramData\1C\licenses; - ✅ членство в группе «Пользователи журналов производительности» (Performance Log Users) — без неё бывают проблемы со счётчиками и сбором данных о процессах;
- ✅ доступ к СУБД — если MS SQL Server работает с проверкой подлинности Windows, логин нужен именно этому пользователю.
Для каталогов, куда пишут выгрузки и файлы обмена, дайте права на запись точечно. Право на запись в весь диск C: не нужно.
Отдельно — администратор кластера. Пока он не задан, любой, кто достучится до порта 1540, может открыть консоль и удалить базу из кластера. Задайте администратора в консоли кластера (ветка «Администраторы» под кластером и под центральным сервером) и закройте порты 1540, 1541, 1545 и диапазон рабочих процессов брандмауэром для всех, кроме сети офиса или сервера терминалов.
Если служба работает под доменной учётной записью и её пароль меняется по политике, служба перестанет запускаться после очередной перезагрузки. Для таких учёток отключите срок действия пароля или используйте управляемую учётную запись службы, если это допускает ваша инфраструктура.
Служба 1С не запускается: разбор по симптомам
Сначала смотрите журнал Windows: «Просмотр событий → Журналы Windows → Приложение» и «Система». Агент 1С пишет туда текст причины, системная часть — код ошибки службы.
Проверка занятых портов:
netstat -ano | findstr ":1540 :1541 :1545"
tasklist /FI "PID eq 4321"
Вместо 4321 подставьте PID из последнего столбца вывода netstat.
Если не помогло
Когда служба запускается, но кластер ведёт себя странно (базы не открываются, сеансы «висят» после перезапуска), администраторы чистят сеансовые данные сервера. Это файлы snccntx* в каталоге srvinfo\reg_1541.
Перед этим остановите службу агента: работа всех пользователей прервётся, несохранённые данные потеряются. Делайте это в нерабочее время.
- Остановите службу агента сервера.
- Убедитесь в диспетчере задач, что не осталось процессов
rphost.exeиrmngr.exe. - Скопируйте каталог
srvinfoв резервную папку целиком. - В
srvinfo\reg_1541удалите только папки и файлыsnccntx*. Файл1CV8Clst.lstне трогайте: в нём список баз кластера и его настройки. - Запустите службу и откройте базу.
Если и это не помогло, включите технологический журнал (файл logcfg.xml в каталоге conf платформы) и смотрите события EXCP в момент сбоя.
Автоперезапуск и контроль работы службы
Служба может упасть: закончилась память, рабочий процесс завис, Windows поставила обновление. Пусть Windows поднимает её сама. В свойствах службы на вкладке «Восстановление» выберите «Перезапуск службы» для первого и второго сбоя. Из командной строки то же самое:
sc failure "1C:Enterprise 8.3 Server Agent (x86-64)" reset= 86400 actions= restart/60000/restart/60000//
Здесь служба перезапускается через минуту после первого и второго сбоя, а счётчик сбоев сбрасывается раз в сутки.
Что стоит проверять регулярно:
- 📊 состояние службы —
Get-Serviceв скрипте мониторинга, с оповещением, если статус неRunning; - 📊 рабочие процессы и их память —
rac process list --cluster=<id>или консоль кластера; - 📊 размер каталога
srvinfo— если он вырос до десятков гигабайт, ищите разросшиеся сеансовые данные или журналы; - 📊 свободное место на диске с технологическим журналом — без ограничения он заполняет диск за дни;
- 📊 журнал «Приложение» — повторяющиеся ошибки агента 1С.
Ограничения рабочих процессов (перезапуск по объёму памяти, интервал перезапуска) задают в свойствах кластера и рабочего сервера в консоли. Это мягче, чем перезапуск всей службы: процесс сменяется без отключения всех пользователей разом.
Обновления Windows ставьте с ручной перезагрузкой в окно обслуживания. Автоматическая перезагрузка посреди закрытия месяца обрывает проведение документов у всех.
Частые вопросы
Можно ли запустить файловую базу 1С как службу?
ibsrv, который регистрируется отдельно, или публикация на веб-сервере. Если нужна работа многих пользователей, проще перейти на клиент-серверный вариант.Как запустить на одном сервере два агента разных версий?
sc create на других портах (например, 2540, 2541, 2560:2591) и с отдельным каталогом -d. Клиент подключается к нему по адресу сервер:2541.Нужна ли перезагрузка Windows после регистрации службы?
sc start или ragent.exe -start.Почему служба запускается вручную, но не стартует после перезагрузки?
Где хранится список баз кластера?
-d, в файле 1CV8Clst.lst внутри reg_1541. Его копию держите в резервных копиях сервера.