Використання HTTP-сервісів в 1С 8.3
Знову цікаве завдання і потрібно шукати оптимальне рішення. Завдання просте, треба з мобільного додатку оперативно отримати інформацію з 1С. При чому це повинно робитися миттєво і не потребувати зайвих ресурсів, інакше кажучи працювати все це повинно навіть при звичайному gprs інтернеті.
В останніх версіях платформи 1С з’явилися http-сервіси, але потреби їх вивчати не було. До цього моменту я вже інтегрував багато різних сайтів , crm систем, платіжних та смс сервісів і інших сервісів, але це було навпаки – з 1С підключався до необхідних сервісів і забирав потрібні дані. Настав час розібратися, допоможуть вони вирішити поставлене завдання чи ні.
До того моменту доки з’явилися http-сервіси, для подібних завдань можна було використовувати web-сервіси, і багато розробників продовжують їх використовувати, навіть не дивлячись на нові інструменти в 1С, а даремно. Для багатьох задач, в тому числі і моєї саме http-сервіси це саме те що потрібно, бо:
- Http-сервіси не потребують багато ресурсів, бо основне їх завдання виконати запит і дати відповідь. Це означає, що працюють вони швидше і простіше ніж web-сервіси. Для мобільних пристроїв, це дуже важливо.
- Відповідь формується в форматі xml, це значить що будь яка программа яка виконує запит до 1С зможе без будь-яких проблем опрацювати її. Крім того обсяг даних які відправляються дуже малий.
- Http-сервіси дуже прості з точки зору розробника. На розробку витрачається дуже мало часу, все зрозуміло і просто.
Єдине, що об’єднує ці сервіси, це те, що для роботи http-сервісів як і для роботи web-сервісів потрібно налаштувати web-сервер. Але це теж не складно і є багато статей на тему як налаштувати IIS.
Тому зупинимось саме на http сервісах, і подивимось що це дійсно дуже просто. Всього декілька кроків потрібно для їх налаштування і запуску:
- Додати новий http-сервіс, прописати його параметри.
- Написати процедуру отримання запиту, та формування відповіді.
- Зробити публікацію http-сервісу.
1. Додаємо та налаштовуємо http-сервіс.
Спочатку створюємо новий http-сервіс, даємо йому назву и прописуємо йому кореневий URL. Його заповнювати обов’язково, бо по ньому буде відбуватися виклик сервісу для його обробки.
Далі переходимо на вкладку Шаблони URL і додаємо новий шаблон. В ньому будуть описані параметри вхідних даних, вони описуються в рядку шаблон. Вкажемо шаблон /{phone} і будемо його обробляти при запиті. Вказані у шаблоні методи є обов’язковими при виконанні запиту. Можуть бути будь-які інші параметри, але якщо вони не обов’язкові то в шаблоні їх вказувати непотрібно.
Далі на підставі шаблону створюємо метод обробки, в нашому випадку це метод “Получить”. Прописуємо потрібний метод обробки, у нас це Get, і процедуру обробки запиту.
2. Пишемо процедуру отримання даних та готуємо відповідь на запит.
Процедура складається з отримання параметрів запиту та готування відповіді у форматі xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
Функция ПолучитьДанныеПолучить(Запрос) //Отримуємо наш параметр - телефон Телефон = Запрос.ПараметрыURL["phone"]; //Створюємо об'єкт "відповідь" Ответ = Новый HTTPСервисОтвет(200); //Формуємо файл відповіді потрібними даними ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.УстановитьСтроку(); ЗаписьXML.ЗаписатьНачалоЭлемента("test"); ЗаписьXML.ЗаписатьНачалоЭлемента("phone"); ЗаписьXML.ЗаписатьТекст(Телефон); ЗаписьXML.ЗаписатьКонецЭлемента(); ЗаписьXML.ЗаписатьНачалоЭлемента("time_delivery"); ЗаписьXML.ЗаписатьНачалоЭлемента("time"); ЗаписьXML.ЗаписатьТекст(Формат(ТекущаяДата(),"")); ЗаписьXML.ЗаписатьКонецЭлемента(); ЗаписьXML.ЗаписатьНачалоЭлемента("time"); ЗаписьXML.ЗаписатьТекст(Формат(ТекущаяДата()+2*60*60,"")); ЗаписьXML.ЗаписатьКонецЭлемента(); ЗаписьXML.ЗаписатьКонецЭлемента(); ЗаписьXML.ЗаписатьКонецЭлемента(); Ответ.УстановитьТелоИзСтроки(ЗаписьXML.Закрыть()); Возврат Ответ; КонецФункции |
3. Публікуємо http-сервіс.
Залишається опублікувати наш http-сервіс і все. Для публікації в режимі конфігуратора відкриваємо потрібний пункт:
І публікуємо наш сервіс.
Далі в рядку браузера викликаємо наш метод, передаємо номер телефону як обов’язковий параметр і отримуємо результат: