При ведении нескольких проектов на одном сервере разработчика часто возникает ситуация, когда клиенты используют разные версии платформы 1С:Предприятие. Стандартный механизм работы с хранилищем через протокол HTTP требует жесткого совпадения версии платформы на стороне сервера хранилища и на стороне клиента. В данной статье мы разберем, как преодолеть это ограничение и обеспечить гибкость при разработке.
Основная сложность заключается в том, что сервер хранилища конфигураций (crserver.exe) жестко привязан к конкретному релизу платформы. Если клиент пытается подключиться к хранилищу, версия платформы которого отличается от его локальной, возникают ошибки соединения. Поскольку оперативное обновление платформы у всех клиентов одновременно зачастую невозможно из-за внутренних регламентов крупных организаций, нам необходимо техническое решение, позволяющее «развести» версии.
Самым эффективным способом является запуск нескольких экземпляров службы хранилища на одном физическом или виртуальном сервере, где каждый экземпляр отвечает за свою версию платформы. Рассмотрим, как это реализовать по шагам.
Если сервер хранилища уже работает, убедитесь, что он запущен как служба Windows. Для создания первого хранилища (если оно еще не настроено) используйте утилиту crserver.exe из каталога bin нужной версии платформы:
"C:\Program Files\1cv8\8.3.13.1063\bin\crserver.exe" -instsrvc -d c:\1c.repo -usr .\USR1CV8 -pwd 123
"C:\Program Files\1cv8\8.3.13.1063\bin\crserver.exe" -start
Чтобы запустить второе хранилище (например, для платформы версии 8.3.18), необходимо создать вторую службу Windows с уникальным именем и прописать использование другого сетевого порта. Выполните следующие действия:
sc create "1C:Enterprise 8.3 Configuration Repository Server 2" binpath="C:\Program Files\1cv8\8.3.18.1128\bin\crserver.exe -instsrvc -d c:\1c.repo2 -port 1642"
regedit. Найдите ветку службы и измените значение параметра port с 1542 (стандартный) на свободный, например 1642.services.msc).Теперь, при настройке подключения в конфигураторе 1С, клиент должен указывать строку соединения с учетом нового порта. Например, вместо стандартного пути, используется адрес с явно заданным портом:
tcp://dev1c01:1642/erp
Это позволит клиентам, использующим платформу 8.3.18, работать со своим выделенным сервером хранилища, не конфликтуя с остальными.
Если запуск множества серверов хранилищ кажется избыточным, рекомендуем рассмотреть переход на использование файлов поставки конфигурации (.cf). Это избавляет от зависимости от «живого» хранилища при каждом изменении:
.cf файл из хранилища разработчика.1cv8.exe /ConfigurationLoad ....Такой подход считается «взрослым» методом разработки, так как он позволяет проводить тестирование перед выпуском обновления и обеспечивает стабильность клиентских баз, исключая риск получения «нерабочего» кода из хранилища в момент активной разработки.
Если вы планируете публиковать эти хранилища через веб-сервер (IIS):
wsisapi.dll для каждой установленной версии платформы в разделе «Ограничения ISAPI и CGI».Это позволит избежать конфликта версий библиотек в оперативной памяти одного веб-сервера.