Как опубликовать веб-сервис на платформе 1С:Предприятие 8.1

Программист IT и автоматизация бизнеса
← На главную

Несмотря на то что платформа 1С:Предприятие 8.1 давно считается устаревшей, задачи по интеграции существующих систем на этой версии с современными сервисами до сих пор актуальны. В отличие от современных версий 8.3, где публикация выполняется парой кликов в конфигураторе, в версии 8.1 этот процесс требует глубокого понимания архитектуры веб-серверов и ручной правки конфигурационных файлов. Рассмотрим подробно, как развернуть веб-сервис и с какими подводными камнями можно столкнуться.

Подготовка окружения и выбор веб-сервера

Первое, что мы должны проанализировать, — это совместимость программного обеспечения. Платформа 1С 8.1 была спроектирована под стандарты своего времени, поэтому попытка использовать современный Apache 2.4 или 64-битные системы приведет к ошибкам. Разберем основные требования:

  1. Разрядность: Платформа 1С 8.1 существует только в 32-битном (x86) исполнении. Следовательно, веб-сервер (Apache или IIS) обязательно должен быть 32-битным. 64-битный сервер не сможет загрузить 32-битные динамические библиотеки 1С (dll).
  2. Версия Apache: Модуль расширения веб-сервера для 1С 8.1 (wsap22.dll) предназначен строго для Apache версии 2.2. Если вы используете более старый Apache 2.0, вам понадобится файл wsap2.dll. Использование версии 2.4 практически невозможно без сложной перекомпиляции модулей.
  3. Зависимости: Убедитесь, что в системе установлены пакеты Microsoft Visual C++ Redistributable тех лет, иначе модули 1С просто не инициализируются в памяти сервера.

Создание и структура дескриптора веб-сервиса (.1cws)

При выборе публикации в конфигураторе 1С 8.1 создает файл с расширением .1cws. Это XML-дескриптор, который служит связующим звеном между веб-сервером и информационной базой. Проанализируем типичное содержимое этого файла:


<?xml version="1.0" encoding="UTF-8"?>
<service namespace="http://www.tu.ru" name="CorpDocChek" connectString="Srvr='172.16.0.184';Ref='cop';"/>

Разберем важные параметры внутри дескриптора:

Важно: Обратите внимание на кавычки. Внутри XML-атрибута connectString значения параметров должны быть выделены одинарными кавычками или экранированы, чтобы не нарушить структуру XML-документа.

Настройка веб-сервера Apache 2.2

После того как файл дескриптора создан, нам необходимо вручную обучить Apache работать с ним. Для этого мы должны отредактировать файл httpd.conf. Выясним, какие строки необходимо добавить для корректной работы.

Сначала загружаем модуль расширения 1С. Указываем полный путь к библиотеке в каталоге установки 1С:

LoadModule _1cws_module "C:/Program Files (x86)/1cv81/bin/wsap22.dll"

Если при запуске Apache выдает ошибку "the request operation has failed", это первый сигнал о том, что либо путь к wsap22.dll указан неверно, либо разрядность Apache (64-бит) не совпадает с разрядностью библиотеки (32-бит).

Затем создаем блок управления доступом и обработчик для нашего сервиса. Рассмотрим пример конфигурации:


<Location /MyBase/ws>
    DirectorySlash Off
    SetHandler 1c-application
    ManagedWebServiceDescriptor "C:/inetpub/wwwroot/MyBase/service.1cws"
    Allow from all
</Location>

Разберем, что здесь происходит:

Публикация на Internet Information Services (IIS)

Если настройка Apache кажется слишком трудоемкой, можно использовать IIS. В 1С 8.1 для этого применяется библиотека wsisu.dll. Проанализируем этапы настройки на IIS:

  1. Создаем новый виртуальный каталог в консоли управления IIS.
  2. В разделе "Типы MIME" (MIME Types) добавляем расширение .1cws с типом text/xml.
  3. В "Сопоставлении обработчиков" (Handler Mappings) добавляем новый скрипт для расширения .1cws, указывая путь к wsisu.dll в папке bin платформы 1С.
  4. Разрешаем выполнение расширений веб-служб (ISAPI) в настройках безопасности IIS.

Права доступа и переменные окружения

Часто после настройки конфигурационных файлов сервис все равно не работает. Выясним причину, которая обычно кроется в правах доступа. Пользователь, от имени которого работает служба веб-сервера (в Apache это обычно SYSTEM, в IIS — IUSR или AppPoolIdentity), должен иметь следующие права:

Также рекомендуется добавить путь к папке bin платформы 1С в системную переменную PATH. Это необходимо, так как библиотека wsap22.dll может динамически подгружать другие компоненты из своего окружения, и если они не будут найдены, модуль не загрузится.

Проверка работоспособности

Для проверки правильности публикации откройте браузер и введите адрес:

http://имя_сервера/MyBase/ws/ИмяВебСервиса?wsdl

Если вы видите структуру XML с описанием методов и типов данных — поздравляем, публикация прошла успешно. Если же браузер выдает ошибку 403 или 500, необходимо вернуться к проверке прав доступа и корректности путей в файле httpd.conf.

← На главную