1С настройка HTTP сервиса

В платформе версии 8.3.5 появилась возможность создавать HTTP-сервисы. Как и «старые» SOAP web-сервисы, HTTP-сервис позволяет получать/изменять данные, но при этом, как утверждает компания 1С, HTTP-сервисы потенциально позволяют упростить создание клиентских приложений, уменьшить объем передаваемых данных и вычислительную нагрузку, все это особенно для мобильных устройств.

В этой статья я постараюсь рассказать о том, как создавать, отлаживать и использовать HTTP-сервисы в 1С.

Начнем с того, что для создания HTTP-сервиса нам необходим веб-сервер, например Apache 2.2 (начиная с версии 8.3.8 и Apache 2.4 подойдет). Описывать установку веб-сервера думаю нет необходимости.

Создание HTTP-сервиса

Итак, создаем новый HTTP-сервис:

Новый HTTP-сервис

Корневой URL — важный параметр, входит в адрес по которому сервис будет доступен после публикации.

В соответствующем разделе создаем новый шаблон URL и метод:

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

У шаблона URL есть единственное свойство — шаблон. Этим свойством можно задать путь по которому будет происходить обращение к HTTP-сервису. В шаблоне можно использовать параметризованные сегменты, как на рисунке ниже (об их использовании ниже).

Свойства шаблона

При обращении к HTTP-сервису, платформа пытается сопоставить адрес, по которому произошло обращение с одним из имеющихся шаблонов и методов. Если сопоставить удалось, то будет выполнен обработчик метода, если же сопоставить не удалось, то будет возвращен код ответа 404.

Свойства метода

Перейдем к примеру обработчика метода, в нем я возвращаю содержимое переменной «Запрос», которая передается в обработчик:

Публикация и проверка HTTP-сервиса

Наш HTTP-сервис готов к публикации, в этом нет ничего сложного (вероятно потребуется запустить конфигуратор от имени администратора):

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

  • localhost — адрес сервера;
  • HTTPTest — имя указанное при публикации;
  • hs — обязательный сегмент пути, дающий понять, что работаем мы именно с HTTP-сервисом;
  • Obmen — корневой URL HTTP-сервиса;
  • test-paramenter/Test — путь к методу внутри сервиса, определяется шаблоном;
  • GetInfo — название метода;
  • ?param=value — необязательный пример передачи методу параметров.

Результат выполнения метода

Параметры URL, параметры запроса и заголовки представлены в виде фиксированных структур.

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

Первый — изменить файл default.vrd, который находится в каталоге публикации. В этом файле нужно дополнить строку подключения к базе, например, было:

ib=»File="C:\Base\TEST";»,

стало:

ib=»File="C:\Base\TEST";Usr=Логин;Pwd=Пароль».

В этом случае любые обращения к HTTP-сервису не будут требовать логина и пароля.

Во-вторых, можно указывать логин и пароль при подключении к HTTP-сервису:

В других языках программирования аналогично.

Кроме этого можно использовать windows-авторизацию.

Отладка HTTP-сервисов

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

Отладка HTTP-сервисов

Во-вторых, в конфигураторе, в меню «Отладка»->»Подключение…» нужно настроить автоматическое подключение:

Настройка автоматического подключения

И, наконец, в-третьих, нужно перезапустить веб-сервер.

