рубрики: Web-Сервисы | Дата: 1 июля, 2017
Итак, у нас есть работающий веб-сервер. Теперь самое время заняться разработкой и публикацией веб-сервисов.
Воспользуемся для этого бесплатной учебной версией платформы 1С, благо ограничений на работу с веб-сервисами в ней нет.
Открываем дерево конфигурации, ветка Общие, далее Web-сервисы, добавляем новый веб-сервис (назову его my_ws) и заполняем свойства как показано на рисунке.
Необходимо сделать несколько пояснений о свойствах веб-сервисов
Чтобы обеспечить функционирование веб-сервиса, необходимо создать для него операции, которые будут выполнять определенные действия, а при необходимости и возвращать нужные данные.
В качестве примера создадим для нашего веб-сервиса операцию, которая будет возвращать классическую фразу «Привет мир!». Назовем ее Hello:
В модуле веб-сервиса создадим функцию ПриветМир(), ссылку на которую вставим в соответствующее свойство операции.
Функция ПриветМир()
Возврат "Привет мир!";
КонецФункции
Но у этой операции есть один недостаток. В нее нельзя передавать исходные данные. Для этих целей в операциях веб-сервисов используется подчиненные им объекты — Параметры.
Добавим еще одну операцию — HelloUsr, и создадим для нее параметр Name.
Эта операция будет у нас возвращать приветствие пользователю при помощи вызова вот такой функции:
Функция ПриветПользователь(ИмяПользователя)
Возврат "Привет, " + ИмяПользователя + "!";
КонецФункции
Теперь у нас все готово для публикации веб-сервиса. Для этого необходимо зайти в конфигуратор под правами администратора. Щелкаем по ярлыку 1С правой кнопкой и выбираем соответствующий пункт меню:
В меню выбираем Администрирование —> Публикация на веб-сервере
В открывшемся окне прописываем имя публикации, отмечаем пункт Публиковать Web-сервисы и также отмечаем созданный нами веб-сервис:
Нажимаем Опубликовать, после чего надо перезапустить веб-сервер.
Для работы с веб-сервисами используется такой объект 1С как WS-ссылка. Она представляет собой WSDL описание веб-сервиса полученное путем импорта из источника на котором расположен веб-сервис. То есть в первую очередь нам надо знать адрес по которому мы сможем получить WSDL описание веб-сервиса. Применительно к нашему примеру в соответствии с настройками, которые мы делали в процессе создания и публикации веб-сервиса этот адрес будет выглядеть следующим образом
http://localhost/professia1c/ws/my_ws.1cws?wsdl
Рассмотрим из каких же частей состоит этот адрес.
После публикации веб-сервиса, для того чтобы убедиться, что он успешно опубликован, можно ввести адрес его WSDL описания в адресную строку браузера. При этом мы должны получить в окне браузера XML файл примерно вот такого содержания:
Работа с WS-ссылками возможна двумя способами:
Рассмотрим каждый из этих способов
В этом случае WS-ссылка создается программно. Продолжим наш пример и приведем текст процедуры, которая задействует операцию HelloUsr нашего веб сервиса:
&НаСервере
Процедура ПодключитьсяНаСервере()
ВСОпределение = Новый WSОпределения("http://localhost/professia1c/ws/my_ws.1cws?wsdl", "Сидоров", "");
ВСПрокси = Новый WSПрокси(ВСОпределение, "http://www.professia1c.ru/", "my_ws", "my_wsSoap");
ВСПрокси.Пользователь = "Сидоров";
ВСПрокси.Пароль = "";
ТекстВС = ВСПрокси.HelloUsr("Вася");
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ТекстВС;
Сообщение.Сообщить();
КонецПроцедуры
Как нетрудно догадаться, результатом выполнения этой процедуры будет текст в окне сообщения «Привет, Вася!»
Вместо программного создания объекта WSОпределения мы можем непосредственно в дереве конфигурации создать объект метаданных WS-ссылка. В процессе создания будет выведено окно с предложением указать адрес WSDL определения для его импорта:
После этого мы можем в коде ссылаться непосредственно на эту WS-ссылку. И процедура по обращению к веб-сервису примет вот такой вид:
&НаСервере
Процедура ПодключитьсяЧересСсылкуНаСервере()
ВСПрокси = WSСсылки.WSСсылка_my_ws.СоздатьWSПрокси("http://www.professia1c.ru/", "my_ws", "my_wsSoap");
ВСПрокси.Пользователь = "Сидоров";
ВСПрокси.Пароль = "";
ТекстВС = ВСПрокси.HelloUsr("Вася");
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ТекстВС;
Сообщение.Сообщить();
КонецПроцедуры
Спасибо за статью!
Всё написано очень доступным языком, всё разложено по полочкам!
А где обмен собственно??