В практике администрирования систем на базе 1С:Предприятие часто возникает классическая дилемма: одна часть информационных баз (например, сильно кастомизированная старая конфигурация «Управление производственным предприятием» — УПП) жестко привязана к старой версии платформы и не может корректно работать на новых релизах. В то же время другие конфигурации (например, «Бухгалтерия предприятия» или «ERP») требуют регулярного обновления и работы на самых свежих релизах платформы 1С.
Попытка просто установить новую платформу на сервер часто приводит к тому, что при запуске клиентского приложения система все равно обращается к старой версии сервера. Выясним причину этого поведения и подробно разберем, как запустить несколько независимых служб сервера 1С разных версий на одной физической машине под управлением операционной системы Windows Server.
Многие начинающие администраторы совершают одну и ту же ошибку: они пытаются запустить исполняемый файл тонкого или толстого клиента (например, 1cv8.exe или 1cv8c.exe) напрямую из каталога новой платформы (например, C:\Program Files\1cv8\8.3.15.1830\bin\), надеясь, что база откроется под этой версией.
Однако в клиент-серверном варианте работы архитектура 1С устроена иначе. Клиентское приложение осуществляет первичное подключение к кластеру серверов 1С:Предприятия. Если служба сервера запущена на старой версии (например, 8.3.12.1780), сервер принудительно сообщает клиенту, какая версия платформы необходима для работы. В итоге клиентская машина автоматически закрывает текущий исполняемый файл и перезапускает ту версию платформы, которая соответствует работающей службе сервера. Если же нужная версия не установлена у пользователя, система выдаст ошибку несоответствия версий клиента и сервера.
Для параллельной работы баз на разных версиях платформы нам необходимо развернуть два независимых кластера серверов 1С, которые будут работать одновременно как отдельные службы Windows.
Разберем по шагам весь процесс установки и конфигурирования новой службы сервера 1С параллельно с уже существующей.
Запустим программу установки (дистрибутив технологической платформы) новой версии. При выборе устанавливаемых компонентов необходимо отметить «Сервер 1С:Предприятия» и «Администрирование сервера 1С:Предприятия». Однако на этапе настройки параметров запуска сервера как службы Windows крайне важно снять галочку «Установить сервер 1С:Предприятия как службу Windows». Если этого не сделать, установщик перезапишет параметры существующей службы старого сервера, из-за чего старый кластер перестанет запускаться.
Каждая служба сервера 1С хранит настройки своих баз, список зарегистрированных пользователей, журнал регистрации и служебные файлы в специальном каталоге реестра кластера (по умолчанию это папка srvinfo). Если запустить две разные службы сервера с указанием одного и того же каталога реестра, произойдет конфликт доступа к файлам конфигурации, что гарантированно приведет к повреждению структуры баз в кластере.
Создадим на диске сервера отдельную пустую папку для реестра нового кластера. Например:
C:\Program Files\1cv8\srvinfo_new
По умолчанию службы сервера 1С запускаются от имени специального локального пользователя Windows (обычно это системная учетная запись USR1CV8). Нам необходимо убедиться, что у этого пользователя есть полные права на только что созданную папку.
Для этого выполним следующие действия:
srvinfo_new и выберем «Свойства».USR1CV8 (или ту доменную/локальную запись, под которой работает ваша служба 1С).Две службы не могут занимать одни и те же сетевые порты. По умолчанию сервер 1С использует следующие порты:
Для второй службы сервера нам необходимо задать альтернативные порты. Рекомендуется использовать смещение на 1000 единиц вперед:
Для создания новой службы Windows воспользуемся стандартной консольной утилитой sc.exe. Запустим командную строку (CMD) обязательно от имени Администратора.
При составлении команды обратим особое внимание на синтаксис утилиты sc: после знака равенства (=) перед значением параметра обязательно должен стоять пробел, а перед самим знаком равенства пробела быть не должно. Пути, содержащие пробелы, должны быть обернуты в кавычки, которые внутри параметра binPath необходимо экранировать обратным слэшем (\").
Рассмотрим пример команды для регистрации службы платформы версии 8.3.15.1830 с альтернативными портами и новым каталогом реестра:
sc create "1C_Enterprise_8.3.15.1830" binPath= "\"C:\Program Files\1cv8\8.3.15.1830\bin\ragent.exe\" -srvc -agent -regport 2541 -port 2540 -range 2560:2591 -d \"C:\Program Files\1cv8\srvinfo_new\"" start= auto DisplayName= "1C:Enterprise 8.3.15.1830 Server Agent"
Разберем основные параметры этой команды:
"1C_Enterprise_8.3.15.1830" — системное имя новой службы Windows.-srvc — указывает утилите запуска ragent.exe, что запуск производится в режиме службы Windows.-agent — запускает процесс в режиме агента сервера.-regport 2541 — назначает порт главного менеджера нового кластера.-port 2540 — назначает порт агента нового сервера.-range 2560:2591 — задает диапазон IP-портов, которые будут динамически выделяться под рабочие процессы кластера.-d "C:\Program Files\1cv8\srvinfo_new" — указывает путь к новому каталогу реестра кластера, который мы подготовили ранее.start= auto — настраивает автоматический запуск создаваемой службы при старте операционной системы.DisplayName= "..." — понятное имя службы, которое будет отображаться в стандартной оснастке Windows «Службы».После выполнения команды в консоли должно появиться сообщение об успешном создании службы: [SC] CreateService: успех.
По умолчанию созданная служба регистрируется с правами системы (Local System), однако для стабильной и безопасной работы СУБД и сервера 1С рекомендуется запускать ее под той же учетной записью, что и основной сервер.
services.msc).1C:Enterprise 8.3.15.1830 Server Agent.USR1CV8 и его пароль.Поскольку новая служба работает на нестандартных портах, клиентские приложения пользователей при обращении к серверу должны явно знать, на каком порту их ожидает агент сервера. При добавлении базы в список информационных баз на компьютерах пользователей укажем следующие параметры:
ИмяВашегоСервераИмяВашегоСервера:2541Обратите внимание, что указывать нужно именно порт менеджера кластера (в нашем примере это 2541), а не порт агента (2540).
Администрирование серверов 1С традиционно выполняется с помощью стандартной консоли MMC (файл 1CV8 Servers.msc). Однако в операционной системе Windows в один момент времени может быть зарегистрирована только одна библиотека удаленного администрирования radmin.dll, отвечающая за взаимодействие оснастки MMC с агентом сервера.
Если вы попытаетесь подключиться консолью администрирования к серверу версии 8.3.15, когда в системе зарегистрирована DLL-библиотека от версии 8.3.12, вы получите ошибку о несоответствии версий утилиты администрирования и сервера.
Для решения этой проблемы необходимо перерегистрировать соответствующую библиотеку в операционной системе перед запуском консоли. Сделать это можно с помощью создания простых файлов сценариев (бат-файлов) с расширением .bat.
Создадим файл admin_8.3.12.bat для переключения на старый сервер:
regsvr32 /s "C:\Program Files (x86)\1cv8\8.3.12.1780\bin\radmin.dll"
Создадим файл admin_8.3.15.bat для переключения на новый сервер:
regsvr32 /s "C:\Program Files\1cv8\8.3.15.1830\bin\radmin.dll"
Запуск этих файлов от имени Администратора перед открытием оснастки управления позволит быстро переключаться между администрированием старого и нового кластеров.
Если ручная регистрация через командную строку кажется вам слишком трудоемкой или вы опасаетесь допустить ошибку в синтаксисе кавычек и пробелов, можно воспользоваться готовыми решениями от сообщества. Существуют специализированные графические утилиты-регистраторы (например, доступные на порталах для разработчиков 1С, таких как Инфостарт).
Подобные программы предоставляют удобный графический интерфейс, где достаточно выбрать каталог с установленной новой платформой, указать желаемые порты и нажать одну кнопку. Утилита самостоятельно сгенерирует правильную строку запуска службы, автоматически создаст каталог реестра с нужными правами доступа и зарегистрирует службу в системе без риска опечаток.