Как исправить ошибку «Различаются версии клиента и сервера» при обращении к OData и веб-сервисам 1С?

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

При настройке интеграций через протокол OData, вызове HTTP- или Web-сервисов, а также при запуске веб-клиента системные администраторы и разработчики нередко сталкиваются с ошибкой уровня протокола HTTP: HTTP 409 Conflict. В описании исключения обычно указывается текст: Различаются версии клиента и сервера (номер_версии_1 - номер_версии_2), клиентское приложение: Модуль расширения веб-сервера. Разберем детально, почему возникает данный сбой в архитектуре платформы «1С:Предприятие» и как его быстро устранить.

Архитектурная причина ошибки

Проанализируем механизм взаимодействия веб-сервера и платформы 1С. Когда внешний потребитель обращается к OData или веб-сервису, веб-сервер (будь то Apache или IIS) не взаимодействует с базой данных или СУБД напрямую. Связующим звеном выступает специальная библиотека платформы — Модуль расширения веб-сервера.

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

Способ 1. Повторная публикация информационной базы через Конфигуратор

Рассмотрим самый простой и распространенный способ решения, который автоматически обновляет параметры сопоставления библиотек.

  1. Запустим Конфигуратор информационной базы под управлением новой версии платформы (в режиме «От имени администратора»).
  2. Перейдем в главное меню: пункт Администрирование → Публикация на веб-сервере....
  3. Проверим имя публикации и каталог, в котором размещен файл default.vrd.
  4. Убедимся, что установлены флаги для необходимых сервисов (включая Публиковать стандартный интерфейс OData).
  5. Нажмем кнопку Опубликовать. При наличии предупреждения о перезапуске веб-сервера соглашаемся с выполнением операции.

В процессе публикации Конфигуратор перезапишет конфигурационные параметры веб-сервера, указав пути к библиотекам актуального релиза платформы 1С.

Способ 2. Ручная правка конфигурационного файла Apache

Если веб-сервер Apache развернут отдельно или нет возможности оперативно открыть Конфигуратор, разберем ручную корректировку конфигурации.

  1. Откроем основной файл конфигурации веб-сервера httpd.conf в текстовом редакторе с правами администратора. Обычно он располагается в подкаталоге conf установленного Apache.
  2. Найдем директиву подключения модуля расширения 1С: LoadModule _1cws_module "C:/Program Files/1cv8/8.3.25.1374/bin/wsap24.dll"
  3. Изменим путь к библиотеке, указав каталог новой версии платформы 1С: LoadModule _1cws_module "C:/Program Files/1cv8/8.3.27.1859/bin/wsap24.dll"
  4. Сохраним изменения в файле httpd.conf.
  5. Перезапустим службу веб-сервера Apache через консоль служб Windows или командную строку, чтобы изменения вступили в силу.

Способ 3. Автоматизация публикации через утилиту webinst

При администрировании серверов без графического интерфейса, на операционных системах Linux, а также в сценариях автоматического развертывания рекомендуется использовать штатную утилиту webinst. Она находится в каталоге bin установленной версии платформы.

Посмотрим на ключевое правило: запускать утилиту необходимо строго из каталога той платформы, на которую выполняется переход. В этом случае утилита гарантированно зарегистрирует модуль нужного релиза и правильной битности (32 или 64 бита).

  1. Откроем командную строку от имени администратора.
  2. Перейдем в каталог новой платформы: cd "C:\Program Files\1cv8\8.3.27.1859\bin"
  3. Выполним публикацию базы с перезаписью настроек (параметр -publish):
    
    webinst -publish -apache24 -wsdir BaseName -dir "C:\inetpub\wwwroot\BaseName" -connstr "Srvr=Server1C;Ref=BaseName;" -confpath "C:\Apache24\conf\httpd.conf"
    

Особенности для веб-сервера Microsoft IIS

Если в качестве веб-сервера задействован IIS, обратим внимание на следующие технические нюансы:

  1. Обработчик ISAPI: Подключение 1С осуществляется через библиотеку wsisapi.dll. Путь к ней прописывается в разделе Сопоставления обработчиков (Handler Mappings) в файле web.config каталога публикации или глобально в applicationHost.config. При обновлении путь к wsisapi.dll должен указывать на новый релиз.
  2. Очистка кэша рабочих процессов: Процессы IIS (w3wp.exe) могут удерживать старые DLL-библиотеки в оперативной памяти. После переопубликации перезапуска только сайта может оказаться недостаточно — выполним перезапуск соответствующего пула приложений либо перезапустим весь веб-сервер командой: iisreset
  3. Разрядность пула приложений: Обязательно контролируем соответствие битности пула приложений и используемой библиотеки. Для 64-разрядной wsisapi.dll параметр пула приложений Разрешены 32-разрядные приложения (Enable 32-Bit Applications) должен иметь значение False.

Особенности при работе на Linux

В среде Linux модуль расширения представляет собой файл с расширением .so (например, wsap24.so) и располагается по пути /opt/1cv8/x86_64/<номер_версии>/. При обновлении платформы и смене версий важно убедиться, что у системного пользователя, от имени которого работает веб-сервер (обычно www-data или apache), присутствуют права на чтение и исполнение (rx) для каталога новой версии платформы и файла модуля.

← На главную