В практике системного администрирования 1С часто возникают ситуации, когда на одном сервере необходимо обеспечить одновременную работу разных версий платформ. Типичный пример — необходимость запуска современных конфигураций (ЗУП 3.1, Бухгалтерия 3.0) на актуальной платформе (например, 8.3.20 или выше) и параллельное использование специфических отраслевых решений, таких как "Альфа-Авто", которые из-за особенностей защиты или совместимости оборудования требуют строго определенную старую версию платформы (например, 8.3.10). Рассмотрим подробнее, как реализовать такую схему без приобретения дополнительного оборудования.
При стандартной установке 1С:Предприятие инсталлятор регистрирует службу 1C:Enterprise 8.3 Server Agent. Если вы попытаетесь установить вторую версию платформы тем же способом, инсталлятор либо предложит обновить существующую службу, либо создаст конфликт имен и портов. Для корректной работы двух экземпляров сервера нам необходимо разнести их по трем параметрам:
Проанализируем процесс установки. Первым делом скачиваем нужный дистрибутив (в нашем примере 8.3.10.2466). При запуске программы установки важно выбрать режим "Выборочная установка".
В списке компонентов мы оставляем "Сервер 1С:Предприятия" и "Модули расширения веб-сервера", если они нужны, но на этапе предложения "Установить сервер 1С:Предприятия как сервис" — снимаем эту галочку. Нам нужно, чтобы файлы просто скопировались в папку C:\Program Files\1cv8\8.3.x.xxxx\, но никакие системные службы автоматически не создавались. Это позволит нам создать службу вручную с нужными параметрами.
Выясним, как прописать параметры запуска. Для создания службы воспользуемся утилитой sc. Откроем командную строку от имени администратора и введем команду. Разберем пример для платформы 8.3.10.2466, которую мы хотим посадить на порты 1640 и 1641.
sc create "1C_Enterprise_8.3.10" binPath= "\"C:\Program Files\1cv8\8.3.10.2466\bin\ragent.exe\" -srvc -agent -regport 1641 -port 1640 -range 1660:1691 -d \"C:\Program Files\1cv8\srvinfo_1641\"" start= auto obj= "NT AUTHORITY\NetworkService"
Рассмотрим ключи этой команды подробнее:
-srvc — указывает, что программа запускается как сервис.-agent — запуск агента сервера.-regport 1641 — порт реестра кластера (вместо стандартного 1541). Именно этот порт пользователи будут указывать в строке подключения.-port 1640 — главный порт агента сервера (вместо 1540).-range 1660:1691 — диапазон портов для рабочих процессов (вместо 1560:1591).-d "C:\Program Files\1cv8\srvinfo_1641" — путь к директории, где будут лежать настройки именно этого экземпляра сервера. Важно создать эту папку заранее и дать права пользователю, от которого запускается служба.После создания службы необходимо убедиться, что у пользователя, под которым она будет работать (например, USR1CV8 или NetworkService), есть полные права на папку, указанную в ключе -d. Если права будут ограничены, служба может запуститься, но не сможет создать файлы конфигурации кластера 1cv8wsrv.lst, что приведет к её внезапной остановке через несколько секунд после старта.
Теперь, когда у нас запущено два сервера, проанализируем, как подключаться к ним. Для основного сервера подключение остается прежним (например, ServerName). Для второго сервера в окне добавления информационной базы в поле "Кластер серверов 1С:Предприятия" необходимо указывать имя сервера вместе с портом реестра:
Пример: ServerName:1641
Аналогично, при использовании консоли администрирования ("Администрирование серверов 1С Предприятия"), вам нужно добавить новый "Центральный сервер 1С:Предприятия", указав порт 1640 (порт агента). Для работы с несколькими кластерами разных версий из единого интерфейса подойдет мультиверсионная консоль администрирования серверов 1С.
Проанализируем ситуацию, когда базы на разных серверах должны обмениваться данными через COMConnector. Windows хранит информацию о библиотеке comcntr.dll в реестре по фиксированному пути. Регистрация одной версии "затирает" регистрацию другой.
Если вам нужно, чтобы база на платформе 8.3.20 подключалась к базе на 8.3.10, вы можете столкнуться с ошибкой несоответствия версий. Решением является использование программного создания объекта с указанием конкретной версии, если это реализовано в вашем коде, либо ручная перерегистрация библиотеки перед выполнением обмена. Посмотрим на способ регистрации нужной версии библиотеки через regsvr32:
regsvr32 "C:\Program Files\1cv8\8.3.10.2466\bin\comcntr.dll"
Однако более надежным методом является настройка Side-by-Side (SxS) или использование разных имен COM-объектов в коде, если это поддерживается конфигурацией. В сообщениях форума упоминалось, что опытные администраторы создают в реестре копии веток COM-объекта с уникальными GUID для каждой версии платформы, что позволяет вызывать V83.COMConnector_8.3.14.1694 напрямую.
Если вам потребовалось обновить одну из установленных платформ, рассмотрим алгоритм действий, чтобы не "сломать" вторую службу. Допустим, мы обновляем дополнительную службу с 8.3.17 на 8.3.19:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\.1C_Enterprise_8.3.10).ImagePath аккуратно меняем номер версии в пути к исполняемому файлу ragent.exe. Все остальные ключи (порты, путь к srvinfo) оставляем без изменений.Такой подход позволяет сохранить все настройки кластера и список информационных баз, просто сменив "движок" сервера. Перед проведением подобных работ по обновлению системного ПО важно запустить автоматическое резервное копирование и тестирование баз 1С, чтобы избежать потери данных в случае непредвиденных сбоев.
Для тех, кто опасается работать с командной строкой и реестром вручную, существуют сторонние инструменты, такие как srvinstall или специализированные обработки с портала Инфостарт. Эти утилиты предоставляют графический интерфейс для управления службами 1С, позволяя в пару кликов создать новый экземпляр сервера с указанием всех необходимых портов и путей. Однако понимание ручного процесса крайне важно для диагностики возможных ошибок запуска.
Таким образом, использование двух платформ на одном сервере — это стандартная и стабильная процедура, требующая лишь внимательности при распределении сетевых ресурсов сервера.