Содержание:
- Установка Apache 2.4 на Windows
- Расширение WEB-сервера и создание HTTP-сервиса в 1С
- Обработка для отправления POST запросов в 1С
- Публикация на WEB-сервере 1С
- Проверка и демонстрации работы сервиса учетной системы 1С
Многим приходилось задумываться над таким необычным объектом конфигурации, как HTTP-сервис. Многие, возможно, сталкивались с этим функционалом очень неожиданно и, хотя прыгнуть в бассейн неплохой способ научиться плавать, думаю, многим хотелось бы побольше знать, как работать с этими обменами. Есть достаточно простой вариант, как потренироваться, проверить или даже разработать и протестировать обмены с веб-сервером в домашних условиях. В этой статье я покажу, как работать с объектами HTTP-сервиса в конфигураторе на примере GET и POST запросов. Статья рассчитана на разработчиков, которые не имели дело с этим функционалом или хотят найти лёгкий способ протестировать его.
Установка Apache 2.4 на Windows
Для начала необходимо запустить сервер Apache на своём компьютере. Нужно скачать дистрибутив с официального сайта. Обратите внимание, что разрядность нужно выбирать в соответствии с разрядностью 1С:Предприятия, которым вы будете пользоваться (для 32-битного приложения – httpd-2.4.63-250122-win32-vsXX.zip, для 64-битного приложения – httpd-2.4.63-250122-win64-vsXX.zip). Чтобы запустить сервер необходимо проделать следующие шаги:
- Разархивируйте дистрибутив в папку, в которой нет ограничения по правам на запись. Перейдите в разархивированную папку Apachi24.
- Если вы распаковали архив в корень диска С, пропустите этот шаг. Я рекомендую хранить папку именно там, потому что команды терминала будут с этим путем. Если вы предпочитаете другую папку, не забудьте изменять путь в командах. Также откройте папку conf и откройте файл httpd.conf с помощью любого редактора текста. Найдите строку:
define SRVROOT “c:/Apache24”
И замените путь в этой строчке на актуальное расположение папки Apachi24 и вернитесь в эту папку.
- В папке Apachi24 откройте папку bin и скопируйте путь к ней. Откройте терминал от имени администратора (правой кнопкой мыши по Пуску и выбрать соответствующую опцию). С помощью команды cd и введите команду установки сервера:
cd C:\Apache24
./httpd.exe -k install
Терминал должен выдать сообщение, что сервис установлен, как на изображении, и также сообщит, что в файле конфигурации не установлен адрес сервера, и что он установлен автоматически на localhost. Это можно проигнорировать.

Если была выведена такая ошибка, как на картинке ниже, значит, занят основной порт localhost.

В этом случае есть два решения: либо отключение сервиса с этого порта, либо изменение порта, на котором будет запущен сервер Apache. Для этого нужно открыть папку c:/Apache24/conf, любым текстовым редактором открыть файл httpd.conf , и заменить в нем порт 80 на 8080 или любой свободный. Это необходимо сделать в строчке, которая начинается так:
Listen 80
Осталось только запустить сервер следующей командой в терминале.
./httpd.exe -k start

Снова будет предупреждение о том, что адрес сервера не указан. Чтобы проверить работу Apache сервера зайдите в любом браузере на localhost (или localhost:8080), и вы должны увидеть страничку с надписью “It works!”.

Расширение WEB-сервера и создание HTTP-сервиса в 1С
WEB-сервера и создание HTTP-сервиса в 1С Расширение
Для работы с веб-сервером необходимо наличие модуля расширения веб-сервера. Надо зайти в настройки, программы, выбрать 1С и нажать изменить. В установщике модуль веб-сервера находиться среди других компонент.

Выборочная установка 1С:Предприятие 8
Теперь перейдем к созданию HTTP-сервиса в конфигураторе 1С. HTTP-сервисы позволяют обрабатывать входящие запросы и возвращать ответы в формате JSON или XML. Я продемонстрирую работу этих объектов наиболее просто, на примере GET и POST запросов, но для начала нужно создать справочник «Клиенты» с реквизитами Телефон и Электронная почта для демонстрации работы с объектами конфигурации (рис. 3.1).

Справочник Клиенты
Больше ничего не понадобится, и можно перейти к созданию HTTP сервиса:
- В дереве конфигурации откройте раздел общее и создайте новый HTTP сервис. Заполните корневой url латинскими символами, например demo.

HTTP-сервис
Создайте для него два шаблона для GET и POST запросов отдельно и добавьте каждому по методу. В шаблонах нужно заполнить URL-шаблон латинскими символами, например example_get и example_post соответственно. У методов создайте обработчики.

HTTP-сервис, Шаблоны URL

