Сервер 1С, RAS и регламентные операции в режиме службы Windows

· 10 мин

Содержание

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

Типичная ситуация: сервер перезагрузили после обновлений, а утром бухгалтерия не может войти в базу, потому что кластер поднимался вручную из командной строки. Или после обновления платформы служба по-прежнему смотрит в каталог старой версии.

Какие компоненты 1С работают службами

Пользовательский клиент 1cv8.exe службой не бывает: это оконное приложение. Службами работают серверные компоненты.

КомпонентИсполняемый файлЗачем нужен службой
🖥 Агент сервераragent.exeПоднимает кластер: менеджер кластера (rmngr.exe) и рабочие процессы (rphost.exe)
🔌 Сервер администрированияras.exeДаёт доступ утилите rac и сторонним консолям к кластеру
🔐 Менеджер лицензий HASPhasplms.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

Что значат ключи:

  1. -instsrvc — зарегистрировать службу;
  2. -usr и -pwd — учётная запись, от имени которой она работает;
  3. -port, -regport, -range — порты агента, менеджера и рабочих процессов;
  4. -d — каталог данных кластера (srvinfo), где лежит реестр кластера и сеансовые данные;
  5. -start и -stop — запустить и остановить зарегистрированную службу;
  6. -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С
Выполнено: 0 / 7

Служба 1С не запускается: разбор по симптомам

Сначала смотрите журнал Windows: «Просмотр событий → Журналы Windows → Приложение» и «Система». Агент 1С пишет туда текст причины, системная часть — код ошибки службы.

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

Проверка занятых портов:

netstat -ano | findstr ":1540 :1541 :1545"
tasklist /FI "PID eq 4321"

Вместо 4321 подставьте PID из последнего столбца вывода netstat.

Если не помогло

Когда служба запускается, но кластер ведёт себя странно (базы не открываются, сеансы «висят» после перезапуска), администраторы чистят сеансовые данные сервера. Это файлы snccntx* в каталоге srvinfo\reg_1541.

Перед этим остановите службу агента: работа всех пользователей прервётся, несохранённые данные потеряются. Делайте это в нерабочее время.

  1. Остановите службу агента сервера.
  2. Убедитесь в диспетчере задач, что не осталось процессов rphost.exe и rmngr.exe.
  3. Скопируйте каталог srvinfo в резервную папку целиком.
  4. В srvinfo\reg_1541 удалите только папки и файлы snccntx*. Файл 1CV8Clst.lst не трогайте: в нём список баз кластера и его настройки.
  5. Запустите службу и откройте базу.

Если и это не помогло, включите технологический журнал (файл 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. Его копию держите в резервных копиях сервера.