Как решить проблему "Сервер 1С:Предприятия не обнаружен" и самопроизвольной остановки службы при работе с несколькими платформами?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При работе с несколькими версиями платформы 1С:Предприятие на одном компьютере, будь то для тестирования или для поддержки различных конфигураций, таких как «Управление производственным предприятием» (УПП) или «Комплексная автоматизация» (КА), мы можем столкнуться с трудностями при запуске серверных служб. Типичная проблема — сообщение "Сервер 1С:Предприятия не обнаружен", сопровождающееся самопроизвольной остановкой службы агента сервера 1С. В данной статье мы подробно рассмотрим причины возникновения этой проблемы и представим комплексное решение, которое поможет вам настроить стабильную работу всех необходимых версий.

Предположим, у нас установлен зоопарк платформ, например, 8.3.16.1359, 8.3.10.2466 и 8.2.19.130. При попытке запустить службу для версии 8.3.10.2466, она либо не запускается вовсе, либо запускается и сразу останавливается с сообщением: "Служба "Агент сервера 1С:Предприятия 8.3.10.2466" на "Локальный компьютер" была запущена и затем остановлена. Некоторые службы автоматически останавливаются, если не используются другими службами или программами." Базы, требующие именно эту версию сервера, не работают.

Основная причина и решение проблемы "Сервер 1С:Предприятия не обнаружен"

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

Шаги для проверки и устранения конфликта портов:

  1. Изменение диапазона портов: Как показала практика, иногда достаточно просто сменить диапазон портов для проблемной службы. Например, если мы изначально использовали диапазон 1740-1791, попробуем изменить его на 1840-1891. Это можно сделать через свойства службы в оснастке "Службы" Windows или при перерегистрации службы.
  2. Проверка занятости портов: Чтобы убедиться, что порты не заняты другими приложениями, мы можем использовать команду netstat в командной строке, запущенной от имени администратора.
  3. Например, для проверки порта 1740, мы вводим:

    netstat -ano | findstr :1740

    Если команда возвращает результат, это означает, что порт занят. Последнее число в выводе команды — это PID (идентификатор процесса).

    Чтобы узнать, какое приложение занимает порт, мы используем tasklist:

    tasklist | findstr <PID>

    Замените <PID> на полученный идентификатор процесса. Если порт занят чем-то, не относящимся к 1С, нам следует изменить порт для 1С или завершить конфликтующее приложение.

Детальная диагностика самопроизвольной остановки службы 1С:Предприятия

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

Проверка прав пользователя службы

Частой причиной остановки службы является ошибка входа в систему, которая часто проявляется как "Ошибка 1069: Служба не запущена из-за ошибки входа в систему". Даже если пользователь, под которым запускается служба (например, USR1CV82 или USR1CV8), имеет полные права на папку с установленной платформой 1С (например, C:\Program Files\1cv8), могут существовать другие ограничения:

  1. Права на доступ к реестру: Служба 1С активно взаимодействует с реестром Windows. Убедитесь, что пользователь службы имеет необходимые права на чтение и запись в ветках реестра, связанных с 1С (например, в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services для самой службы и в ветках, где 1С хранит свои настройки).
  2. Права на временные каталоги: 1С использует временные каталоги для своей работы. Удостоверимся, что пользователь службы имеет полные права на чтение и запись в этих каталогах. К ним относятся системные временные каталоги (обычно C:\Windows\Temp) и временные папки, связанные с профилем пользователя, от имени которого запускается служба.
  3. Права на файлы лицензий: Если используются программные лицензии, у пользователя службы должны быть права на доступ к каталогам хранения файлов лицензий (обычно это скрытые папки в профиле пользователя или общие папки).
  4. Групповые политики безопасности: В корпоративной среде групповые политики домена могут ограничивать права определенных пользователей или служб, даже если вручную предоставлены разрешения. Стоит проверить локальные или доменные политики безопасности, которые могут влиять на запуск служб.
  5. Смена учетной записи для службы: Для тестовых целей, мы можем попробовать установить запуск службы от имени системной учетной записи (Local System account). Это исключит большинство проблем с правами. Если служба запустится, мы выясним, что проблема именно в правах. В этом случае, мы либо оставим системную учетную запись (для тестовых сред), либо будем более точно настраивать права для выделенного пользователя 1С. Для производственных систем рекомендуется использовать выделенного пользователя с минимально необходимыми правами.

Анализ журналов Windows (Просмотр событий)

Операционная система Windows предоставляет мощный инструмент для диагностики – "Просмотр событий". В дополнение к системным журналам, нам стоит внимательно изучить другие журналы:

  1. Журналы приложений и служб: Некоторые компоненты 1С или операционной системы могут оставлять более подробные записи об ошибках именно там. Мы ищем записи, связанные с ragent.exe, rmngr.exe или rphost.exe.
  2. Журнал Security (Безопасность): Ошибки входа в систему, такие как "Ошибка 1069", часто сопровождаются записями в журнале безопасности. Эти записи могут указывать на конкретную причину отказа аутентификации пользователя, под которым запускается служба (например, неверный пароль, истекший срок действия учетной записи или отсутствие необходимых прав).
  3. Журнал System (Система): Здесь мы можем найти общие системные ошибки, которые могли предшествовать сбою службы 1С.

Настройка и анализ Технологического журнала (ТЖ) 1С:Предприятия

Технологический журнал 1С:Предприятия является наиболее мощным инструментом для диагностики проблем, непосредственно связанных с работой сервера 1С. Он записывает подробную информацию о внутренних процессах, ошибках и взаимодействии компонентов.

  1. Создание или редактирование logcfg.xml: Нам необходимо создать или отредактировать файл logcfg.xml в каталоге conf установки сервера 1С:Предприятия. Например, для платформы 8.3.10.2466 это будет C:\Program Files\1cv8\8.3.10.2466\conf\logcfg.xml.
  2. Содержимое logcfg.xml: В этом файле мы указываем компоненты, события которых требуется записывать, и путь к каталогу для файлов журнала. Для максимально подробной информации о работе сервера и причинах его остановок, рекомендуется включить следующие события: CALL, DBMSSQL, EXCP, SCALL, SDBL, SESN, SRVC.
  3. Пример файла logcfg.xml:

    
    <?xml version="1.0" encoding="UTF-8"?>
    <config xmlns="http://v8.1c.ru/v8/tech-log">
        <log location="C:\1C_Logs" history="10" maxfilesize="102400">
            <event system="CALL"></event>
            <event system="DBMSSQL"></event>
            <event system="EXCP"></event>
            <event system="SCALL"></event>
            <event system="SDBL"></event>
            <event system="SESN"></event>
            <event system="SRVC"></event>
            <property name="all"></property>
        </log>
    </config>
    

    В этом примере C:\1C_Logs — это путь, куда будут записываться файлы журнала. Убедитесь, что у пользователя службы 1С есть полные права на этот каталог.

  4. Анализ файлов журнала: После настройки ТЖ и возникновения проблемы, в файлах журнала (обычно с расширением .log) мы сможем найти детальное описание ошибок, стеки вызовов и конкретные причины сбоя, которые не отображаются в стандартных журналах Windows.

Проверка брандмауэра Windows

Даже на локальном компьютере брандмауэр Windows может блокировать соединения между процессами, если он настроен на строгие правила. Нам необходимо убедиться, что для процессов ragent.exe, rmngr.exe и rphost.exe (для каждой версии платформы, которая используется как сервер) разрешен входящий и исходящий трафик по всем используемым портам. Альтернативно, мы можем создать правила для конкретных исполняемых файлов, разрешив им весь сетевой трафик.

Управление службами сервера 1С:Предприятия

Для стабильной работы сервера 1С:Предприятия крайне важно правильно управлять его службами. Рассмотрим основные моменты.

Регистрация и перерегистрация службы

