Профессия — 1С

Рукопашный бой Карташ

Категории

Обмен данными через Web-Сервисы

рубрики: Web-Сервисы | Дата: 1 Июль, 2017

Итак, у нас есть работающий веб-сервер. Теперь самое время заняться разработкой и публикацией веб-сервисов.




Воспользуемся для этого бесплатной учебной версией платформы 1С, благо ограничений на работу с веб-сервисами в ней нет.

Добавление Web-сервиса в метаданные

Открываем дерево конфигурации, ветка Общие, далее Web-сервисы, добавляем новый веб-сервис (назову его my_ws) и заполняем свойства как показано на рисунке.

Необходимо сделать несколько пояснений о свойствах веб-сервисов

  • Пакеты XDTO — в этом поле указывается список пакетов XDTO, типы которых могут использоваться в значении, которое возвращается в результате выполнения операций веб-сервиса.
  • URI пространства имен — это строка, которая задает URI пространства имен для данного веб-сервиса. Любой веб-сервис можно однозначно идентифицировать по сочетанию его имени и пространству имен. Необходимо четко понимать, что это свойство не имеет ничего общего ни с физическим адресом веб-сервера, ни с сайтом органицации и т.д. Это просто некий виртуальный адрес. Поэтому присваивать надо внятное имя, которое сможет рассказать, например, об области расположения и применения веб сервиса. В частности может присутствовать аббревиатура типовой конфигурации к которой веб-сервис относится.

Операции веб-сервиса

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




В качестве примера создадим для нашего веб-сервиса операцию, которая будет возвращать классическую фразу «Привет мир!». Назовем ее Hello:

В модуле веб-сервиса создадим функцию ПриветМир(), ссылку на которую вставим в соответствующее свойство операции.




Функция ПриветМир()
	Возврат "Привет мир!";
КонецФункции

Но у этой операции есть один недостаток. В нее нельзя передавать исходные данные. Для этих целей в операциях веб-сервисов используется подчиненные им объекты — Параметры.




Добавим еще одну операцию — HelloUsr, и создадим для нее параметр Name.

Эта операция будет у нас возвращать приветствие пользователю при помощи вызова вот такой функции:




Функция ПриветПользователь(ИмяПользователя)
	Возврат "Привет, " + ИмяПользователя + "!";
КонецФункции

Публикация Web-сервиса

Теперь у нас все готово для публикации веб-сервиса. Для этого необходимо зайти в конфигуратор под правами администратора. Щелкаем по ярлыку 1С правой кнопкой и выбираем соответствующий пункт меню:

В меню выбираем Администрирование —> Публикация на веб-сервере

В открывшемся окне прописываем имя публикации, отмечаем пункт Публиковать Web-сервисы и также отмечаем созданный нами веб-сервис:

Нажимаем Опубликовать, после чего надо перезапустить веб-сервер.

WS-ссылки

Для работы с веб-сервисами используется такой объект 1С как WS-ссылка. Она представляет собой WSDL описание веб-сервиса полученное путем импорта из источника на котором расположен веб-сервис. То есть в первую очередь нам надо знать адрес по которому мы сможем получить WSDL описание веб-сервиса. Применительно к нашему примеру в соответствии с настройками, которые мы делали в процессе создания и публикации веб-сервиса этот адрес будет выглядеть следующим образом



http://localhost/professia1c/ws/my_ws.1cws?wsdl

.

Рассмотрим из каких же частей состоит этот адрес.

  • http://localhost/ — это адрес указывает на физическое расположение веб-сервера. Так как у меня он находится на локальной машине, то localhost, а на практике это либо IP-адрес сервера, либо его имя
  • professia1c — это имя публикации. Мы его вводили в поле Имя в диалоговом окне, когда публиковали веб-сервис
  • ws — признак того, что мы обращаемся к веб сервису
  • my_ws.1cws — имя файла публикации, которое мы указывали в свойствах при создании веб-сервиса
  • ?wsdl — параметр, который указывает, что нам нужно получить WSDL описание

После публикации веб-сервиса, для того чтобы убедиться, что он успешно опубликован, можно ввести адрес его WSDL описания в адресную строку браузера. При этом мы должны получить в окне браузера XML файл примерно вот такого содержания:

Работа с WS-ссылками возможна двумя способами:

  1. Использование динамической ws-ссылки.
  2. Создание статической ws-ссылки.

Рассмотрим каждый из этих способов

Динамические WS-ссылки

В этом случае WS-ссылка создается программно. Продолжим наш пример и приведем текст процедуры, которая задействует операцию HelloUsr нашего веб сервиса:




&НаСервере
Процедура ПодключитьсяНаСервере()

	ВСОпределение = Новый WSОпределения("http://localhost/professia1c/ws/my_ws.1cws?wsdl", "Сидоров", "");
	ВСПрокси = Новый WSПрокси(ВСОпределение, "http://www.professia1c.ru/", "my_ws", "my_wsSoap");

	ВСПрокси.Пользователь = "Сидоров";
	ВСПрокси.Пароль = "";

	ТекстВС = ВСПрокси.HelloUsr("Вася");

	Сообщение = Новый СообщениеПользователю;
	Сообщение.Текст = ТекстВС;
	Сообщение.Сообщить();

КонецПроцедуры

Как нетрудно догадаться, результатом выполнения этой процедуры будет текст в окне сообщения «Привет, Вася!»

Статические WS-ссылки

Вместо программного создания объекта WSОпределения мы можем непосредственно в дереве конфигурации создать объект метаданных WS-ссылка. В процессе создания будет выведено окно с предложением указать адрес WSDL определения для его импорта:

После этого мы можем в коде ссылаться непосредственно на эту WS-ссылку. И процедура по обращению к веб-сервису примет вот такой вид:




&НаСервере
Процедура ПодключитьсяЧересСсылкуНаСервере()

	ВСПрокси = WSСсылки.WSСсылка_my_ws.СоздатьWSПрокси("http://www.professia1c.ru/", "my_ws", "my_wsSoap");

	ВСПрокси.Пользователь = "Сидоров";
	ВСПрокси.Пароль = "";

	ТекстВС = ВСПрокси.HelloUsr("Вася");

	Сообщение = Новый СообщениеПользователю;
	Сообщение.Текст = ТекстВС;
	Сообщение.Сообщить();

КонецПроцедуры

Один комментарий на «“Обмен данными через Web-Сервисы”»

  1. Сергей:

    Спасибо за статью!
    Всё написано очень доступным языком, всё разложено по полочкам!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

   

2018г. Профессия — 1С. Обмен опытом по программированию в 1С