При выходе платформы 8.3.5 появилось желание переделать в уже готовом мобильном приложении соединение клиента с сервером из Web на HTTP-сервисы. На то было много причин, и говорить о них в рамках этой статьи, думаю, будет неуместно.
Но когда казавшуюся тогда простую задачу я попробовал решить с помощью синтаксис помощника и мануала 1с тут и тут у меня возникла куча вопросов. И какое было мое удивление когда я нашел много примеров применения HTTP-сервисов, например здесь и здесь, но ни одного для моего случая.
В статье не будет кучи воды, только конкретная задача, все максимально просто.
Итак, поехали.
Для начала сделаем серверную часть.
Создаем новый HTTP-сервер. Назовем его, например Exchange, корневой URL указываем такой же.
Далее переходим на вкладку ШаблоныURL. Добавляем новый шаблон, в моем случае Query, шаблон указываем /query/*.
Далее создаем метод и назовем его к примеру Action, HTTP-метод выбираем "Любой", жмем на кнопку с изображение лупы напротив поля "Обработчик" и автоматически создается функция.
В нее мы пишем следующее.
Функция QueryAction(Запрос)
ПараметрыЗапроса = Запрос.ПолучитьТелоКакСтроку();
Если ПараметрыЗапроса Тогда
Ответ = "Информация с параметром";
Иначе
Ответ = "Информация без параметра";
КонецЕсли;
HTTPОтвет = Новый HTTPСервисОтвет(200);
HTTPОтвет.УстановитьТелоИзСтроки(Ответ);
Возврат HTTPОтвет;
КонецФункции
Пробежавшись взглядом, сразу можно понять что для чего. В конце можно будет пробежать отладчиком и все сразу станет понятно и просто.
Публикуем базу и серверная часть готова.
Клиентская часть.
Для примера создадим общую форму. Добавляем в нее кнопку и пишем функцию которая отправит на сервер параметр и вернет нам результат.
Функция POSTЗапрос()
Попытка
//подключение к этому ПК
Соединение = Новый HTTPСоединение("127.0.0.1");
Исключение
Возврат "Ошибка при создании HTTP соединения.";
КонецПопытки;
HTTPЗапрос = Новый HTTPЗапрос(ИмяОпубликованнойБазы+"/hs/Exchange/query");
HTTPЗапрос.УстановитьТелоИзСтроки(ПараметрЗапроса);
Ответ = "";
Попытка
HTTPОтвет = Соединение.Записать(HTTPЗапрос);
Ответ = HTTPОтвет.ПолучитьТелоКакСтроку();
Исключение
Возврат "Ошибка при соединении.";
КонецПопытки;
Возврат Ответ;
КонецФункции
ПарметрЗапроса в данном примере – Булево,
а ИмяОпубликованнойБазы – Строка (это то имя с которым проходила публикация на веб-сервере серверной части).
Вот и все премудрости.
Если нужно, можно скачать базы клиента и сервера, их прикрепляю ниже.
Ну вот, теперь-то я уверен, что если кому-то понадобиться переделать или сделать мобильное приложение с HTTP-сервисами, у него на одну головную боль будет меньше. Всем успехов!