HTTP-сервіси для тих, хто нічого не розуміє в WEB

Якщо ви нічого не розумієте в WEB технологіях і такі слова, як json, get, post та інше для вас нічого не значать і ви просто завзятий 1С-ник до мозку кісток, але вам кров з носу треба подружити 1С зі сторонніми додатками або сайтом, то ця стаття для вас.

Почну з того, що колись я був змушений самостійно розбиратися з Web-сервісами. Тоді якось потихеньку мені вдалося освоїти цю справу і зрозуміти, що і куди треба натиснути, щоб все запрацювало. Благо конфігурація, з якою довелося працювати, вже була напхана Web-сервісами і можна було підглянути і зробити по аналогії, а також в інтернеті мені вдалося знайти достатньо статей по цій справі. І так, на прикладах (для мене це найкращий спосіб вивчення), я освоїв цю справу, і тепер мене вони вже не лякають.

Після оновлення платформи до версії 8.3 мені стало цікаво спробувати нові технології - ті самі HTTP-сервіси. Тут вже скористатися моїм улюбленим методом - підглядати, як було зроблено раніше, - мені не вдалося - об'єкт новий. Погортавши інтернет, я знайшов пару статей самої фірми 1С і трохи сторонніх статей, в яких якась інформація є, але написана важкувато (для простого тупого 1С-ника). У підсумку на своєму досвіді, методом проб і помилок, я трохи наблизився до усвідомлення, що це за звір, і хочу поділитися інформацією з вами (може, комусь допоможе швиденько що-небудь зробити, коли горить).

ОТЖЕ. Основним завданням будь-якої інтеграції, будь то КД, Web-сервіси або HTTP-сервіси, є що-небудь звідки-небудь передати, що-небудь з цим зробити і повернути відповідь. Ось в такому форматі ми і розглянемо нову технологію.

У дереві метаданих HTTP-сервіси розташовуються в гілці Загальні: У дереві метаданих HTTP-сервіси розташовуються в гілці Загальні:

Доповнити новим HTTP-сервіс точно так же, як і будь-який інший об'єкт метаданих. Ім'я та синонім як хочете. Тут важливий тільки "Кореневий URL" - це, власне, і є ідентифікатор HTTP-сервісу в даній базі, тобто саме те, що ви напишете в цю властивість, ви передасте сторонньому розробнику (ну або собі) в якості посилання на сервіс.

Вже не знаю, чи можна тут писати кирилицею, але щоб вас в прогресивному світі не засміяли, пишіть латиницею).

Далі переходимо на закладку Шаблони URL і додаємо новий шаблон.

Далі переходимо на закладку Шаблони URL і додаємо новий шаблон

Тут важливо саме властивість Шаблон:

Тут важливо саме властивість Шаблон:

За допомогою шаблону ви згодом зможете звернути до тих даних, які вам передали. ОТЖЕ: всі дані, які ви хочете отримати ззовні, можна розділити на 2 блоки - обов'язкові і не обов'язкові.

Обов'язкові дані / параметри запихає в шаблон, тим самим якщо той, хто звертається до сервісу, їх не заповнив, то сервіс апріорі видасть помилку, а ви при розробці тексту модуля обробника будете впевнені, що ці дані є. Як це робиться: в рядку Шаблон в фігурних дужках "{}", чергуючи з зі знаком "/", пишемо імена змінних. Наприклад, нам обов'язково потрібен артикул - тоді пишемо / {artikul}. Якщо нам треба отримати артикул, ім'я та ім'я користувача, рядок шаблону буде виглядати так: / {artikul} / {name} / {user} і т.д. Кожен з таких параметрів в тексті модуля обробника можна буде отримати так: Запрос.ПараметриURL [ "<ім'я параметра>"]. Якщо обов'язкових немає, то шаблон виглядає так: / *.

Чи не обов'язкові дані, які ми хочемо отримувати через сервіс, в шаблоні НЕ описуються. При побудові посилання, для звернення до сервісу вони описуються в кінці посилання після знака "?", Поділяються символом амперсанда "&" і мають структуру <ім'я параметра> = <значення параметра>. У тексті модуля обробника до них можна звернутися конструкцією: Запрос.ПараметриЗапроса.Получіть ( "<ім'я параметра>"). АЛЕ: важливо пам'ятати, раз вони не обов'язкові, то їх може і не бути, відповідно значення перевіряємо на Не визначено.

Далі додаємо новий метод для нашого шаблону. Тут важливо властивість HTTP-метод. Їх тут величезна кількість, АЛЕ ми не будемо вдаватися в усі тонкощі. Для реалізації будь-якої вашої задачі вам потрібні тільки 2: GET і POST.

Як вибрати: Якщо того, що ми з вами описали в двох попередніх абзацах, для роботи вам достатньо, тобто всі потрібні вам дані ви зможете отримати за допомогою обов'язкових і не обов'язкових параметрів самого запиту, то беремо GET. В цьому випадку в будь-якому браузері, якщо ви правильно введете адресний рядок, ви побачите результат дії свого HTTP-сервісу - ПРОФІТ! Якщо раптом для роботи вашого сервісу потрібні дані в більш складному вигляді (xml наприклад, або ще чого), то, що не можна запхнути в просту адресний рядок, то беремо POST. З мінусів така легка перевірка через адресний рядок браузера, як з GET, не пройде, але на просторах інтернету легко можна знайти якісь сайти, на яких можна перевірити сервіси методом POST (наприклад, сайт https://www.hurl.it) . У разі, якщо обраний метод POST, то у запиту крім URL (адреси) з'являється тіло, в яке можна запхати все, що завгодно, а в обробнику методу звернутися до нього через конструкцію Запрос.ПолучітьТелоКакСтроку (). У будь-якого шаблону може бути як GET метод, так і POST. У них будуть відповідно різні обробники, а 1С-ка в залежності від того, як був відправлений запит, буде вибирати той чи інший метод.

Оброблювач HTTP-сервісу - це функція, яка завжди повертає значення типу HTTPСервісОтвет, який будується конструктором Новий HTTPСервісОтвет (<КодСостоянія>). <КодСостоянія> - це число, щоб не мучитися з вибором що писати, пишемо: 200 - якщо все добре і ви повертаєте якийсь логічне значення, 400 - якщо помилка і ви возврщаете опис помилки. У даного типу є різні методи (можна почитати в синтаксис помошник, там все зрозуміло написано). Знову ж, завжди можна повернути все що потрібно у вигляді рядка - метод УстановітьТелоІзСтрокі (). (одна невелика хитрість: якщо ви повертаєте html і хочете щоб браузер при введенні в адресний рядок адреси вашого сервісу на екрані красиво відобразив його, у властивості відповідь Заголовки напишіть: Ответ.Заголовкі.Вставіть ( "Content-Type", "text / html; charset = utf-8 ") - тим самим ви вкажете, що це не просто набір символів, а HTML і його треба показати відповідне)

Після того як ви все зробите, HTTP-сервіс треба опублікувати. Робиться це на комп'ютері з встановленим веб-сервером (про налаштування писати не буду, є повно статей) через меню:

Адміністрування - Публікація на веб сервері.

Адміністрування - Публікація на веб сервері

Там закладка HTTP-сервіси. Ставимо галки і натискаємо "Опублікувати"

Ставимо галки і натискаємо Опублікувати

Отже, ми отримали готовий HTTP-сервіс. ЯК до нього звернутися? Якщо у нас використовується метод GET то в адресному рядку браузера пишемо: http: // <ім'я веб сервера> / <ім'я бази> / hs / <кореневої URL> / <обов'язковий параметр1> / <Обов'язковий параметр2> ? <Ім'я не обов'язкового параметра 1> = <Значення не обов'язково параметра 1> & <Ім'я не обов'язкового параметра 2> = <Значення не обов'язково параметра 2> .

Ну і, нарешті, ще раз в картинках))):

джерело: http://infostart.ru

При побудові посилання, для звернення до сервісу вони описуються в кінці посилання після знака "?
ЯК до нього звернутися?