← База знаний

Webhook в 1С — приём уведомлений

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

Что такое Webhook

Webhook — это HTTP-запрос, который внешний сервис отправляет на ваш URL при наступлении события. В отличие от опроса (polling), вам не нужно постоянно запрашивать данные — сервис сам уведомит вас.

Примеры использования

  • Новый заказ на Ozon/Wildberries → создание заказа в 1С
  • Оплата в банке → изменение статуса счёта
  • Статус доставки СДЭК → обновление документа
  • Новая сделка в CRM → создание контрагента

Создание обработчика Webhook

  1. Создайте HTTP-сервис в конфигураторе
  2. Добавьте шаблон URL (например, «/webhook»)
  3. Добавьте метод POST
  4. Напишите обработчик

Пример кода

Функция ОбработатьWebhook(Запрос)
    
    // Получаем тело запроса
    ТелоЗапроса = Запрос.ПолучитьТелоКакСтроку();
    
    // Парсим JSON
    ДанныеJSON = JSON.Прочитать(ТелоЗапроса);
    
    // Обрабатываем событие
    ТипСобытия = ДанныеJSON.event_type;
    
    Если ТипСобытия = "order.created" Тогда
        СоздатьЗаказИзWebhook(ДанныеJSON.data);
    ИначеЕсли ТипСобытия = "payment.received" Тогда
        ОбработатьОплату(ДанныеJSON.data);
    КонецЕсли;
    
    // Возвращаем 200 OK
    Ответ = Новый HTTPСервисОтвет(200);
    Возврат Ответ;
    
КонецФункции

Важные моменты

  • Отвечайте быстро — webhook должен вернуть 200 за секунды
  • Обрабатывайте асинхронно — сохраните данные и обработайте в фоне
  • Проверяйте подпись — если сервис её присылает
  • Обрабатывайте дубли — webhook может прийти несколько раз

Асинхронная обработка

Чтобы не блокировать webhook, сохраняйте запрос и обрабатывайте позже:

// В обработчике webhook
НоваяЗапись = РегистрыСведений.ОчередьWebhook.СоздатьМенеджерЗаписи();
НоваяЗапись.Период = ТекущаяДатаСеанса();
НоваяЗапись.Данные = ТелоЗапроса;
НоваяЗапись.Обработан = Ложь;
НоваяЗапись.Записать();

// Регламентное задание обработает очередь

Публикация и доступ

  1. Опубликуйте HTTP-сервис на веб-сервере
  2. Откройте порт 443 (HTTPS обязателен для большинства сервисов)
  3. Укажите URL в настройках внешнего сервиса

Нужна настройка webhook?

Настрою приём уведомлений от маркетплейсов, CRM и других сервисов.

Обсудить в Telegram