Если служба была установлена некорректно или нам нужно изменить ее параметры, мы можем перерегистрировать ее. Для этого используются утилиты ragent.exe и sc.exe.

  1. Использование ragent.exe:

    Сначала мы удаляем существующую службу (если она зарегистрирована):

    
    Cd "C:\Program Files\1cv8\<версия_платформы>\bin"
    .\ragent.exe -rmsrvc
    

    Затем регистрируем новую службу с нужными параметрами. Обратите внимание на ключи -regport, -port, -range для задания уникальных портов и -d для указания отдельного каталога данных кластера.

    
    .\ragent.exe -instsrvc -port 1740 -regport 1741 -range 1760:1791 -usr .\USR1CV82 -pwd <пароль_пользователя> -d "C:\Program Files\1cv8\srvinfo1741" -debug
    

    После регистрации мы запускаем службу:

    .\ragent.exe -start

    Ключ -usr .\USR1CV82 указывает пользователя, от имени которого будет запускаться служба. .\ перед именем пользователя указывает на локальную учетную запись.

  2. Использование sc.exe и скриптов:

    Для более гибкой и автоматизированной регистрации служб можно использовать командные файлы с утилитой sc.exe. Это особенно полезно при настройке нескольких серверов.

    Пример командного файла register-service.bat:

    
    @echo off
    rem %1 - полный номер версии 1С:Предприятия (например, 8.3.16.1359)
    rem %2 - первые две цифры номеров портов (например, для портов 1540,1541,1560:1591 - это цифра 15)
    rem %3 - каталог с данными реестра кластера (например, c:\cluster_data\cluster1)
        
    set SrvUserName=<имя_пользователя>
    set SrvUserPwd=<пароль_пользователя>
        
    rem Формируем полный диапазон портов (например, 1560:1591)
    set RangePort=%260:%291
    rem Формируем порт менеджера кластера (например, 1541)
    set BasePort=%241
    rem Формируем основной порт агента сервера (например, 1540)
    set CtrlPort=%240
        
    rem Формируем имя службы (например, "1C:Enterprise 8.3 Server Agent 1540 8.3.16.1359")
    set SrvcName="1C:Enterprise 8.3 Server Agent %CtrlPort% %1"
        
    rem Формируем путь к исполняемому файлу и его параметры
    set BinPath="\"C:\Program Files\1cv8\%1\bin\ragent.exe\" /srvc /agent /regport %BasePort% /port %CtrlPort% /range %RangePort% /d \"%~3\" /debug"
        
    rem Формируем отображаемое имя для службы в оснастке "Службы"
    set Desctiption="Агент сервера 1С:Предприятия 8.3. Параметры: %1, %CtrlPort%, %BasePort%, %RangePort%"
        
    rem Создаем каталог для данных кластера, если он не существует
    if not exist "%~3" mkdir "%~3"
        
    rem Останавливаем и удаляем существующую службу с таким именем
    sc stop %SrvcName%
    sc delete %SrvcName%
        
    rem Создаем новую службу
    sc create %SrvcName% binPath= %BinPath% start= auto obj= %SrvUserName% password= %SrvUserPwd% displayname= %Desctiption% depend= Dnscache/Tcpip/Tcpip6/lanmanworkstation/lanmanserver
        
    rem Запускаем созданную службу
    sc start %SrvcName%
    

    Перед применением данного командного файла нам необходимо указать в нем данные реального пользователя (имя и пароль) от имени которого будет работать служба кластера серверов (строки set SrvUserName= и set SrvUserPwd=). Например, для локального пользователя USR1CV82 мы можем написать set SrvUserName=.\USR1CV82.

    Пример использования:

    
    register-service 8.3.16.1359 15 "c:\cluster_data\cluster16"
    register-service 8.3.10.2466 18 "c:\cluster_data\cluster10"
    

    Данный скрипт сначала остановит и удалит службу с указанным именем (если она существует), а затем создаст новую службу с заданными параметрами и запустит ее.

Удаление "фантомных" служб

