HTTP Сервисы: Путь к своему сервису. Часть 1
Уже много было написано про http-сервисы, но то и дело всплывают «Новые» статьи по обмену между базами V8 по COM, что «Немножко» удивляет. Решил внести свои 5 копеек, поработаем с http-сервисом.
- Описание
- Подробнее
Описание
Я уже писал статью с использованием HTTP-сервисов (Мобильный клиент + HTTP Сервис + Расширение конфигурации), но там было все сумбурно без объяснений, почему именно так. В данном цикле статей расскажу и покажу в примерах накопленный опыт в данном вопросе, и мы сделаем простой легко разворачиваемый каркас HTTP-сервиса.
Примеры будут сделаны в расширении конфигурации, на платформе 8.3.10.2650. Для опытов установил ERP 2.4.3.145(Но вообще непринципиально, ставим любую свежую конфигурацию под 8.3.10). Так как параллельно в свободное время веду разработку универсального решения под названием Pretty API или «PAPI», расширение будет содержать данную аббревиатуру.
Начнем.
Почему http-сервис?
А) HTTP сервисы на платформе 1С 8.3.5.1068 появились летом 2014 года, то есть 4 года назад, а Web-сервисы и того больше. Это кощунство не использовать их до сих пор.
Б) На Хабре в официальном блоге Фирмы 1С есть статья Способы интеграции с 1С от 25 августа 2016, почитайте ее, особенно в части устаревших технологий.
В) Геморрои с разными версиями и «comcntr.dll» забываем как страшный сон! Опубликовали и пользуемся, плюсом мы получаем Веб клиент, мобильный клиент, легкое использование нашего сервиса другими программистами (собственно, API) и другие пряники.
Г) Скорость! Использую Com последние 3 года только для того чтобы показать сравнение со стандартным интерфейсом oData или http-сервисом. Когда люди видят вживую, они даже иной раз не верят, что обмен прошел!
Это все равно, что ездить каждый год на поезде по 3 суток в сторону Сочи и вдруг слетать на самолете за 2,5 часа.
!!! Использование технологии COM (доступно только на платформе Windows) !!!
Д) С версии 8.3.7.1759 могут быть встроены через расширение, а с версии 8.3.9 плюсом к ним можно встроить модули для более простой работы с ними.
E) Простота и гибкость разработки.
Ж) Стагнация — это плохо! В работе можешь не использовать, но быть всегда готов. Нельзя стоять на месте, если пошел в IT сферу.
Еще много чего можно перечислить. Минусы, тоже есть, но плюсов в разы больше.
Самый главный минус. Нужно установить и настроить веб сервер (IIS, Apache, 1С: Публикатор или 1С: Линк – Apache с интерфейсом для простого пользователя). Тут вот в чем проблема: чаще всего администраторы почему-то не в состоянии это сделать, и приходится настраивать самому, либо они тупо устанавливают по дефолту и там начинаются пляски с бубном. Благо сейчас статей по настройки пруд пруди, ниже приведу парочку загугленных:
Пошаговая инструкция настройки web-сервисов для 1Сv8.3 и IIS 8.5, в данной инструкции особенно выделю пункт 8.
Настройка веб сервера Apache + 1С (Пошаговое руководство)
Лично я использую IIS, но на вкус и цвет как говорится.
Ближе к делу.
Создадим демо конфигурацию для опытов и добавим в него расширение. Можно создавать все объекты и не в расширении, я просто показываю вариант без изменения конфигурации. (В расширении добавление HTTP-сервисов появилось с версии 8.3.7.1759.)

Давайте перед созданием нашего HTTP-сервиса разберемся из чего складывается URL (подробнее описано на ИТС в главе 17.2.2. HTTP-сервисы):
http://host/base/hs/корневойURL/относительныйURL?ПараметрыЗапроса
host – IP адрес или доменное имя веб сервера.
base – Имя базы. Указывается при публикации.
hs — признак того, что выполняется обращение к HTTP-сервису.
корневойURL — имя ресурса, которое определяет группу ресурсов, связанных общим смыслом.
относительныйURL — определяет ресурс, к которому будет выполняться обращение. Относительный URL, указанный в запросе, будет использован для определения конкретного ресурса, к которому выполнялось обращение. Правило сопоставления задается в объекте Шаблон URL.
ПраметрыЗапроса – Не всегда обязательные параметры передаются после знака «?», чаще всего дополнительные параметры или параметры выборки, например формат ответа(format=json или format=atom).
Теперь по порядку:
Создаем сервис и задаем ему корневойURL:
Создаем Шаблон URL:

При создании шаблона можно использовать следующие символы:
Любые символы, допустимые в идентификаторах языка «1С:Предприятие».
Символ «/»;
Символы «{}» с непустым текстом между ними;
Символ *.
Наш шаблон выглядит следующим образом: /V1/{ИмяМетода}
Где {ИмяМетода} является параметром. Параметр может состоять из букв, цифр и символа подчеркивания «_».
Почему такой шаблон?
Когда смотришь различные примеры, коих очень много в шаблоны запихивают параметры. Создают по несколько методов с разными параметрами. А зачем так делать?
Вот пример с ИТС (17.2.2.3.2. Работа с документами):

Видно, что создано два Шаблона с методом Get, но по большому счету отличаются они только тем, что один ищет по номеру документ, а второй выводит все.
Все это можно реализовать одним методом, список или документ подавать в параметр ИмяМетода, а дополнительными параметрами передавать номер. А давайте сделаем!
Добавляем метод GET.

Берем код из примера ИТС.

