При разработке некоторых веб-проектов, требуется их связь с корпоративной системой учета. Чаще всего такой системой является 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: