Используемая платформа 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 изменяем(добавляем):
- LoadModule _1cws_module "C:/Program Files (x86)/1cv82/8.2.18.61/bin/wsap22.dll"
- ServerAdmin admin@domen.net
- DocumentRoot "E:/www/"
- # For 1c Server
Alias "/ws" "E:/www/ws"
<Location /ws>
DirectorySlash Off
# SetHandler 1cws-process - так было раньше, а сейчас так:
SetHandler 1c-application
Allow from all
</Location> - #
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "E:/www"> - #
# "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">
Запускаем службу.
Если не запускается ошибки смотрим в "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\logs\error.log" или журнале событий Windows.
Настройка и тестирование
Публикуем веб-сервис. Проверяем права доступа к объектам, которые будут использоваться веб-сервисом на уровне конфигурации 1С.
Для проверки смотрим в браузере путь:
http://[ip веб-сервера]/[имя базы 1С ]/ws/[имя файла публикации (смотрим в свойствах веб-сервиса 1с)]?wsdl
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 - Имя сервиса 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. Если будет интересно могу дополнить статью.
Спасибо за внимание!
Если выводит сообщение «Unable to open Logs», то это сигнализирует о том, apache не имеет доступа к лог-файлам, определенным директивами ErrorLog и CustomLog в файле httpd.conf. Необходимо проверить корректно ли указаны путь и имена лог-файлов, и имеет ли пользователь от которого запускается Apache права на чтение и запись данных файлов.
ОтветитьУдалить