Содержание
В платформе версии 8.3.5 появилась возможность создавать HTTP-сервисы. Как и «старые» SOAP web-сервисы, HTTP-сервис позволяет получать/изменять данные, но при этом, как утверждает компания 1С, HTTP-сервисы потенциально позволяют упростить создание клиентских приложений, уменьшить объем передаваемых данных и вычислительную нагрузку, все это особенно для мобильных устройств.
В этой статья я постараюсь рассказать о том, как создавать, отлаживать и использовать HTTP-сервисы в 1С.
Начнем с того, что для создания HTTP-сервиса нам необходим веб-сервер, например Apache 2.2 (начиная с версии 8.3.8 и Apache 2.4 подойдет). Описывать установку веб-сервера думаю нет необходимости.
Создание HTTP-сервиса
Итак, создаем новый HTTP-сервис:
Корневой 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
Авторы: Е.Ю. Хрусталева