Разработка REST-сервиса в среде 1С:Предприятие — это современный и эффективный способ интеграции учетной системы с внешними веб-сайтами, мобильными приложениями или сторонним ПО. Основная задача такого сервиса заключается в том, чтобы позволить внешней системе «постучаться» к 1С по определенному адресу и получить в ответ структурированные данные (обычно в формате JSON или XML). Рассмотрим подробно, как это реализовать, и разберем два основных пути решения задачи.
Прежде чем приступать к написанию кода, проанализируем саму суть задачи. В контексте 1С создание REST-сервиса не означает написание внешней программы на C# или Java. Весь процесс происходит внутри вашей информационной базы. 1С выступает в роли сервера, который ожидает входящие HTTP-запросы. Когда внешняя система обращается к опубликованному адресу базы, 1С запускает определенный метод, выполняет запрос к данным (например, к справочнику Номенклатура) и отдает результат. Выясним, какие инструменты для этого предоставляет платформа.
Платформа 1С содержит встроенный механизм, называемый автоматическим REST-интерфейсом (OData). Это самый простой путь, не требующий написания программного кода. Если вам нужно просто «открыть» справочник для чтения внешними системами, выполним следующие шаги:
Номенклатура).После этого внешние системы смогут получать данные, используя стандартные запросы. Например, для получения списка номенклатуры адрес будет выглядеть так: http://server/base/odata/standard.odata/Catalog_Номенклатура. Рассмотрим подробнее ситуацию, когда этого функционала недостаточно.
Если требования к API специфичны (нужен особый формат данных, сложная фильтрация или объединение данных из разных источников), нам необходимо создать объект HTTP-сервис в дереве конфигурации. Разберем этот процесс по шагам.
Шаг 1. Создание объекта HTTP-сервис. В дереве объектов найдем ветку «Общие» -> «HTTP-сервисы» и добавим новый объект, например, NomenclatureAPI. Укажем корневой URL (например, api).
Шаг 2. Определение шаблонов URL. Создадим шаблон GetItem с путем /item/{Articul}. Параметр в фигурных скобках позволит нам передавать конкретный артикул товара прямо в строке запроса.
Шаг 3. Добавление метода. Для шаблона добавим метод GET. Именно здесь мы будем писать программный код на языке 1С, который будет обрабатывать запрос.
Шаг 4. Написание программной логики. Рассмотрим пример кода, который ищет товар по артикулу и возвращает его наименование и цену в формате JSON. Проанализируем ситуацию в модуле сервиса:
Функция GetItemGet(Запрос)
// Извлекаем параметр из URL
АртикулТовара = Запрос.ПараметрыURL.Получить("Articul");
// Ищем товар в справочнике
СсылкаНаТовар = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", АртикулТовара);
Если СсылкаНаТовар.Пустая() Тогда
Ответ = Новый HTTPСервисОтвет(404); // Товар не найден
Возврат Ответ;
КонецЕсли;
// Формируем структуру ответа
ДанныеТовара = Новый Структура;
ДанныеТовара.Вставить("Name", СсылкаНаТовар.Наименование);
ДанныеТовара.Вставить("Code", СсылкаНаТовар.Код);
// Сериализация в JSON
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ДанныеТовара);
СтрокаJSON = ЗаписьJSON.Закрыть();
// Формируем HTTP-ответ
Ответ = Новый HTTPСервисОтвет(200);
Ответ.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Ответ.Заголовки.Вставить("Content-Type", "application/json");
Возврат Ответ;
КонецФункции
Чтобы созданный сервис стал доступен «извне», необходимо выполнить публикацию информационной базы. Рассмотрим, как это сделать правильно:
NomenclatureAPI отмечен галочкой.После публикации сервис будет доступен по адресу: http://адрес_сервера/имя_публикации/hs/api/item/000123. Где hs — стандартный сегмент для HTTP-сервисов 1С, а 000123 — артикул конкретного товара.
Проанализируем вопросы защиты данных. Выставлять базу 1С в интернет без авторизации — крайне опасная практика. Разберем основные правила:
Basic Authentication. Для работы сервиса создадим отдельного пользователя в 1С с ограниченными правами (только чтение нужных справочников) и сложным паролем.SSL, чтобы логины и пароли не передавались в открытом виде.C#. Используем специализированные инструменты, такие как Postman или Insomnia. Они позволяют отправлять любые HTTP-запросы и сразу видеть заголовки и тело ответа от 1С.Посмотрим на типичные ошибки. Если при обращении к сервису вы получаете ошибку 401 Unauthorized, проверьте правильность передачи логина и пароля. Если ошибка 404 Not Found — проверьте правильность пути в default.vrd и корректность шаблона URL в конфигурации.
Таким образом, мы выяснили, что создание REST-сервиса в 1С — это задача, полностью решаемая средствами встроенного языка и платформы. Выбор между автоматической OData и собственным HTTP-сервисом зависит от сложности ваших требований к интеграции. В большинстве случаев для промышленных решений рекомендуется использовать именно HTTP-сервисы, так как они обеспечивают полный контроль над структурой данных и безопасностью.