Введение
Доброго дня! Данный сервис получился действительно удобным и активно используется нашей командой в различных системах учета.
Основное его преимущество, как я считаю, это доработка без изменения конфигурации. Однажды добавив сервис в конфигурацию, вы больше его не изменяете, а дорабатываете внешнюю обработку, в которой и находятся обработчики http-запросов.
Кратко принцип работы
Итак, мы добавили наш сервис в конфигурацию и перед нами стоит задача получать в мобильном приложении (или в любом другом)
номенклатуру из нашей базы. Используемый формат запросов это JSON.
Приложение клиент должно отправлять JSON вида:
{
"method":"GetGoods",
"params":{
"code":"12345"
}
}
То есть это структура со свойством "method" и свойством "params". Когда наш сервис получит этот запрос он запустит функцию во внешней обработке с именем "GetGoods" и передаст ей в качестве параметра структуру "params".
В функции "GetGoods" у нас будет запрос, который получает номенклатуру. Таким образом, по большому счету, для получения требуемых данных мы реализуем только функцию (во внешней обработке) указанную в запросе и формируем в ней запрос во выборке данных.
К примеру функция GetGoods:
Функция GetGoods(Параметры)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ref,
| Номенклатура.ЭтоГруппа КАК IsGroup,
| Номенклатура.Наименование КАК Name,
| Номенклатура.Код КАК Code
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.ЭтоГруппа";
Рез = Запрос.Выполнить().Выгрузить();
МассивСтруктур = ТаблицаЗначенийВМассивСтруктур(Рез);
Возврат МассивСтруктур;
КонецФункции
В такой реализации функции наш http-сервис вернет ответ со следующим JSON:
[
{
"Ref":"f93e112a-c83a-11e2-8026-0015e9b8c48d",
"IsGroup":false,
"Name":"Бутылка ",
"Code":"ЦУ-00000053"
},
{
"Ref":"f93e112c-c83a-11e2-8026-0015e9b8c48d",
"IsGroup":false,
"Name":"Ящик ",
"Code":"ЦУ-00000054"
},
...
Т.е. это будет массив структур с полями запроса.
Еще один большой плюс данной разработки это отладка без участия приложения клиента.
Допустим мы решили, что будем отправлять какой-то запрос и реализовали для него функцию в обработке,
теперь нам нужно проверить, что же вернет http-сервис.
Открываем нашу внешнюю обработку (в которой мы уже реализовали функцию),
вставляем наш запрос, и, вуаля, получаем данные ответа в JSON:
Ну вот. Все просто и доступно) Пользуйтесь)
Кстати, в загрузках есть пример мобильного приложения, которое получает номенклатуру и остатки из нашей базы (в примере используется УТ 11).
Дополнительная информация
Внешняя обработка сервиса должна быть добавлена в базу ("Дополнительные отчеты и обработки")
Сервис работает на конфигурациях с управляемыми формами. Использовался с УТ 11, Розница 2, Бухгалтерия 3.
Если есть потребность для конфигураций на обычных формах, пишите в комментариях - сделаем.
Последний раз тестировался на платформе (8.3.13.1513), но работает и на более ранних версиях.
В файлах поставки:
Конфигурация с http-сервисом, внешняя обработка.
Дополнительно для скачивания: пример мобильного приложения для работы с данным сервисом.