Кроме этого для полноценной отладки могут потребоваться сторонние программы, так как браузер всегда старается использовать метод GET. Для тестирования всех остальных HTTP-методов можно использовать бесплатный Fiddler2 (http://www.telerik.com/fiddler).

Тонкий клиент — это одно из клиентских приложений системы «1С:Предприятие 8». В операционной системе Windows исполняемый файл этого приложения — 1cv8c.exe. В операционной системе Linux — 1cv8c.

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

Подключение через Интернет

Тонкий клиент позволяет работать с интерфейсом «1С:Предприятия 8» через Интернет. Для этого используется веб-сервер, настроенный для работы с «1С:Предприятием 8».

Тонкий клиент взаимодействует с веб-сервером по протоколу HTTP или HTTPS. Веб-сервер, в свою очередь, взаимодействует с «1С:Предприятием 8» в файловом или клиент-серверном варианте работы.

В качестве веб-сервера используется Apache или IIS. Подробнее…

Клиент-серверный вариант работы

В клиент-серверном варианте работы тонкий клиент взаимодействует с кластером серверов напрямую, по протоколу TCP/IP. Подробнее…

Файловый вариант работы

Если система «1С:Предприятие 8» работает в файловом варианте, то тонкий клиент взаимодействует непосредственно с файловой базой данных. В этом варианте работы толстому клиенту требуется непосредственный файловый доступ к базе данных, например, через общий сетевой ресурс.

При работе тонкого клиента в файловом варианте работы на компьютере, где запущен сам тонкий клиент, организуется специализированная среда. В рамках этой специализированной среды выполняются:

  • загрузка необходимых для работы системы серверных компонентов,
  • загрузка прикладной конфигурации,
  • другие действия, необходимые для организации нормальной работы системы с информационной базой.

С точки зрения тонкого клиента, данная среда выступает в роли сервера. С точки зрения операционной системы, данная специализированная среда не выделена в отдельный процесс и выполняется в рамках процесса тонкого клиента.

В дополнение к автоматическому REST интерфейсу прикладного решения в платформе существует возможность создания собственных произвольных HTTP-сервисов в прикладном решении.

Разработчик самостоятельно, с помощью встроенного языка, формирует ответ на запрос. При этом есть удобный доступ к телу, заголовкам и строке исходного запроса, а также есть возможность формировать код, тело и заголовки ответа по своему усмотрению.

По сравнению с имеющимися в платформе SOAP web-сервисами, HTTP-сервисы имеют ряд преимуществ:

  • Простота программирования клиента таких сервисов;
  • Потенциально меньший объем передаваемых данных;
  • Потенциально меньшая вычислительная нагрузка;
  • HTTP-сервисы ориентированы на «ресурсы», в то время как SOAP сервисы ориентированы на «действия».

Первые три фактора особенно важны для приложений, работающих на мобильных устройствах.

Можно использовать HTTP-сервисы как «легкие» RPC-сервисы, не требующие сложной подготовки XML-пакетов. Методы могут идентифицироваться в URL, а параметры могут передаваться в опциях запроса, или в его теле. В последнем случае такие сервисы уже вплотную приближаются как SOAP, проигрывая ему в четкости спецификации, но выигрывая в гибкости.

По своему «конструктивному исполнению» HTTP-сервисы очень напоминают web-сервисы, имеющиеся в платформе. Точно так же есть специальный объект конфигурации HTTP сервис. Такие объекты добавляются в ветку Общие — HTTP-сервисы:

Каждый HTTP-сервис может содержать в себе один или несколько шаблонов. Для каждого шаблона можно создать один или несколько методов, выполняющих обработку данных:

Шаблон задаёт путь, по которому может происходить обращение к HTTP-сервису. В шаблоне можно использовать определённый набор символов, в том числе параметризованные сегменты вида {какой-то текст}.

Для каждого метода указывается, во-первых, обрабатываемый HTTP метод, а также создаётся процедура на встроенном языке, которая и будет выполнять обработку данных. Также можно указать, что будет обрабатываться не какой-то конкретный, а любой HTTP-метод из доступных.

При обращении к такому HTTP-сервису платформа сначала попытается сопоставить URL, по которому произошло обращение, с одним из имеющихся шаблонов и методов. Если сопоставить не удалось, то платформа выдаст код ответа 404 Not Found. Если подходящий метод будет найден, то платформа начнёт выполнение его обработчика, передав в него все имеющиеся в запросе данные в виде объекта встроенного языка HТТРСервисЗапрос:

Из этого объекта можно легко получить, например, параметры, содержащиеся в исходном URL, и использовать их для извлечения из базы нужных данных.

Полученные данные можно вернуть в разных форматах. Например, их можно преобразовать в XML, как на картинке выше, или даже просто в текстовую строку с разделителями.

Ответ сервиса формируется специальным объектом встроенного языка HТТРСервисОтвет, в тело которого можно поместить подготовленные данные.

Публикация HTTP-сервисов выполняется аналогично тому, как публикуются web-сервисы. Также аналогичным образом для них работает аутентификация, использование разделения данных и отладка.

Технологии интеграции 1С:Предприятия 8.3

Авторы: Е.Ю. Хрусталева