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

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

Разработка - Системная интеграция - Внешние источники данных

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

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-сервисом, внешняя обработка.
Дополнительно для скачивания: пример мобильного приложения для работы с данным сервисом.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

daСклонение: склонение ФИО, должностей, чисел, прилагательных, существительных на языке 1С + ТестЦентр Промо

Универсальные функции v8 1cv8.cf Абонемент ($m)

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

1 стартмани

14.02.2015    99033    96    daMaster    88    

Сравнение реального дохода со средним доходом из API.HH.RU

Зарплата Управленческие v8 v8::СПР ЗУП3.x УУ Абонемент ($m)

Внешняя обработка на управляемой форме для 1С:Предприятие 8.3 по интеграции с HH.RU используя HH REST API. Ключевые функции: получение списка вакансий по должностям (Ключ для работы не нужен); расчет среднего дохода; Тестирование проводилось на платформе 1С:Предприятие 8.3 (8.3.13.1513) Зарплата и управление персоналом, редакция 3.1 (3.1.11.68) совместно с API.HH.RU.

1 стартмани

11.11.2019    3643    4    solaru    2    

Конфигурация для рекламного агентства

Управление услугами и сервисом Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) v8 Реклама, PR и маркетинг УУ Абонемент ($m)

Данная конфигурация выполнена для решения тестового задания: Цель задания: 1) Понять, на каком из клиентов сколько мы заработали;  2) Понять, по какому виду СМИ сколько мы заработали;  3) Проследить по каждой услуге: у кого за сколько купили и кому за сколько продали, с возможностью перейти в соответствующий документ. Реализовано с помощью: 1. Справочники - контрагенты, номенклатура 2. Документы - Поступление услуг, реализация услуг 3. Отчеты - отчет по контрагентам, номенклатуре и движений.

1 стартмани

21.05.2019    3917    0    solaru    0    

Загрузка номенклатуры в УТ 10.3 из Excel файла с генерацией штрихкодов

Загрузка и выгрузка в Excel Обработка справочников Оптовая торговля Розничная торговля Учет ТМЦ Оптовая торговля Розничная торговля Учет ТМЦ v8 УТ10 Россия Абонемент ($m)

Обработка позволяет генерировать новые номенклатурные позиции на основе данных из файла Excel с последующей генерацией штрихкодов (ШК). Может быть полезна при больших поступлениях товаров на склад, где ручное создание и присваивание штрихкода  (ШК) может занимать много времени.

1 стартмани

24.03.2017    7523    6    solaru    0    

Под капотом управляемых форм

Практика программирования v8 1cv8.cf Бесплатно (free)

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

26.08.2013    260387    0    Evil Beaver    266    

[NotaBene] Универсальный отчет по таблице значений

Практика программирования v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Абонемент ($m)

1C v.7.7 Готовое решение. Не требует настройки. Не требует допрограммирования. Данная обработка решает часто встречающуюся задачу вывода в "красивом" виде таблицы значений (полученной, например, из запроса). Поддерживается произвольное группирование данных, отключение/включение группировок, в т.ч и создание "шахматок" (типа "продажи понедельно"). Обработка может использоваться как и в отладочных целях (для нормального просмотра ТЗ), так и в составе вполне рабочих отчетов. По крайней мере, я неоднократно клиентам данную обработку ставил вместо того, чтобы каждый раз писать замороченные выводы данных. И клиенты довольны, и мне - проще...

2 стартмани

07.05.2007    27909    1    CheBurator    61