При администрировании серверов 1С:Предприятие часто возникает ситуация, когда после штатного обновления платформы (например, с версии 8.3.20.xx на 8.3.22.xx) локальные клиенты начинают работать корректно, а при попытке входа через веб-браузер или при обращении к веб-сервисам возникает критическая ошибка. Текст ошибки обычно выглядит так:
HTTP: Conflict by reason: Различаются версии клиента и сервера (8.x.x.xx - 8.x.x.yy),
клиентское приложение: Модуль расширения веб-сервера
Давайте подробно разберем, почему возникает этот конфликт, проанализируем механизм работы связки «Веб-сервер — Платформа 1С» и рассмотрим пошаговые методы устранения этой неисправности для различных веб-серверов (Apache и IIS), а также организацию HTTP-сервисов.
Чтобы эффективно решить проблему, нам нужно понять её природу. Когда мы устанавливаем новую версию платформы 1С на сервер, старая версия часто остается в системе (в соседней папке). Веб-сервер (будь то Apache или IIS) использует специальные библиотеки (модули расширения) для взаимодействия с ядром 1С.
Ошибка возникает потому, что конфигурационный файл веб-сервера продолжает указывать на библиотеку (DLL или SO файл), лежащую в каталоге старой версии платформы (bin). При этом сама информационная база уже запущена под управлением новой версии агента сервера 1С. В результате веб-клиент (браузер) через старый модуль пытается подключиться к обновленному серверу, что и вызывает конфликт версий.
Рассмотрим несколько способов решения, от ручной правки до автоматизированных средств.
Если в качестве веб-сервера используется Apache (для установки которого на Windows можно использовать специальный PowerShell скрипт), настройки подключения модулей 1С хранятся в главном конфигурационном файле. Чаще всего это файл httpd.conf.
Давайте выполним следующие действия:
httpd.conf. Обычно он располагается в папке установки Apache, например: C:\Program Files\Apache Software Foundation\Apache2.4\conf\httpd.conf (путь может отличаться в зависимости от версии и ОС).LoadModule.Пример проблемной строки (указывает на старую версию):
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.18.1208/bin/wsap24.dll"
Нам необходимо изменить путь к библиотеке на актуальный каталог новой установленной платформы. Например, если мы обновились до версии 8.3.22.1709, строка должна выглядеть так:
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.22.1709/bin/wsap24.dll"
Важно: Обратите внимание на имя библиотеки. Для Apache 2.2 это будет wsap22.dll, для Apache 2.4 — wsap24.dll. В Linux-системах расширение файла будет .so.
После сохранения файла запустите службу Apache (для Astra Linux существует сценарий автоматизации установки 1С). Если вы используете Linux, команда перезапуска может выглядеть так:
sudo service apache2 restart
// или
/etc/init.d/apache2 restart
Более надежный способ, исключающий человеческий фактор при правке текстовых файлов — это повторная публикация базы. При этом 1С сама перезапишет пути к библиотекам в конфигурации веб-сервера.
Запустим Конфигуратор от имени администратора. Перейдем в меню Администрирование -> Публикация на веб-сервере. В открывшемся окне достаточно просто нажать кнопку «Опубликовать». Система спросит о перезапуске веб-сервера — соглашаемся. Это действие обновит ссылки на модули, используя текущую версию платформы, из которой запущен Конфигуратор.
Для системных администраторов, предпочитающих автоматизацию, или при работе на серверах без графического интерфейса (Linux), идеально подойдет утилита webinst. Она находится в папке bin установленной платформы.
Разберем пример команды для обновления публикации:
webinst -publish -apache24 -wsdir BaseName -dir "C:\inetpub\wwwroot\BaseName" -connstr "Srvr=ServerName;Ref=BaseName;"
Ключевой момент здесь — запускать эту утилиту нужно именно из папки новой версии платформы. Например:
"C:\Program Files\1cv8\8.3.22.1709\bin\webinst.exe" ...параметры...
Это гарантирует, что в конфиг веб-сервера пропишутся пути именно от версии 8.3.22.1709.
Если вы используете Microsoft Internet Information Services (IIS), процесс немного отличается, так как здесь нет единого текстового файла httpd.conf.
Посмотрим, что нужно проверить в консоли управления IIS:
1C Web Service Extension или имеет расширение *.1cws).isapi_1c8.dll в папке актуальной версии платформы.Также в IIS часто возникает проблема с разрядностью пула приложений. Если вы установили 64-битную версию платформы 1С, убедитесь, что в настройках пула приложений (Application Pool) для вашего сайта параметр «Разрешить 32-разрядные приложения» (Enable 32-bit Applications) установлен в значение False. И наоборот, если платформа 32-битная, а ОС 64-битная, этот параметр должен быть True.
После изменения настроек обязательно выполните перезапуск (Recycle) пула приложений или всего веб-сервера командой iisreset в командной строке.
Иногда проблема кроется не в самом веб-сервере, а в файле публикации конкретной базы — default.vrd. Этот файл находится в каталоге, который вы указывали при публикации базы.
Давайте откроем этот файл в текстовом редакторе и проанализируем его содержимое. Обратим внимание на строку соединения ib="...".
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/BaseName"
ib="Srvr="ServerName";Ref="BaseName";">
Если вы переносили базу на другой сервер или меняли параметры кластера, в этом файле могут остаться старые данные. Убедитесь, что параметры подключения соответствуют текущей конфигурации кластера 1С.
В редких случаях в теге <point> могут быть прописаны специфические требования к версии, хотя по умолчанию 1С их не ставит. Убедитесь, что там нет ограничений, привязанных к старому релизу.
Даже если на сервере все настроено верно, клиентская часть может «помнить» старые параметры. Рассмотрим, что нужно очистить, если ошибка сохраняется после настройки сервера.
Обычной очистки истории (Ctrl+F5) часто бывает недостаточно. Современные браузеры активно используют LocalStorage и SessionStorage.
Веб-сервер может кэшировать скомпилированные модули. Рекомендуется остановить веб-сервер и удалить временные файлы пользователя, от имени которого запущена служба веб-сервера. Для IIS это может быть папка C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files (путь зависит от версии .NET).
Ошибка «Conflict by reason: Различаются версии клиента и сервера» в 99% случаев означает, что веб-сервер загружает библиотеку расширения (DLL/SO) от старой версии платформы. Чтобы исправить это, выполните следующие шаги:
webinst.httpd.conf (для Apache) или в сопоставлении обработчиков (для IIS).Следуя этим инструкциям, вы сможете быстро восстановить доступ к веб-клиенту после обновления платформы.