20 сент. 2013 г.

Настройка IIS 7 и Apache 2.2 для работы с web-сервисами 1С


Используемая платформа 1С: 8.2.18.109
ОС: Windows Server 2008 R2

IIS 7


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

Диспетчер сервера – Роли – Добавить – Веб сервер (IIS)



В моем случае была русская версия ОС, поэтому названия все на русском. Красным жирным выделено то что я устанавливал вручную, т.е. по-умолчанию было выключено. При установке web-сервера проставить галочки:
Основные возможности HTTP:
  • Статическое содержимое
  • Стандартный документ
  • Обзор каталогов
  • Ошибки HTTP
Разработка приложений:
  • Расширения ISAPI 
  • Фильтры ISAPI
Работоспособность и диагностика:
  • Ведение журнала HTTP 
  • Монитор запросов
Безопасность:
  • Фильтрация запросов
Производительность:
  • Сжатие статического содержимого
Средства управления:
  • Консоль управления IIS
  • Сценарии и средства управления IIS
Совместимость управления IIS 6: 
  • Совместимость метабазы IIS 6 
  • Совместимость WMI в IIS 6 
  • Службы сценариев IIS 6

Создаем папку: в %SystemDrive%/inetpub/wwwroot/Test

При публикации веб сервиса из 1С указываем именно эту папку.

Apache 2.2


Заходим на официальный сайт: www.apache.org и там ищем установочный пакет сервера.
Грабли: если искать в гугле по "apache download", то получим нерабочую ссылку.
Устанавливаем apache.
Идем в каталог: C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf
Перед нажатием в конфигураторе 1С кнопки "Опубликовать", нужно прописать путь в поле "Каталог", который указан в файле httpd.conf - DocumentRoot.
В файле httpd.conf изменяем(добавляем):
  1. LoadModule _1cws_module "C:/Program Files (x86)/1cv82/8.2.18.61/bin/wsap22.dll"
  2. ServerAdmin admin@domen.net
  3. DocumentRoot "E:/www/"
  4. # For 1c Server
    Alias "/ws" "E:/www/ws"
    <Location /ws>
        DirectorySlash Off
        # SetHandler 1cws-process - так было раньше, а сейчас так:
        SetHandler 1c-application
        Allow from all
    </Location>
  5. #
    # This should be changed to whatever you set DocumentRoot to.
    #
    <Directory "E:/www">
  6. #
    # "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/cgi-bin" should be changed to whatever your ScriptAliased
    # CGI directory exists, if you have that configured.
    #
    <Directory "E:/www/cgi-bin">
Каталог "E:/www" в общем случае произвольный. Рекомендую не использовать в названии папок кириллицу и спец. символы.

Запускаем службу.

Если не запускается ошибки смотрим в "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\logs\error.log" или журнале событий Windows.
 

Настройка и тестирование


Публикуем веб-сервис. Проверяем права доступа к объектам, которые будут использоваться веб-сервисом на уровне конфигурации 1С.

Для проверки смотрим в браузере путь:
http://[ip веб-сервера]/[имя базы 1С ]/ws/[имя файла публикации (смотрим в свойствах веб-сервиса 1с)]?wsdl
Если видим XML, значит все прошло успешно.


Проверяем кодом из 1С:
Пояснение к коду:
TestWeb - Имя сервиса 1С из конфигуратора.
GetPhoneNumber - имя операции веб-сервиса из конфигуратора. Использует входящий параметр tel, тип string. Код 1C для GetPhoneNumber: Возврат "tel из 1С: " + tel;
test - имя пользователя 1С с полными правами (авторизация 1С, т.е. используя пароль).
test - пароль пользователя 1С.

ВСДЛ = "http://192.168.2.189/latch_local/ws/xxx.1cws?wsdl";
Пользователь = "test";
Пароль = "test";

Определения = Новый WSОпределения(ВСДЛ, Пользователь, Пароль);
Для каждого Сервис Из Определения.Сервисы Цикл
    Сообщить(Сервис.Имя);
    Сообщить(Сервис.URIПространстваИмен);
КонецЦикла;

//Создаем прокси для обращения к внешнему веб-сервису,
// передаем в функцию URI пространства имен, имя сервиса, имя порта.
Прокси = Новый WSПрокси(Определения, "odines.blogspot.com", "TestWeb", "TestWebSoap");
Прокси.Пользователь = "test";
Прокси.Пароль = "test";
Сообщить(Прокси.GetPhoneNumber("0509999999"));

Возвращает:
TestWeb
odines.blogspot.com
tel из 1с: 0509999999

Есть пример на сайте infostart.ru для тестирования веб-сервиса из html. Если будет интересно могу дополнить статью.

Спасибо за внимание!

1 комментарий:

  1. Если выводит сообщение «Unable to open Logs», то это сигнализирует о том, apache не имеет доступа к лог-файлам, определенным директивами ErrorLog и CustomLog в файле httpd.conf. Необходимо проверить корректно ли указаны путь и имена лог-файлов, и имеет ли пользователь от которого запускается Apache права на чтение и запись данных файлов.

    ОтветитьУдалить