Шаблон http-сервиса для вашего проекта

Публикация № 1056603

Обмен - Обмен с другими системами

http сервис http-сервис шаблон json получение остатков по online мобильное приложение.

47
Http-сервис для обмена данными в формате JSON. Обработчики этого сервиса находятся во внешней обработке, что позволяет дорабатывать его без изменения конфигурации. Также прилагаю пример мобильного приложения для работы с данным сервисом (получает номенклатуру и остатки на складе). Сервис очень быстро разворачивается и масштабируется под ваши задачи.

Введение

Доброго дня! Данный сервис получился действительно удобным и активно используется нашей командой в различных системах учета.
Основное его преимущество, как я считаю, это доработка без изменения конфигурации. Однажды добавив сервис в конфигурацию, вы больше его не изменяете, а дорабатываете внешнюю обработку, в которой и находятся обработчики 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-сервисом, внешняя обработка.
Дополнительно для скачивания: пример мобильного приложения для работы с данным сервисом.

47

Скачать файлы

Наименование Файл Версия Размер
Шаблон http-сервиса для вашего проекта:
.zip 9,54Kb
04.05.19
19
.zip 9,54Kb 19 Скачать
Пример мобильного приложения для http-сервиса:
.zip 344,65Kb
04.05.19
12
.zip 344,65Kb 12 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. dsdred 1026 04.05.19 23:08 Сейчас в теме
Опять пример с которым можно справится по OData без всяких доп обработок...
2. MarkoSokolov 05.05.19 07:05 Сейчас в теме
(1) Возможно) но поможет ли odata если нужно получить результаты сложного запроса с вложенными запросами и с соедиениями?
4. dsdred 1026 05.05.19 10:26 Сейчас в теме
(2)
Возможно) но поможет ли odata если нужно получить результаты сложного запроса с вложенными запросами и с соедиениями?

Не поможет. Я к тому и говорю...

Вы демострируете пример который не требует вашего решения! Простым языком "Вы не продали мне ручку"!

(3)
это не очередной велосипед типа «odata»

Я правильно понимаю что вы классифицируете odata - велосипедом?

как вернуть номенклатуру с остатками и несколькими видами цен с помощью odata

А вот такую задачу полтора года назад я кстати делал по odata.

Еще раз повторю. Демонстрация обработки это как продажа. Нужно показать ее сильные стороны, показать сложный пример который она решает. А не стрелять из базуки по мухам.

Вот и все что я хотел вам донести в первом сообщении.
oleg-m; acanta; +2 Ответить
5. WKBAPKA 212 05.05.19 11:09 Сейчас в теме
(4) oData это конечно круто, но если работать из под андроид, retrofit, как пример, ничего не знает об этом протоколе. А довольно таки удобная библиотека.
+ сервисов еще в том, что логика обработки данных на стороне сервиса скрыта и может быть любой формы сложности, а не быть ограниченной рамками спецификации конкретного протокола.
Поэтому не надо смешивать людей и коней в кучу :)
7OH; pbabincev; +2 Ответить
8. dsdred 1026 05.05.19 11:22 Сейчас в теме
(5)
+ сервисов еще в том, что логика обработки данных на стороне сервиса скрыта и может быть любой формы сложности, а не быть ограниченной рамками спецификации конкретного протокола.

А ограничение в объеме данных на стороне Веб-сервера не действует?

Вы суть того, что я написал не уловили.

Давайте так... Чтобы продавать мерседесы, нужно продавать мерседесы, а не демонстрировать Автоваз и говорить что мерседес это круто.
тоже самое я вот тут написал
Вы демострируете пример который не требует вашего решения! Простым языком "Вы не продали мне ручку"!

и вот тут
Демонстрация обработки это как продажа. Нужно показать ее сильные стороны, показать сложный пример который она решает. А не стрелять из базуки по мухам.


П.С. Я не против данного решения, я против такой демонстрации.
В своей работе сам использую http-сервисы, люблю их и продвигаю! Можете по моим публикациям увидеть мою к ним любовь ;))
В данный момент сам пишу универсальное решение(поспособствовала хорошая халтурка), только оно будет не через доп обработки(хотя и эту подсистему я очень люблю).
Доп обработки привязаны к БСП, а это с одной стороны плюс, а с другой минус.
10. WKBAPKA 212 05.05.19 11:27 Сейчас в теме
(8) что то я вашей логики не улавливаю про объемы данных.
Что то, что то, работает только при наличии WEB-сервера. Как раз HTTP сервис и позволит вам сделать данные более компактными, в отличии от odata.
Предложенное решение довольно таки интересное. И суть не во внешней обработке, а в том, что на вход подаешь метод, а на выходе результат. Причем, результат можно получить используя всю мощь 1С.
odata - это вообще отдельная тема
pbabincev; +1 Ответить
13. WKBAPKA 212 05.05.19 11:32 Сейчас в теме
(11) ну и что? если есть технического ограничение на объемы передаваемых данных, кто мне запрещает выполнить 10 последовательных запросов, а не 1?
Мы говорим с вами о разных вещах. У Apache немного другие настройки.
17. dsdred 1026 05.05.19 11:38 Сейчас в теме
(13)
Мы говорим с вами о разных вещах


Мы начиная с вашего (5) комментария говорим о разных вещах...

Я пытаюсь донести, что ДЕМОНСТРАЦИЯ плохая.
И поверьте я прекрасно понимаю какие плюсы и минусы в данном решении.
Для небольших проектиков оно очень даже сгодится, для серьезных вещей сыровато.
18. WKBAPKA 212 05.05.19 11:40 Сейчас в теме
(17) что там сырого?
работает да и работает. А надо будет допилить, так напильник всегда под рукой. Это же для программиста решение, а не для конечного пользователя.
20. dsdred 1026 05.05.19 11:44 Сейчас в теме
(18)Исходя из своего опыта могу сказать, что там пилить и пилить... Но для небольших задачек сгодится.
Не вижу смысла все описывать...
21. WKBAPKA 212 05.05.19 11:46 Сейчас в теме
(20) ну так автор же и не предлагает это использовать в промышленных маштабах :)
24. dsdred 1026 05.05.19 11:53 Сейчас в теме
(21)Вы издеваетесь?

Я еще раз говорю, что пример с выборкой номенклатуры - это ОЧЕНЬ ПЛОХОЙ ПРИМЕР, так как такую вещь можно сделать более простым способом нежели предложенная обработка.
И только - это мне не нравится в таких решениях, коих на инфостарт выкладывают регулярно.

П.С. ВОПРОС ИСЧЕРПАН!!!
25. WKBAPKA 212 05.05.19 11:56 Сейчас в теме
(24) а что он должен был вам предложить? :)
ну блин, это же ресурс для программистов.
А вы что, в своих фантазиях дальше выборки номенклатуры ограничены? Если вы понимаете разницу между одата и хтпп сервисом и принципами обработки информации, то сами можете догадаться, что засунуть во внешнюю обработку можно любой алгоритм, даже самый извращенный, который не снился разработчикам одаты )

и не надо так нервничать )
26. WKBAPKA 212 05.05.19 11:57 Сейчас в теме
+ человек оформил публикацию согласно правилам инфостарта :)
27. dsdred 1026 05.05.19 12:04 Сейчас в теме
(25)
а что он должен был вам предложить? :)

Мне лично ничего. Но если в аргументах идет сложная выборка, дак ее и надо было показывать в демонстрации. Логично?

это же ресурс для программистов.

В том то и дело что не только для программистов...

и не надо так нервничать )

Я не люблю переливать из пустого в порожнее
28. WKBAPKA 212 05.05.19 12:07 Сейчас в теме
(27) ну конечно, когда мы с вам о разных вещах говорим.
Мне достаточно простого примера, что бы понять основную идею - вынести во внешние обработки логику, вам же надо показать пример с 1000 строк кода.
Вы, конкретно, придираетесь к демонстрации, а не к сути решения.
И это решение сугубо для программиста, т.к. конечный пользователь с ним ничего не сможет сделать.
29. dsdred 1026 05.05.19 12:11 Сейчас в теме
(28)Вы допускаете, что программист освоил OData, но не освоил http-сервисы?
Или он вообще не освоил не то не другое...

Я лично допускаю такие вещи, так как провожу собеседования.
30. WKBAPKA 212 05.05.19 12:14 Сейчас в теме
(29)я допускаю, когда программист может вообще не знать, что такое OData и http-сервисы :)
если он с ними никогда не работал.