Свойства Шаблона URL
В модуле замените код обработчиков на следующий:
Функция ШаблонURLзапросGETМетодGET(Запрос)
КодКлиента = Запрос.ПараметрыURL[“CustomerCode”];
Клиент = Справочники.Клиенты.НайтиПоКоду(КодКлиента);
Если НЕ ЗначениеЗаполнено(Клиент) Тогда
Ответ = Новый HTTPСервисОтвет(204);
Иначе
ДанныеКлиента = Новый Структура;
ДанныеКлиента.Вставить(“Code”, Клиент.Код);
ДанныеКлиента.Вставить(“Name”, Клиент.Наименование);
ДанныеКлиента.Вставить(“Phone”, Клиент.Телефон);
ДанныеКлиента.Вставить(“Email”, Клиент.ЭлПочта);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ДанныеКлиента);
СтрокаДляОтвета = ЗаписьJSON.Закрыть();
Ответ = Новый HTTPСервисОтвет(200);
Ответ.Заголовки.Вставить(“Content-type”, “application/JSON; charset=utf-8”);
Ответ.УстановитьТелоИзСтроки(СтрокаДляОтвета, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
КонецЕсли;
Возврат Ответ;
КонецФункции
Функция ШаблонURLзапросPOSTМетодPOST(Запрос)
ТелоЗапроса = Запрос.ПолучитьТелоКакСтроку(“UTF-8”);
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ТелоЗапроса);
Данные = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
НовыйКлиент = Справочники.Клиенты.СоздатьЭлемент();
НаименованиеКлиента = “”;
ТелефонКлиента = “”;
ЭлПочтаКлиента = “”;
Если Данные.Свойство(“name”, НаименованиеКлиента) И Данные.Свойство(“phone”, ТелефонКлиента) И Данные.Свойство(“email”, ЭлПочтаКлиента) Тогда
НовыйКлиент.Наименование = НаименованиеКлиента;
НовыйКлиент.Телефон = ТелефонКлиента;
НовыйКлиент.ЭлПочта = ЭлПочтаКлиента;
НовыйКлиент.Записать();
Ответ = Новый HTTPСервисОтвет(200);
Иначе
Ответ = Новый HTTPСервисОтвет(402);
Возврат Ответ;
КонецЕсли;
Возврат Ответ;
КонецФункции
В свойствах метода GET измените шаблон, добавив к нему /{customer_code} следующим образом.

Свойства: Шаблон URL
Пояснения к коду с обработками запросов:
В обработчике GET запроса с помощью шаблона URL строки, в котором мы добавили параметр customer_code, модуль получает код клиента и ищет соответствие в справочнике, если находит его, то создаётся JSON структура и отправляется как ответ HTTP сервиса.
В обработчике POST запроса его тело берётся как строка и помещается в JSON структуру. Она считывается и, если всё корректно создаётся новая запись в справочнике клиенты и записывается.
Обработка для отправления POST запросов в 1С
Чтобы продемонстрировать работу обработки POST запросов на сервер, нужно также их отправлять. Это можно делать с помощью специализированных программ или прямо в браузере, но я решил продемонстрировать, как это делается в обработках.
Нужно создать новую обработку и добавить к ней форму, в форме создать реквизиты формы для соответствующих реквизитов справочника и команду, и перетащить всё на форму.

Форма
В обработчике команды на клиенте напишите код:
&НаКлиенте
Процедура Отправить(Команда)
HTTP = Новый HTTPСоединение(“localhost”, 80);
Запрос = Новый HTTPЗапрос(“/InfoBase/hs/demo/example_post”);
Запрос.УстановитьТелоИзСтроки(“{“”name””:””” + ИмяКлиента +”””, “”phone””: “”” + ТелефонКлиента + “””, “”email””: “”” + ЭлПочтаКлиента + “””}”, КодировкаТекста.UTF8);
Ответ = HTTP.ОтправитьДляОбработки(Запрос);
Сообщить(“POST запрос отпрален!”);
КонецПроцедуры
Пояснение к коду:
Данные о клиенте берутся из полей формы и формируются в строку для параметра строки запроса. Небольшое пояснение к самому запросу: /InfoBase/hs/demo/example_post
InfoBase – название публикации на веб-сервере, оно встретиться позже при создании публикации.
hs – Handler Service, этот параметр прописывается во всех запросах
demo – корневой URL нашего HTTP-сервиса
example_post – шаблон метода
Публикация на WEB-сервере 1С
Надо запустить платформу от имени администратора, чтобы избежать возможные ошибки, связанные с правами файловой системы. Команда публикации на веб-сервере находиться в меню «Администрация» в конфигураторе. Для работы HTTP сервисов надо установить галочку публиковать HTTP сервисы по умолчанию или добавить их вручную.
Необходимо также изменить каталог «С:\Apache24\htdocs\». Папку «htdocs» нужно создать в файловой системе Windows.
Обратите внимание, что имя публикации InfoBase это как раз то, что использовалось в запросе POST, поэтому, если Вы собираетесь его менять, не забудьте откорректировать его в своих запросах.

Публикация на веб-сервере
Также необходимо зайти в эту папку и открыть файл default.vrd с помощью любого редактора текстов. В строчке, которая начинается «ib=”File="», надо вставить параметры «usr» и «pwd» (пользователь и пароль для входа в 1С) с соответствующими значениями, как это показано на изображении, или оставить их пустыми (значки «=» нужно оставить в любом случае «usr=; pwd=;»).

Проверка и демонстрация работы сервиса учётной системы
Откройте режим предприятие и запустите обработку.

Отправить POST запрос
Клиент добавился в список справочника. Найдите его код и в любом браузере напишите запрос GET на подобии того запроса, что был прописан в модуле обработки:
localhost/InfoBase/hs/demo/example_get/000000001
localhost или localhost:8080 – адрес сервера Apache
InfoBase – название публикации
hs – Handler Service, прописывается всегда
demo – корневой URL HTTP- сервиса
example_get – шаблон метода
В шаблоне у нас также параметр customer_code, куда вставляется код клиента. После перехода по этому запросу на странице браузера выводится JSON с информацией о клиенте.

Представленные тут материалы предоставляют информацию для того, чтобы настроить своё рабочее место под тестирование и разработку HTTP-сервисов в 1С.
Удачного программирования!
Тюкавкин Арсений,
Специалист компании ООО “Кодерлайн”
Добавить комментарий