Можно ли подключать клиентов 1С к серверу с более высокой или низкой версией платформы? Разбираем проблему совместимости

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

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

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

Абсолютное требование к совпадению версий: почему ответ «Нельзя» — единственный верный

Давайте проанализируем базовые принципы взаимодействия компонентов платформы. При прямом клиент-серверном подключении по проприетарному протоколу TCP/IP действует жесткое, не подлежащее обходу архитектурное правило: версии клиентского приложения и сервера 1С должны совпадать абсолютно, вплоть до последнего знака номера сборки (релиза).

Рассмотрим конкретный пример. Если на сервере развернута служба «1С:Предприятия» версии 8.3.22.1709, то подключиться к ней напрямую сможет только клиентское приложение версии 8.3.22.1709. Если вы попытаетесь использовать даже максимально близкую версию, например 8.3.22.1704 или 8.3.22.1812, система незамедлительно заблокирует подключение и выдаст штатную системную ошибку:

«Несоответствие версий клиента и сервера (клиент: X.X.X.X, сервер: Y.Y.Y.Y)»

Никакой обратной или прямой совместимости между различными релизами исполняемых файлов в рамках прямого TCP-соединения разработчиками из компании 1С не заложено. Это обусловлено тем, что при каждом изменении релиза могут меняться внутренние структуры данных, форматы сериализации объектов и механизмы удаленного вызова процедур (RPC) между процессами 1cv8.exe (клиент) и rphost.exe (рабочий процесс сервера).

Разбираем иллюзию «совместимости»: как работает утилита запуска 1cestart

Иногда у системных администраторов или пользователей возникает ложное ощущение, что разные версии все-таки могут работать вместе. Например, когда на рабочем месте установлена новая платформа (например, 8.3.11), но подключение к серверу со старой платформой (например, 8.3.9) проходит успешно, а в окне «О программе» пользователь видит актуальный новый релиз.

Давайте выясним причину этого феномена. Здесь срабатывает встроенный интеллектуальный механизм утилиты запуска 1С:

  1. Пользователь запускает ярлык программы, который ведет на универсальный стартер — исполняемый файл 1cestart.exe.
  2. Утилита запуска обращается к файлу настроек информационной базы и опрашивает сервер 1С, выясняя, какая именно версия платформы там запущена.
  3. Если на компьютере пользователя установлены обе версии (и старая 8.3.9, и новая 8.3.11), стартер анализирует требования сервера, незаметно для пользователя находит на локальном диске исполняемый файл старой версии 8.3.9\bin\1cv8.exe и запускает именно его.
  4. Пользователь работает в штатном режиме. Но если заглянуть в окно «О программе» в запущенном сеансе, там будет отображаться именно та версия, которая запущена на сервере (то есть 8.3.9), а не та, которую администратор установил последней. Запустить исполняемый файл тонкого или толстого клиента версии 8.3.11 и подключить его напрямую к рабочему процессу rphost версии 8.3.9 технически невозможно.

Исключение из правил: работа через веб-сервер

Единственным сценарием, позволяющим абстрагироваться от ручной установки нужных версий платформы на компьютеры пользователей, является публикация баз данных на веб-сервере (под управлением Apache или IIS). Здесь возможны два варианта работы:

1. Веб-клиент (запуск через браузер)
Пользователи открывают базу данных через обычный интернет-браузер (Chrome, Firefox, Safari, Edge). В этом случае на компьютере пользователя платформа 1С может вообще отсутствовать. Однако помните, что модуль расширения веб-сервера (например, wsap24.dll для Apache), который осуществляет связь веб-сервера с кластером 1С, должен строго соответствовать версии самого сервера 1С.

2. Автоматическое обновление Тонкого клиента
Если пользователи работают через локально установленный Тонкий клиент, но подключаются к базе по протоколу HTTP/HTTPS через веб-сервер, система умеет автоматически контролировать версии. При обнаружении несоответствия версий Тонкий клиент не просто выдаст ошибку, а автоматически скачает с веб-сервера необходимый дистрибутив нужной версии, установит его в фоновом режиме и перезапустит сеанс. Для реализации этого сценария администратор должен предварительно настроить параметры в файле conf.cfg на сервере, указав путь к дистрибутивам в параметрах PublishDistributiveLocation.

Решение проблемы: настройка нескольких служб сервера 1С на одном хосте

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

Давайте подробно, по шагам, разберем процесс настройки такой схемы на примере операционной системы Windows.

Предположим, у нас уже успешно работает старая служба сервера 1С (версии 8.3.19.XXXX) на стандартных портах. Нам необходимо параллельно запустить новую службу (версии 8.3.22.XXXX) для баз БП.