но суть вопроса я не полностью уловил.
Если мне дают что то в руки, то что я не знаю, я сначала изучаю предмет, а потом начинаю с ним работать.
Не понимаю, как можно работать с черным ящиком
31. dsdred 1026 05.05.19 12:17 Сейчас в теме
(30)
но суть вопроса я не полностью уловил.
Если мне дают что то в руки, то что я не знаю, я сначала изучаю предмет, а потом начинаю с ним работать.
Не понимаю, как можно работать с черным ящиком


Вот вы уже на правильном пути, осталось чуть чуть и вы мои слова произнесете.

Будут они возиться с этим черным ящиком?
32. WKBAPKA 212 05.05.19 12:21 Сейчас в теме
(31) я бы таких лодырей на работу не брал бы

я скачал конфигурацию, за 5 минут разобрался как работает.
Кстати, код очень аккуратный
33. WKBAPKA 212 05.05.19 12:23 Сейчас в теме
причем, достаточно все просто написано, без пафоса, с использованием Вычислить () :)
Если взять напильничек, то в принципе идея не плохая
34. dsdred 1026 05.05.19 12:27 Сейчас в теме
(32)
я бы таких лодырей на работу не брал бы

А кто сказал, что они лодыри?
Просто работали там где это было не нужно, ну и прокачивали что то другое.

я скачал конфигурацию, за 5 минут разобрался как работает.
Кстати, код очень аккуратный

Как они поймут, что им нужна эта разработка?
35. WKBAPKA 212 05.05.19 12:31 Сейчас в теме
(34) вы такие вопросы задаете. это вообще то их проблемы. Для меня такие вопросы дикость. Я когда ищу инструмент для решения вопроса, пишу его или сам или, если не хватает квалификации (например, в Android) ищу нужную библиотеку.
А потом читаю и эксперементирую. Тем более, если это бесплатная библиотека. А тут вам бесплатно, да еще и руководство по использованию предоставь :)
странные у вас программисты работают
36. dsdred 1026 05.05.19 12:38 Сейчас в теме
(35)Вот этим отличается программист от продавана.

Но лучше когда программист умеет себя продать!
Продажа ручки, просто и наглядно
37. WKBAPKA 212 05.05.19 12:42 Сейчас в теме
(36) согласен.
Но я все же исповедую из опыта другую концепцию - разделение труда.
Программист должен хорошо программировать, а продаван должен продавать.
В мире отличном от 1С все так и организовано. Есть тупо кодеры, есть менеджеры проектов, есть дизайнеры. А в 1С все в куче, поэтому многие решения кривые :)
-Almi-; acanta; +2 Ответить
38. acanta 57 05.05.19 13:39 Сейчас в теме
(35) в этом то и проблема. Вопрос это уже половина ответа. Не продать решение имеющегося вопроса это значит не выполнить свою половину работы.
39. WKBAPKA 212 05.05.19 13:42 Сейчас в теме
(38) автор публикации ничего не продает, а дает возможность пользоваться своим решением.
А вы для себя сами принимаете решение, использовать его в своих задачах или нет.
Я смотрю такие решения в поисках не стандартных подходов.
19. WKBAPKA 212 05.05.19 11:42 Сейчас в теме
(17) взяли затулили один веб сервис, а реализацию сам себе пиши во внешних обработках такую какую хочешь. Как по мне так не плохо. Мне из скринов, все устроило, все понравилось и я лично понял зачем мне это надо.
22. dsdred 1026 05.05.19 11:48 Сейчас в теме
(19)
Я о том и говорю Вы поняли, я понял. А почему?
Потому, что опыт есть.
Вас это решение устраивает полностью. Качайте и пользуйтесь.
Меня не устраивает, у меня задачи серьезнее и на данный момент более серьезный инструмент уже наработал.

