Январь 06, 2013
Настройка поддержки web-сервисов 1С 8.1 для Apache под Windows

При разработке некоторых веб-проектов, требуется их связь с корпоративной системой учета. Чаще всего такой системой является 1С:Предприятие.

1С:Предприятие версии 8 обладает механизмом web-сервисов, который является средством поддержки сервисно-ориентированной архитектуры, являющейся современным стандартом интеграции приложений и информационных систем.

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

Для того чтобы тестировать связку веб-приложения и 1С:Предприятия во время разработки, у меня были в наличии такие инструменты:
- VirtualBox 4.2.4;
- На виртуальной машине Windows 7, Apache 2.2.22 и 1С:Предприятие 8.1.

Я опишу, как я производил настройку поддержки веб-сервисов 1С:Предприятия для apache. Apache у меня установлен при помощи известного пакета "Денвер", но для других сборок настройка будет отличаться незначительно.

Во-первых, на этапе установки 1С:Предприятия нужно включить компонент "Адаптер Web-сервисов", чтобы обеспечить установку необходимых dll-библиотек:

Настройка Apache

Добавим в конфигурационный файл apache (в случае денвера это "Z:\usr\local\apache\conf\httpd.conf") регистрацию модуля обработки веб-сервисов 1С:Предприятия:


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

Создадим каталог, в котором будут располагаться файлы веб-сервисов. У меня это "Z:\home\web1c". Добавим виртуальный хост, который будет указывать на созданный каталог (также в файле httpd.conf):


<VirtualHost *:80>
    ServerAdmin admin@example.com
    DocumentRoot "Z:/home/web1c"
    ServerName web1c
    ServerAlias www.web1c  
	
    <Directory "Z:/home/web1c">
        DirectorySlash Off
        SetHandler 1cws-process
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

И добавим в файл C:\Windows\System32\drivers\etc\hosts строчку:


127.0.0.1 web1c

Создание и вызов веб-сервиса

Для проверки создадим простой веб-сервис, складывающий два числа.

Код модуля веб-сервиса:


Функция Add(Num1, Num2)
    Возврат Num1 + Num2
КонецФункции

Опубликуем веб-сервис в директории Z:\home\web1c, выбрав в меню "Администрирование"->"Публикация Web-сервисов":

Запустим apache и проверим, что при открытии адреса http://web1c/ws-test.1cws?wsdl открывается wsdl-описание созданного веб-сервиса:

Теперь проверим вызов созданного веб-сервиса с помощью python-библиотеки suds. Так как у меня настроен проброс портов на виртуальную машину, я могу вызвать веб-сервис прямо из хост системы, добавив в файл /etc/hosts строчку "127.0.0.1 web1c" и обратившись к веб-сервису по адресу http://web1c:8180/ws-test.1cws?wsdl:

Теги: ,
Добавить комментарий:
Комментариев: (2)
Рейтинг: 0 Опубликовал Петр 1693 дн. назад
Не нравится Нравится
Добрый день, http://web1c:8180/ws-test.1cws?wsdl - это локальная ссылка, вне локальной машины(сети) не видна?
Рейтинг: 0 Опубликовал admin 1422 дн. назад
Не нравится Нравится
Видна, если на другом компьютере вписать в /etc/hosts, чтобы для адреса web1c обращение происходило к тому компьютеру, где стоит виртуальная машина с 1С.
Опубликовать