|

Установка apache 2.4  в связке с 1С веб-сервером и установка https протокола


Содержание:

  1. Установка Apache 2.4 на Windows
  2. Расширение WEB-сервера и создание HTTP-сервиса в 1С
  3. Обработка для отправления POST запросов в 1С
  4. Публикация на WEB-сервере 1С
  5. Проверка и демонстрации работы сервиса учетной системы 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). Чтобы запустить сервер необходимо проделать следующие шаги:

  1. Разархивируйте дистрибутив в папку, в которой нет ограничения по правам на запись. Перейдите в разархивированную папку 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 сервиса:

  1. В дереве конфигурации откройте раздел общее и создайте новый 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С.

Удачного программирования!

Тюкавкин Арсений,
Специалист компании ООО “Кодерлайн”


Помогла ли вам статья? Оставьте свой комментарий:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Блог про 1С:Предприятие

Copyright © 2024 TopKoder

Мы занимаемся внедрением и обслуживанием программных продуктов 1С.