07.01.2019

Пример использования HTTP-сервисов в 1С

Автор: Белозерских Евгений

     Итак, давайте посмотрим как выглядит простой пример использования механизма «HTTP-сервисы» в платформе «1С:Предприятие»

Небольшая подготовка

     Для того чтобы наш HTTP-сервис заработал, нам необходимо:
  • Установленная компонента платформы - Web server extension modules
  • Установленный Web server - Apache или IIS

Возможные сложности с Apache

     Т.к. я всегда использую Apache (ничего против IIS не имею), то столкнулся с такой проблемой!
The Apache service named  reported the following error:
>>> httpd.exe: Syntax error on line 163 of C:/web_apache/conf/httpd.conf:
Cannot load C:/Program Files (x86)/1cv8/8.3.10.2580/bin/wsap24.dll into server:
The Apache service named \xed\xe5 \xff\xe2\xeb\xff\xe5\xf2\xf1\xff
\xef\xf0\xe8\xeb\xee\xe6\xe5\xed\xe8\xe5\xec Win32.     .
     Apache ставил x64, а платформа «1С» была x32. Проблема решилась скачиванием и установкой 64-разрядной версии платформы.
     В конфигурационный файл Apache (../conf/httpd.conf) пишется такая строка:
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.10.2580/bin/wsap24.dll"
     Видимо если платформа x32, то компонента wsap24.dll для Apache x64 не подходит.

Приступим!

     Будем делать HTTP-сервис, который будет содержать один параметр в URL адресе, который мы будем считывать, и возвращать в ответе.
     Добавим новый HTTP-сервис, в ветке метаданных конфигурации, и укажем необходимые свойства:

Окно свойств HTTP-сервиса 1С
     Указываем обязательные свойства:
  • Имя - имя нового объекта метаданных, в нашем случае «HelloHTTPService»
  • Корневой URL - указывается в строке URL адреса, при обращении к сервису

Шаблоны URL и HTTP-метод

     Теперь необходимо добавить шаблон и метод для нашего сервиса. HTTP-Метод будет также указываться в строке URL адреса (в нашем примере шаблон «Sample», метод «request»):

Свойства HTTP-шаблона
     В нашем примере формат шаблона "/{param}/*", это значит что в строке URL будет содержаться параметр, к которому можно обратиться по имени "param"
     Также добавим один метод для нашего шаблона, собственно его мы и будем вызывать:

Свойства метода HTTP-запроса
     В свойствах укажем HTTP-метод (в нашем случае это метод GET, но он не единственный), и обработчик, код обработчика располагается в модуле HTTP-сервиса.

Код модуля

     Теперь обработаем вызов сервиса, для этого напишем в модуле следующий код:
Функция samplerequest(Запрос)
	
	// Код 200, значит у нас все хорошо :)
	Ответ = Новый HTTPСервисОтвет(200);
	
	// Текст HTML страницы
	HelloHTTP	= "

Hello world!!!

"; // Наш параметр, его имя указано в шаблоне HTTPПараметр= Запрос.ПараметрыURL.Получить("param"); // Добавляем значение параметра к ответу сервиса HelloHTTP = HelloHTTP + "

URL Parameter: " + HTTPПараметр + "

"; // "Устанавливаем" текст HTML страницы Ответ.УстановитьТелоИзСтроки(HelloHTTP, "UTF8"); // Говорим что возвращаем HTML страницу Ответ.Заголовки["Content-Type"] = "text/html; charset=utf-8"; Возврат Ответ; КонецФункции

Публикация на веб-сервере

     Выполняем публикацию нашего сервиса на веб-сервере (в нашем примере Apache):
  • Указываем имя нашего сервиса, которое является частью URL адреса
  • Указываем версию веб-сервера Apache
  • Указываем каталог публикации (в нем платформа создаст *.vrd файл, его можно открыть блокнотом и посмотреть что там)
  • Проверяем что наш сервис отмечен к публикации
  • Нажимаем «Опубликовать» (т.к. происходит перезапуск службы веб-сервера, не забываем запускать «1С» с админскими правами, либо делаем рестарт службы вручную)
Диалоговое окно «1С:Предприятие» Публикация на веб-сервере

Что меняется после публикации сервиса

     При публикации, в файл конфигурации веб-сервера добавляется alias по имени сервиса, поэтому он становится доступен при обращении по URL адресу. Пример изменений в файле ../conf/httpd.conf
# 1c publication
Alias "/public" "C:/web_apache/_1c/"

    AllowOverride All
    Options None
    Require all granted
    SetHandler 1c-application
    ManagedApplicationDescriptor "C:/web_apache/_1c/default.vrd"

Проверка работоспособности HTTP-сервиса

     Если все сделано верно, то к нашему тестовому веб-сервису можно обратиться следующим образом
http://localhost/public/hs/service/HelloWorld/request - теперь разберем URL по частям:
  • localhost - адрес хоста по умолчанию (e.g. локальный компьютер)
  • public - имя указанное при публикации HTTP-сервиса, оно же указано в alias
  • hs - обязательная часть пути, предполагаю сокращение от Http Service
  • service - корневой URL указанный в свойствах HTTP-сервиса
  • HelloWorld - значение параметра, имя параметра задается в шаблоне (в нашем примере {param})
  • request - имя метода, в методе указан обработчик, код которого и выполняется

Заключение

     Спасибо что дошли до конца :) Вот хорошая ссылка на эту тему от «1С»: Создание и отладка HTTP-сервисов


Другие статьи

Транзакция не активна «1С:Предприятие»

  Давайте рассмотрим как правильно организовать работу с транзакциями в 1С

Запуск фонового задания в 1С

    Наглядный пример выполнения произвольного алгоритма в режиме фонового задания

Переопределение (подмена) формы при открытии

    Предлагаю рассмотреть пример того, как можно переопределить (подменить) открываемую форму на другую (произвольную)

Функциональные опции 1С 8.3 (Механизм, использование)

    Рассмотрим механизмы, назначение и применение функциональных опций в платформе "1С:Предприятие" 8.3. Для этого возьмем простую конфигурацию и проверим поведение системы при использовании функциональных опций.

Общие реквизиты 1С 8.3

Общий реквизит – это реквизит, добавляемый к нескольким объектам конфигурации. Так же общий реквизит может использоваться как составная часть специального механизма разделения данных
 

Выбор файла 1С 8.3

Диалог выбора файла и отказ от модальности в 1С 8.3

Получение данных динамического списка 1С 8.3

      Динамический список обеспечивает быстрый просмотр больших объёмов данных. Но получить дополнительную информацию, например количество строк в списке, напрямую мы не можем.
      Давайте рассмотрим то, как это можно сделать. Например получить таблицу значений по данным динамического списка

Установка отбора в динамическом списке (1C 8.2, 8.3)

Рассмотрим пример программной установки отборов в динамических списках 1С

Представление объектов (ссылок) в 1С

Пара слов о том, как можно изменить получаемое представление объекта (ссылки) в 1С

Работаем с регистрами сведений

Разберем структуру таблиц регистров сведений в СУБД, механизмы предоставляемые платформой для операций чтения, записи и удаления записей периодических и непериодических регистров сведений, а также регистров подчиненных регистратору.

Версия 8.3.7 и приятные новшества

Приветствую! В данном обзоре предлагаю рассмотреть некоторые новшества в механизмах платформы 1С:Предприятие версии 8.3.7.