Шаг 1. Установка второй версии платформы

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

Шаг 2. Определение свободных сетевых портов

Стандартная служба 1С использует следующие сетевые порты:

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

Шаг 3. Регистрация новой службы в Windows

Для создания новой независимой службы воспользуемся утилитой командной строки Windows sc.exe. Запустите командную строку (cmd) обязательно с правами Администратора и выполните команду создания службы.

Обратите внимание на синтаксис команды: после каждого знака равенства (=) обязательно должен идти пробел!


sc create "1C:Enterprise 8.3.22.1709 Server" binPath= "\"C:\Program Files\1cv8\8.3.22.1709\bin\ragent.exe\" -srvc -agent -regport 2541 -port 2540 -range 2560:2591 -d \"C:\ProgramData\1C\1cv8_custom_cluster\"" start= auto obj= "NT AUTHORITY\SYSTEM"

Разберем ключевые параметры этой команды подробнее:

Шаг 4. Настройка прав и первый запуск службы

Перед запуском созданной службы убедитесь, что у учетной записи, от имени которой она будет работать (в нашем примере это локальная система SYSTEM, но в продакшене лучше использовать выделенную доменную или локальную учетную запись типа USR1CV8), есть полные права на чтение и запись в каталог реестра новой службы (в нашем примере: C:\ProgramData\1C\1cv8_custom_cluster).

Откройте оснастку «Службы» (services.msc), найдите созданную службу, проверьте тип запуска (должен быть «Автоматически») и нажмите кнопку «Запустить».

Шаг 5. Регистрация нового кластера в консоли администрирования

Чтобы управлять новым сервером, вам потребуется зарегистрировать его в утилите администрирования серверов 1С:

  1. Откройте утилиту «Администрирование серверов 1С Предприятия». Обратите внимание, что версия самой консоли администрирования должна соответствовать регистрируемому кластеру.
  2. Нажмите правой кнопкой мыши на ветке «Центральные серверы 1С:Предприятия» и выберите «Создать» -> «Центральный сервер».
  3. В поле «Имя» укажите сетевое имя вашего сервера, а в поле «Порт» пропишите нестандартный порт агента, который мы задали при регистрации новой службы (в нашем примере — 2540).
  4. После этого вы сможете создавать новые информационные базы на этом кластере стандартным образом.

Шаг 6. Настройка подключения у клиентов

При добавлении информационной базы в список запуска у пользователей старой конфигурации (УТ) настройки подключения остаются прежними. А для пользователей новой конфигурации (БП) при указании адреса сервера в окне добавления базы необходимо явно прописать порт подключения:

Имя_Сервера_1С:2541

Обратите внимание: мы указываем именно порт главного менеджера кластера (2541), а не порт агента (2540).

Подводные камни: Проблема конфликта COM-соединений

Рассматривая совместную работу нескольких версий платформ на одном физическом сервере, нельзя обойти стороной проблему использования COM-соединений. Эта проблема неизбежно возникает, когда настроен прямой автоматический обмен данными между базами разных версий (например, регламентный обмен данными между нашей «Управлением торговлей» на старой платформе и «Бухгалтерией» на новой платформе).

При инициализации COM-соединения Windows обращается к системному реестру для поиска зарегистрированного класса V83.COMConnector. Проблема заключается в том, что в операционной системе Windows в один момент времени может быть зарегистрирована только одна библиотека COM-соединителя (последней установленной вами версии платформы).

Если внешнее соединение пытается подключиться к серверу 1С другой версии, отличной от зарегистрированной в реестре библиотеки, система выдаст ошибку несоответствия версий. Чтобы обойти это ограничение, мы рекомендуем настроить запуск COM-соединения в изолированном режиме «out-of-process» через Службу компонентов Windows (COM+):

  1. Откройте «Службы компонентов» Windows (вызовите dcomcnfg из строки «Выполнить»).
  2. Перейдите по пути: «Компьютеры» -> «Мой компьютер» -> «Приложения COM+».
  3. Создайте новое пустое приложение COM+ (выберите режим «Серверное приложение»).
  4. Внутри созданного приложения в ветке «Компоненты» добавьте новый компонент, выбрав регистрацию DLL-файла comcntr.dll из каталога bin той версии платформы 1С, к которой планируется выполнять подключение.
  5. В свойствах созданного COM+-приложения на вкладке «Удостоверение» укажите учетную запись Windows, имеющую достаточные права на запуск платформы 1С.

Такой подход позволит корректно маршрутизировать вызовы COM-объектов разных версий без возникновения конфликтов в реестре операционной системы.

← На главную