← Вся база знаний/1С:Предприятие

1С: Быстрый и отказоустойчивый HTTP-сервис

Чек-лист создания легковесных REST-эндпоинтов без блокировок и утечек

Обновлено: Октябрь 2026•Время чтения: 4 мин•
#1С#HTTP-сервисы#REST#JSON#Архитектура

Краткая суть (TL;DR)

Как проектировать HTTP-сервисы в 1С 8.3: формат JSON, отдача 200/400/500, работа без зависших транзакций, идемпотентность и журнал сбоев.

1. Базовый шаблон обработчика GET/POST

Всегда перехватывайте исключения в корне метода и упаковывайте ответ в предсказуемый JSON:

bsl
Функция ЗаказыPOST(Запрос)
    Ответ = Новый HTTPСервисОтвет(200);
    Ответ.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
    
    Попытка
        ЧтениеJSON = Новый ЧтениеJSON;
        ЧтениеJSON.УстановитьСтроку(Запрос.ПолучитьТелоКакСтроку());
        Данные = ПрочитатьJSON(ЧтениеJSON, Ложь);
        
        // Бизнес-логика: запись в регистр или проведение
        Результат = ОбработатьЗаказ(Данные);
        
        ЗаписьJSON = Новый ЗаписьJSON;
        ЗаписьJSON.УстановитьСтроку();
        ЗаписатьJSON(ЗаписьJSON, Новый Структура("success,id", Истина, Результат.Идентификатор));
        Ответ.УстановитьТелоИзСтроки(ЗаписьJSON.Закрыть());
    Исключение
        Ответ.КодСостояния = 500;
        ЗаписьЖурналаРегистрации("API.Заказы", УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
        Ответ.УстановитьТелоИзСтроки("{""error"":""Внутренняя ошибка сервиса""}");
    КонецПопытки;
    
    Возврат Ответ;
КонецФункции

Важные нюансы и рекомендации:

  • ◆Никогда не выполняйте тяжелую аналитику синхронно — складывайте сырой JSON в промежуточный регистр сведений и обрабатывайте фоновым заданием.
  • ◆Используйте Content-Type: application/json; charset=utf-8 обязательно, иначе клиенты на Go/Node.js могут сломаться на кириллице.
  • ◆Для отслеживания сквозных цепочек логируйте входящий заголовок X-Request-Id.

2. Идемпотентность и повторные запросы

Шлюзы банков и маркетплейсов всегда повторяют запросы при таймаутах. Защитите базу от дублей документов:

Важные нюансы и рекомендации:

  • ◆Создайте регистр сведений «ВходящиеСообщения» (Измерения: Источник, ВнешнийИдентификатор).
  • ◆При старте транзакции фиксируйте статус «ВОбработке». Если ключ уже есть — отдавайте 200 OK с сохраненным ранее результатом, не создавая повторный документ.
  • ◆Периодически очищайте лог старше 30 дней регламентным заданием.