Дай дернуть-2! Обращение к веб-сервисам с помощью подручных средств

Дай дернуть-2! Обращение к веб-сервисам с помощью подручных средств

Всем хорошего времени суток. Давно не писал я, ибо решал задачи государственной важности и было не до мудрых нравоучений подрастающему поколению ))) Давайте рассмотрим, как создать сервис и дернуть его с помощью замечательного расширения для хрома "Бумеранг".

ВВЕДЕНИЕ

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

ЧТО ЕСТЬ ВЕБ-СЕРВИС

Собственно, веб-сервис - это некое определение списка функций и их параметров через XSD схему, получаемую внешним приложением посредством HTTP-запроса к HTTP-серверу. В контексте 1С - это перечень определенных в 1С в качестве веб-сервиса функций, которые публикуются на HTTP-сервере (apach2/apache2.2/IIS) и доступны для внешних систем по соответствующей HTTP-ссылке. 1С прицепляет в конфиги серверов свою библиотеку, которая и коннектится к 1С, дергая ту или иную описанную в 1С функцию веб-сервиса.

Т.е. схема проста:

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

2. Администратор публикует веб-сервис из конфигуратора 1С на веб-сервере, после чего веб-сервер перезапускает.

3. Внешняя программа может получить доступ к описанию веб-сервиса по адресу http[s]://имя_веб-сервера:порт/имя_публикации/ws/имя_сервиса.1cws?wsdl

4. Внешняя программа может вызвать функцию веб-сервиса, передав посредством запроса POST тело запроса функции с параметрами и получить в ответ результат функции, который оная функция в языке 1С возвращает с помощью команды "возврат мой_результат".

СВАЯЕМ ПРОСТОЙ СЕРВИС

Итак, для того, чтобы сваять примитивный сервис, мы можем создать новую конфигурацию и прсто добавить новый сервис. Допустим, назовем его TestWs. Дальше добавим к нему операцию с названием ОперацияTestWs, у которой укажем параметр "ПараметрTestWs" с типом Строка. Вообще, стоит отметить, что параметры веб-сервисов и возвращаемые ими значения описываются типами XDTO-пакетов. Параметр типа "строка" (по-умаолчанию) будет описан, как "string (http://www.w3.org/2001/XMLSchema)".

Собственно, у нас получилось что-то такое:

Сразу хочется предупредить: если Вы нажмете на пиктограмке "Открыть" в поле "Имя процедуры" до того, как создадите параметр, то функция создастся без параметров. И если Вы после этого параметр добавите, то автоматически он в функцию не попадет - придется или удалять функцию, очищать поле "Имя процедуры" и заново нажимать "Открыть", или вручную добавлять имя параметра в модуль функции.

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

Таким образом мы производим неявное приведение типа по первому аргументу к строке. Осталось опубликовать и дернуть.

ПУБЛИКАЦИЯ

Те, кто использует операционную систему виндовс, могут зайти на веб-сервере в конфигуратор и что-то там нажать. Но т.к. я виндос на веб-серверах, серверах 1С и серверах баз данных в принципе не использую, то я, как настоящий мужик, буду все делать из командной строки (было бы чего делать. ). Итак, я пишу:

И, собственно, база у меня опубликовалась. Дальше я правлю vrd-файл, прописывая туда точку входа:

<?xml version="1.0" encoding="UTF-8"?><point xmlns="http://v8.1c.ru/8.2/virtual-resource-system" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" base="/testws" ib="Srvr=192.168.1.5;Ref=testws;" enable="false"> <ws> <point name="Testws" alias="testws.1cws" enable="true"/> </ws></point>

После этого перезапускаю веб-сервер:

В итоге, когда мы в адресной строке напишем что-то типа "http://localhost/testws/ws/testws.1cws?wsdl", то увидим что-то такое:

БУМЕРАНГ

Для того, чтобы вызвать веб-сервис, можно установить расширение для гугл-хрома - Бумеранг. Для этого в меню "Дополнительные инструменты" выберите "Расширения", там нажмите на "Еще расширения" и в строке поиска наберите "Boomerang". Установите его и запустите. Дальше добавьте новый проект:

Нажмите "Ок". В открывшемся окне нажмите на единственную кнопку, предлагающую создать сервис.

В верхнюю строку пропишите http://localhost/testws/ws/testws.1cws?wsdl, в нижнюю имя сервиса.

В итоге слева у вас появится имя сервиса и функция "ОперацияTestWs". Дальше нужно создать запрос. Для этого справа от Функции сервиса нажмите на "стрелочку", открывающую выпадающее меню. В этом меню выберите "Ctreate request".

В итоге у Вас справа отобразится запрос к сервису:

В запросе вместо знака "?" нужно указать параметр сервиса, который будет ему передан. Дальше нажмите справа кнопку "Send", после чего сервис возвратит Вам запрашиваемые данные:

Собственно, у нас тут дата и время - как в аптеке.

Немножно остановлюсь на последних двух скриншотах. На первом есть вкладка AUTH - на ней можно указать имя пользователя и пароль к сервису. Остальные вкладки мне не пригодились. Для указания параметров, передаваемых веб-сервису, используйте сгенерированный запрос и подставляйте параеметр вместо знака "?".

На втором скриншоте мы видим ответ сервиса. Слева есть три переключателя вариантов отображения: активный - квадрат - полный результат запроса. Глаз - отображение непосредственно результата. И этакий треугольник-самолетик - полный RAW-ответ с заголовками сервера. На закладке "HEADERS" находятся отдельно заголовки ответа сервера. Дальше направо идет информация о длине запроса, времени выполнения, ответе сервера (200 - успешно). Дальше закладка с запросом и закладка с ответом. Сверху в меню "POST" можно выбрать тип запроса (GET/PATCH/PUT/DELETE. ) - это все может работать для REST-API 1С.

Надеюсь, данная публикация будет полезна и прольет свет на тему веб-серсисов и доступа к ним, сделая тестирование сервисов простым и понятным делом.

📎📎📎📎📎📎📎📎📎📎