Вебхуки и события
У обмена ровно два источника, и оба только ставят задачу в очередь:
- события Битрикс24 — сделку, контакт или компанию создали либо изменили: задача на выгрузку;
- вебхуки МойСклад — изменился заказ или контрагент: задача на загрузку.
Опроса API по расписанию нет: модуль узнаёт об изменениях в момент, когда они произошли. Это и быстрее, и бережнее к лимитам МойСклад.
События Битрикс24
Модуль подписан на шесть событий CRM: добавление и изменение сделок, контактов и компаний. Обработчики регистрируются автоматически при установке, их список виден на странице «События модуля» в разделе диагностики.
Переключатели на этой странице существуют для диагностики: отключение нужно, когда техподдержка просит временно остановить конкретный обработчик. Выключенное событие не останавливает обмен целиком и ничего не удаляет — оно лишь перестаёт создавать задачи, и правки в CRM тихо перестают доезжать до МойСклад.
Событие срабатывает не на каждое сохранение: если изменение приехало из МойСклад, модуль распознаёт собственную запись и не отправляет её обратно.
Вебхуки МойСклад
Вебхук — способ МойСклад сообщить модулю, что заказ или контрагент изменились. Без вебхуков обмен работает только в одну сторону: из Битрикс24 в МойСклад.
Настройка состоит из двух независимых частей:
Файл-обработчик на вашем сервере
Адрес, по которому МойСклад будет стучаться. Модуль разворачивает обработчик сам из интерфейса и прописывает ему доступ, а затем проверяет реальным запросом, что адрес отвечает, — ходить на сервер по FTP не нужно. Целевое состояние: файл установлен и доступ разрешён.
Если у обработчика нет доступа, Битрикс отдаёт МойСкладу форму логина вместо ответа, и уведомления просто не доходят — при этом в МойСклад вебхуки выглядят созданными. Модуль прописывает разрешение сам, сделав резервную копию файла доступов.
Вебхуки в аккаунте МойСклад
Записи в вашем аккаунте, указывающие на адрес обработчика. Модуль создаёт недостающие одной кнопкой. Целевое состояние — девять вебхуков: три сущности на три действия (создание, изменение, удаление).
Секретный ключ модуль генерирует сам: по нему он отличает настоящие уведомления от посторонних запросов.
Ключ входит в адрес вебхука, поэтому после его замены ранее созданные хуки продолжают вести на старый адрес и перестают работать. Лечится повторным обновлением хуков — но забыть об этом нельзя, иначе импорт молча остановится.
Вебхуки на действие «Удаление» регистрируются, но модуль их сознательно пропускает: удаление заказа или контрагента в МойСклад не удаляет ничего в Битрикс24. Это защита от потери данных, а не сбой настройки.
Что нужно от сервера
- Публично доступный адрес на сайте портала — для приёма уведомлений МойСклад.
- Агенты Битрикс на cron — для обработки очереди. См. настройку агентов.