Иногда после неудачных попыток установки или удаления службы, она может перестать отображаться в оснастке "Службы" или не удаляться командой sc delete. В таких случаях записи о службе остаются в реестре Windows. Нам потребуется удалить их вручную, но это требует предельной осторожности.

  1. Откроем редактор реестра (regedit.exe) от имени администратора.
  2. Перейдем к ветке: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services.
  3. Найдем подраздел, соответствующий имени службы 1С (например, 1C:Enterprise 8.3 Server Agent 1740 8.3.10.2466). Имя службы может отличаться в зависимости от версии и портов.
  4. Прежде чем удалять, обязательно сделаем резервную копию этой ветки реестра (правой кнопкой мыши по подразделу -> "Экспортировать").
  5. Удалим соответствующий подраздел.
  6. После перезагрузки компьютера "фантомная" служба исчезнет, и мы сможем переустановить ее корректно.

Особенности установки нескольких экземпляров сервера 1С:Предприятия

Для успешной одновременной работы нескольких экземпляров сервера 1С на одном компьютере (например, 32-битной и 64-битной версии или разных версий платформы) нам необходимо строго соблюдать следующие правила:

  1. Разделение путей установки: Каждая версия платформы должна быть установлена в свой уникальный каталог, например:
    • C:\Program Files\1cv8\8.3.16.1359\bin\ragent.exe
    • C:\Program Files\1cv8\8.3.10.2466\bin\ragent.exe
    • C:\Program Files\1cv82\8.2.19.130\bin\ragent.exe
  2. Уникальные диапазоны портов: Каждый экземпляр сервера (кластер серверов) должен работать на своем уникальном диапазоне портов, чтобы избежать конфликтов. В параметрах службы (или при ее регистрации) мы указываем:
    • -regport (порт менеджера регистрации)
    • -port (порт главного менеджера кластера)
    • -range (диапазон портов для рабочих процессов)

    Пример: -regport 1741 -port 1740 -range 1760:1791 для одной службы и -regport 1541 -port 1540 -range 1560:1591 для другой.

  3. Отдельные каталоги данных кластера: Для каждой службы 1С необходимо создавать отдельный каталог для хранения данных реестра кластера (параметр -d при регистрации службы). Это предотвращает конфликты и путаницу в метаданных кластеров.
    • -d "C:\Program Files\1cv8\srvinfo1741"
    • -d "C:\Program Files\1cv8\srvinfo1541"
  4. Отдельные пользователи для служб (рекомендуется): Для повышения безопасности и упрощения диагностики прав доступа, мы можем создавать отдельных пользователей Windows для каждой службы 1С (например, USR1CV8_8_3_16 и USR1CV8_8_3_10). Каждому такому пользователю предоставляются минимально необходимые права на соответствующие каталоги платформы, данные кластера и временные папки.
  5. 32-битные и 64-битные платформы: Если одна конфигурация (например, "Альфа-Авто") требует 32-битную платформу, а другая ("КА2") – 64-битную, важно убедиться, что каждый серверный процесс 1С запускается с соответствующей архитектурой платформы. При установке 32-битной и 64-битной версии на один компьютер, их службы должны быть разнесены не только по портам, но и по путям к исполняемым файлам ragent.exe, указывающим на соответствующую архитектуру (например, Program Files (x86) для 32-битной и Program Files для 64-битной).
  6. Режим совместимости: Напоминаем, что старшие релизы платформы 1С:Предприятия могут обеспечивать работу старых конфигураций в режиме совместимости. Это означает, что для файловых баз или для клиентских подключений к серверным базам, более новый клиент может работать со старыми конфигурациями, если режим совместимости настроен корректно. Однако, для серверной работы, серверная служба соответствующей или совместимой версии должна быть запущена. Если у нас есть базы, требующие, например, 8.3.10, и базы, требующие 8.3.16, нам необходимо, чтобы обе серверные службы (или как минимум та, которая может поддерживать все базы в режиме совместимости) были запущены и работали стабильно.

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

← На главную