Минусы перечислять не буду, но плюсы есть не спорю.
23. WKBAPKA 212 05.05.19 11:50 Сейчас в теме
(22) так я ж не спорю :) под каждую задачу свое решение
3. ltfriend 309 05.05.19 08:29 Сейчас в теме
(1) вот именно, что это пример. Только это не очередной велосипед типа «odata», а реализация удаленного вызова процедур RPC, если более конкретно, то JSON-RPC. И реализовать можно что угодно, хоть получение данных (как вернуть номенклатуру с остатками и несколькими видами цен с помощью odata, особенно если сторонняя система требует формат json с определенной структурой?), так и запись данных и/или их доп обработку.
MarkoSokolov; +1 Ответить
6. WKBAPKA 212 05.05.19 11:14 Сейчас в теме
(3) да сравнивать протокол odata с мощью платформы 1С как то странно :)
odata решает вопросы интеграции сторонних систем, которые ничего не знают об 1С. Это ее преимущество. Возможность удаленно не только получать данные, но еще и удаленно их менять. А для решения обмена данными между мобильными устройствами и сервером, HTTP-сервис имеет значительные преимущества, т.к. позволяет подготовить данные в нужном виде и нужного объема.
7. acanta 57 05.05.19 11:17 Сейчас в теме
(6) о каких сторонних системах идёт речь? Может ли программист 1с посмотреть как происходит процесс на их стороне?
Или что он должен знать и чего не должен знать?
9. WKBAPKA 212 05.05.19 11:23 Сейчас в теме
(7) например, Power BI
да в принципе, о любой системе, будь то какой нибудь интернет-магазин или учетная система.
Программисту 1С вообще ничего не надо знать, он дает лишь описание объектов и как с ними работать.
14. acanta 57 05.05.19 11:32 Сейчас в теме
(9) т.е. в этом случае вопрос зачем вообще они нужны не обсуждается?
15. WKBAPKA 212 05.05.19 11:35 Сейчас в теме
(14) кто они и что значит нужны?

я уже объяснил, ODATA и HTTP-сервис используют разную парадигму. Это как палец с пятой точкой сравнивать.
12. WKBAPKA 212 05.05.19 11:30 Сейчас в теме
а сильная сторона, то что я могу, как программист 1С, получить все.
А вот через odata далеко не все и в том виде, в котором мне надо.

а у odata одна сильная сторона, там не нужен программист 1С :) и сам протокол позволяет манипулировать данными на стороне самой 1С.
Что автор должен вам показать из примера, что бы вас впечатлило? Сама возможность управлять процессом, это уже одна из сильных сторон )
16. WKBAPKA 212 05.05.19 11:38 Сейчас в теме
например, я из Power BI могу получить данные из любого справочника или регистра. Мне ничего не надо знать про 1С, кроме как называется объект в системе к которому я обращаюсь и как составить правильный запрос ODATA
40. androgin 05.05.19 20:20 Сейчас в теме
...без изменения конфигурации...

Итак, мы добавили наш сервис в конфигурацию...

противоречия одни )))
41. MarkoSokolov 51 06.05.19 05:53 Сейчас в теме
(40) Вы вырвали слова из контекста.

Http-сервис для обмена данными в формате JSON. Обработчики этого сервиса находятся во внешней обработке, что позволяет дорабатывать его без изменения конфигурации.
44. androgin 08.05.19 22:26 Сейчас в теме
(41) я не вырвал. я конкретно процитировал противоречие
42. WKBAPKA 212 06.05.19 08:59 Сейчас в теме
(40) если сделать расширение, то все будет гуд... я кстати, сначала подумал, что это расширение, ан нет :)
но это же не беда сделать самому ,правда? )
45. androgin 08.05.19 22:27 Сейчас в теме
(42) а потом вы еще постарайтесь его опубликовать))))
46. WKBAPKA 212 08.05.19 23:01 Сейчас в теме
(45) не пробывал, поэтому не знаю :)
кстати спасибо, как то думал с расширением. но если есть такие проблемы...
47. dsdred 1026 26.05.19 20:28 Сейчас в теме
(45)В чем проблемы с публикацией http-сервиса в расширении?

Вот один из примеров, проблем не наблюдал -> Мобильный клиент + HTTP Сервис + Расширение конфигурации
43. it@contlog.ru 08.05.19 12:41 Сейчас в теме
в примере не хватает планов обмена и процедуры фонового обмена. Для масштабирования это было-бы полезно.
dsdred; WKBAPKA; +2 Ответить
Оставьте свое сообщение