HTTP-сервисы 1С
HTTP-сервисы 1С — это механизм платформы «1С:Предприятие», предназначенный для создания и публикации веб-сервисов, которые обмениваются данными с внешними системами (мобильными приложениями, сайтами, сторонними программами) по протоколу HTTP. Данный механизм позволяет реализовать серверную логику прикладного решения и предоставить к ней доступ в виде RESTful API (интерфейса, следующего принципам архитектуры REST). HTTP-сервисы являются альтернативой более старому механизму веб-сервисов на основе SOAP и ориентированы на современные стандарты веб-разработки.
История и предпосылки появления
До появления HTTP-сервисов в платформе «1С:Предприятие» основным способом интеграции с внешними системами были:
- COM-соединение — для взаимодействия между приложениями на одном компьютере или в локальной сети.
- Веб-сервисы (SOAP) — для обмена данными по сети с использованием XML-формата и сложных протоколов.
С ростом популярности REST-архитектуры и упрощённых форматов данных (JSON) возникла потребность в более лёгком и производительном способе интеграции. Механизм HTTP-сервисов был впервые реализован в версии платформы 8.3.6 (выпуск 2015 года). Он позволил разработчикам создавать методы, которые вызываются через обычные HTTP-запросы (GET, POST, PUT, DELETE), и возвращать данные в формате JSON, XML или любом другом текстовом формате.
Архитектура и принцип работы
Публикация на веб-сервере
Для работы HTTP-сервисов необходимо опубликовать информационную базу 1С на веб-сервере (Apache, IIS, Nginx). При публикации создаётся файл default.vrd, в котором описываются все HTTP-сервисы, их URL-шаблоны и права доступа. Веб-сервер перенаправляет запросы к этим URL в платформу 1С, где они обрабатываются.
Структура HTTP-сервиса
В конфигураторе 1С HTTP-сервис описывается как объект метаданных, который включает:
- Корневой URL — базовый путь, по которому доступен сервис (например,
/hs/myService). - Шаблоны URL — более конкретные пути, которые могут содержать параметры (например,
/hs/myService/{id}). - Методы — процедуры, написанные на встроенном языке 1С, которые обрабатывают запросы. Каждый метод привязан к определённому HTTP-методу (GET, POST, PUT, DELETE) и шаблону URL.
Обработка запроса
- Внешняя система отправляет HTTP-запрос на адрес опубликованного сервиса.
- Веб-сервер передаёт запрос платформе 1С.
- Платформа определяет, какой HTTP-сервис и какой метод должен обработать запрос, на основе URL и HTTP-метода.
- Выполняется код на встроенном языке. В этом коде разработчик может:
- Прочитать параметры запроса (из URL, заголовков, тела запроса).
- Выполнить любые действия в базе данных (чтение, запись, вызов отчётов, проведение документов).
- Сформировать ответ (обычно в формате JSON или XML) и установить HTTP-статус (200 OK, 404 Not Found, 500 Internal Server Error и т.д.).
- Ответ возвращается внешней системе.
Классификация и типы
HTTP-сервисы 1С можно классифицировать по нескольким признакам:
По назначению
- Сервисы для чтения данных — предоставляют данные из базы 1С (справочники, документы, отчёты) без их изменения. Обычно используют метод GET.
- Сервисы для записи данных — позволяют создавать, изменять или удалять объекты базы данных. Используют методы POST, PUT, DELETE.
- Сервисы для выполнения бизнес-логики — запускают сложные алгоритмы (например, расчёт себестоимости, проверка остатков, формирование заказов).
По формату обмена
- JSON-сервисы — наиболее распространённый тип. Данные передаются в лёгком и читаемом формате.
- XML-сервисы — используются в системах, где требуется строгая структура данных или интеграция с legacy-системами.
- Сервисы с произвольным форматом — могут возвращать HTML, CSV, изображения или любые бинарные данные.
По уровню доступа
- Открытые сервисы — доступны без аутентификации (например, для публичных каталогов товаров).
- Сервисы с базовой аутентификацией — требуют имя пользователя и пароль, передаваемые в заголовке HTTP.
- Сервисы с OAuth 2.0 — используют токены доступа, что более безопасно и гибко.
Применение
HTTP-сервисы 1С широко используются в различных сценариях интеграции:
Интеграция с веб-сайтами и интернет-магазинами
- Выгрузка каталога товаров — сайт получает актуальные цены, остатки и описания из 1С по запросу.
- Приём заказов — заказ, оформленный на сайте, передаётся в 1С через POST-запрос, где создаётся документ «Заказ клиента».
- Синхронизация статусов — сайт может узнавать статус выполнения заказа (собран, отгружен, оплачен).
Мобильные приложения
- Мобильные приложения для менеджеров, курьеров или складских работников получают данные из 1С и отправляют обратно (например, отчёт о доставке, фото товара).
- Используется лёгкий формат JSON, что экономит трафик.
Интеграция с CRM и ERP-системами
- Обмен данными о клиентах, контрагентах, сделках между 1С и сторонними CRM (например, Bitrix24, AmoCRM).
- Получение данных из внешних систем (например, загрузка курсов валют, данных о погоде).
Создание API для внешних разработчиков
- Компании могут предоставлять доступ к данным 1С через задокументированное API, что позволяет сторонним разработчикам создавать собственные решения.
Пример реализации
Рассмотрим простой пример HTTP-сервиса, который возвращает список товаров с остатками.
- Создание HTTP-сервиса в конфигураторе: корневой URL —
/hs/catalog. - Добавление шаблона URL:
/hs/catalog/products(метод GET). - Написание кода метода:
```1c Процедура ПолучитьТовары(Запрос, Ответ) ЗапросSQL = Новый Запрос; ЗапросSQL.Текст = "ВЫБРАТЬ Товары.Ссылка, Товары.Наименование, Остатки.КоличествоОстаток ИЗ Справочник.Товары КАК Товары ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки КАК Остатки ПО Товары.Ссылка = Остатки.Товар"; Результат = ЗапросSQL.Выполнить().Выгрузить();
МассивJSON = Новый Массив; Для Каждого Строка Из Результат Цикл ОбъектJSON = Новый Структура; ОбъектJSON.Вставить("id", Строка.Ссылка.УникальныйИдентификатор()); ОбъектJSON.Вставить("name", Строка.Наименование); ОбъектJSON.Вставить("stock", Строка.КоличествоОстаток); МассивJSON.Добавить(ОбъектJSON); КонецЦикла;
Ответ.УстановитьТелоИзСтроки(ЗаписатьJSON(МассивJSON)); Ответ.УстановитьКодСостояния(200); КонецПроцедуры ```
- Публикация базы на веб-сервере.
- Тестирование: запрос
GET http://server/MyBase/hs/catalog/products` вернёт JSON-массив товаров.
Преимущества и ограничения
Преимущества
- Простота — не требуется изучения сложных протоколов (SOAP, WSDL).
- Производительность — лёгкий формат JSON и отсутствие избыточных заголовков.
- Гибкость — можно реализовать любую бизнес-логику на стороне 1С.
- Стандартизация — HTTP-сервисы следуют принципам REST, что облегчает интеграцию с современными системами.
Ограничения
- Зависимость от веб-сервера — требуется корректная настройка публикации.
- Безопасность — необходимо реализовывать аутентификацию и защиту от несанкционированного доступа (например, через HTTPS, токены).
- Производительность при высоких нагрузках — платформа 1С не является высокопроизводительным веб-сервером, поэтому для тысяч запросов в секунду могут потребоваться дополнительные решения (кэширование, балансировка).
- Сложность отладки — ошибки в коде 1С могут приводить к неочевидным HTTP-статусам (500 или 400).
Критика и альтернативы
Некоторые разработчики критикуют HTTP-сервисы 1С за:
- Отсутствие встроенной поддержки OAuth 2.0 — требуется реализация вручную.
- Сложность работы с большими объёмами данных — платформа может потреблять много памяти при сериализации/десериализации.
- Ограниченную документацию — по сравнению с веб-сервисами SOAP, документация по HTTP-сервисам менее подробна.
Альтернативой HTTP-сервисам может быть использование внешних компонент (например, на C# или Java) для создания высокопроизводительного API, которое обращается к 1С через COM-соединение или прямой обмен через базу данных. Однако для большинства типовых задач интеграции HTTP-сервисы являются оптимальным решением.
Источники
- «1С:Предприятие 8.3. Руководство разработчика». — М.: Фирма «1С», 2023.
- «HTTP-сервисы (REST) в 1С:Предприятие 8.3» — статья на портале 1С:ИТС.
- «Интеграция 1С с внешними системами: практические примеры» — книга А. В. Гончарова, 2021.
- «REST API на платформе 1С:Предприятие» — доклад на конференции INFOSTART, 2022.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →