Как получать данные из AmoCRM в 1С через Webhook?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Интеграция сторонних CRM-систем с 1С — задача, с которой рано или поздно сталкивается каждый разработчик. Часто возникает необходимость «слушать» события в AmoCRM (например, изменение статуса сделки или создание контрагента) и мгновенно реагировать на них в своей учетной системе. Рассмотрим подробно, как организовать этот процесс с помощью механизма HTTP-сервисов.

Понимание архитектуры взаимодействия

Когда мы говорим о webhook, мы подразумеваем, что AmoCRM будет отправлять POST-запрос с данными (в формате JSON) на ваш публичный URL. Чтобы 1С смогла эти данные «увидеть» и обработать, она должна выступить в роли веб-сервера. Это значит, что нам нужно пройти путь от подготовки инфраструктуры до написания кода обработки запроса.

Шаг 1: Публикация информационной базы

Поскольку 1С по своей природе — это десктопное приложение, для работы с веб-запросами её необходимо «выставить» в сеть. Для этого мы публикуем базу на веб-сервере (Apache или IIS).

  1. Откройте Конфигуратор вашей базы.
  2. Перейдите в меню Администрирование -> Публикация на веб-сервере.
  3. Выберите веб-сервер, укажите каталог для публикации и имя (например, /AmoIntegration).
  4. Убедитесь, что установлен флажок Публиковать HTTP-сервисы.
  5. После публикации ваша база станет доступна по адресу вида: http://ваш-домен-или-ip/AmoIntegration/hs/.

Важно: Ваш сервер должен быть доступен из интернета. Если он находится в локальной сети, настройте проброс портов (NAT) на роутере.

Шаг 2: Создание HTTP-сервиса в 1С

После публикации базы приступаем к созданию объекта HTTP-сервис в конфигурации:

  1. В дереве конфигурации найдите ветку HTTP-сервисы, создайте новый сервис (назовем его, например, AmoWebhooks).
  2. Установите свойство Корневой URL, например, amo.
  3. Внутри сервиса создайте Шаблон URL с путем /events.
  4. Для этого шаблона создайте метод POST. Именно этот метод будет принимать данные от AmoCRM.

Шаг 3: Написание кода обработки

Теперь самое интересное — логика обработки входящего JSON. В модуле метода POST мы должны считать данные, которые прислала CRM.

Разберем пример кода, который принимает тело запроса и преобразует его в структуру 1С:


Функция PostМетод(Запрос)
    // Получаем тело запроса как строку
    СтрокаJSON = Запрос.ПолучитьТелоКакСтроку();
    
    // Записываем полученные данные в лог для отладки
    ЗаписьТекста = Новый ЗаписьТекста("C:\Temp\webhook_log.txt", КодировкаТекста.UTF8, , Истина);
    ЗаписьТекста.ЗаписатьСтроку(СтрокаJSON);
    ЗаписьТекста.Закрыть();
    
    // Преобразуем JSON в структуру 1С
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(СтрокаJSON);
    ДанныеСтруктура = ПрочитатьJSON(ЧтениеJSON);
    ЧтениеJSON.Закрыть();
    
    // Здесь размещаем логику работы с данными
    // Например: СоздатьСделку(ДанныеСтруктура);
    
    Возврат Новый HTTPСервисОтвет(200);
КонецФункции

Рекомендации по реализации

Работая с веб-сервисами, мы должны учитывать несколько критических моментов:

Помните, что настройка webhook — это процесс, требующий внимательности. Сначала протестируйте отправку POST-запросов через инструменты вроде Postman, чтобы убедиться, что ваш HTTP-сервис отвечает, и только потом подключайте реальную интеграцию с AmoCRM.

← На главную