Використання 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-сервіс і все. Для публікації в режимі конфігуратора відкриваємо потрібний пункт:

І публікуємо наш сервіс.

Далі в рядку браузера викликаємо наш метод, передаємо номер телефону як обов’язковий параметр і отримуємо результат:
