Интеграция Битрикс24 и МойСклад: двусторонняя синхронизация сделок, клиентов и товаров
Модуль связывает CRM Битрикс24 и складской учёт МойСклад в один рабочий контур. Менеджер ведёт сделку в привычной CRM — в МойСкладе сам появляется заказ покупателя или заказ поставщику: с клиентом, составом товаров, ценами, скидками и ставками НДС. Кладовщик или бухгалтер меняет документ в учёте — изменение возвращается в карточку сделки.
Никаких файлов обмена, кнопок «выгрузить» и переписывания строк руками: обмен запускают события CRM и уведомления МойСклад.
🔗 Карточка модуля в Маркетплейс 1С-Битрикс: marketplace.1c-bitrix.ru/solutions/despi.moyskladcrm
Технический идентификатор модуля —
despi.moyskladcrm. Модуль предназначен для коробочной версии Битрикс24 с модулем CRM.
Задача
Компания ведёт продажи в Битрикс24, а деньги, остатки и документы — в МойСкладе. Между двумя системами всегда оказывается человек: менеджер закрыл сделку, кто-то завёл по ней заказ в учёте, кладовщик отгрузил, бухгалтер свёл суммы. На каждом переносе теряется время и появляются расхождения — заказ с другим составом, клиент-дубль, не та ставка НДС.
Ручной перенос ломается ровно там, где это заметнее всего:
- Данные расходятся. В сделке одна сумма, в заказе другая, и найти, где именно разошлось, можно только глазами.
- Клиентская база дублируется. Один и тот же контрагент заводится в учёте заново, потому что никто не проверил, есть ли он там.
- Никто не видит картины. Заказ «не уехал» — и это выясняется через неделю, когда клиент звонит и спрашивает про отгрузку.
Что делает модуль
Модуль берёт на себя перенос данных между системами и делает его двусторонним и разбираемым на части: каждый контур, каждое направление и каждое поле включаются отдельно. Интеграцию не обязательно вводить целиком — можно начать с выгрузки сделок, потом добавить состав заказа, клиентскую базу, справочники и приём изменений обратно.
Что синхронизируется
- Сделки и заказы покупателя МойСклад — в обе стороны.
- Сделки и заказы поставщику МойСклад — отдельный контур со своими настройками.
- Контакты и компании Битрикс24 и контрагенты МойСклад — включая юрлиц, ИП и физлиц.
- Реквизиты клиента: ИНН, КПП, ОГРН, юридическое название, адреса, телефон, почта, сайт.
- Состав заказа: товарные строки сделки и позиции документа — товар, количество, цена, скидка, ставка НДС.
- Номенклатура: товары, услуги, комплекты и модификации (торговые предложения) с картинками и характеристиками.
- Стадии сделки и статусы документа, статусы контрагента.
- Ответственный менеджер и валюта документа.
- Теги (группы) контрагента и произвольные пользовательские поля обеих систем.
- Справочники: сотрудники, валюты, единицы измерения, ставки НДС.
Как это выглядит в работе
Менеджер сохраняет сделку. Модуль ловит событие CRM и ставит задачу в очередь обмена — карточка сохраняется мгновенно, без ожидания ответа внешнего сервиса. Дальше очередь делает всё остальное: проверяет, проходит ли сделка по фильтру, ищет уже связанный документ, создаёт новый или обновляет существующий, подтягивает клиента и состав товаров, дозаписывает связку.
В обратную сторону так же: МойСклад присылает уведомление об изменении документа или контрагента, модуль кладёт его в очередь и обновляет карточку в Битрикс24. Опроса API по расписанию нет — значит, нет ни задержки в полчаса, ни лишней нагрузки на лимиты учётной системы.
При повторном обмене модуль сравнивает собранные данные с текущими и отправляет только изменившиеся поля. Если не изменилось ничего — запроса на запись не будет вовсе. Состав заказа сравнивается построчно: совпавшие позиции не трогаются, обновляются только те, что реально поменялись.
Кому это нужно
- Оптовой компании, у которой продажи живут в CRM, а отгрузки и остатки — в МойСкладе.
- Интернет-магазину на коробочном Битрикс24, где заказы превращаются в сделки, а учёт ведётся отдельно.
- Компании с закупками: отдельный контур заказов поставщику ведёт снабжение в той же CRM.
- Интегратору, которого попросили «связать Битрикс24 и МойСклад» и который не хочет писать и поддерживать эту интеграцию сам.
Возможности
Настройка без программиста
Всё настраивается в интерфейсе модуля, списками и таблицами соответствий, а не правкой кода:
- Сопоставление полей. Любое поле сделки, контакта или компании связывается с любым полем документа или контрагента МойСклад — стандартным, пользовательским или дополнительным (атрибутом). У каждой пары своё направление: в МойСклад, в Битрикс24 или в обе стороны.
- Значения по умолчанию. Организация, склад, канал продаж — то, что постоянно и не хранится в CRM, задаётся правилом, а не отдельным полем в Битрикс24.
- Поля поиска связанной записи. Связь ведётся по тому полю, которое уже сложилось в ваших данных: внешнему коду, ИНН, номеру договора.
- Фильтры обмена. Условия на поля решают, какие сделки уезжают в учёт и какие документы принимаются обратно.
- Справочники соответствий. Сотрудники, валюты, единицы измерения и ставки НДС сопоставляются явной таблицей — видно, что с чем связано и почему значение не перенеслось.
- Создание полей CRM. Служебные поля, которые нужны интеграции (признак типа документа, тип контрагента, статус, теги), модуль заводит сам из своих настроек — ходить в конструктор полей Битрикс24 не нужно.
- Помощник настройки каталога. Инфоблоки, разделы, группы товаров МойСклад и поля связи выбираются из подставленных списков, а не вводятся идентификаторами.
Все настройки живут внутри профиля обмена, поэтому у разных профилей соответствия, фильтры и поля свои и не мешают друг другу.
Надёжность: очередь, проверки и разбор ошибок
Интеграция с внешним сервисом ломается предсказуемо: сервис недоступен, API ограничил частоту запросов, поле заполнено не так. Модуль рассчитан именно на это.
- Очередь обмена. Задачи копятся в отдельной линии на каждый профиль и обрабатываются пакетами. Повторные правки одной сделки склеиваются в одну задачу: десять изменений подряд не превращаются в десять обращений к МойСкладу. Сбой не теряется — задача повторяется.
- Проверка готовности настроек. Перед каждым обменом модуль смотрит, достаточно ли настроек, чтобы запись нашлась и связалась. Недонастроенный контур обмен не запускает — вместо того чтобы плодить дубли. Состояние по обоим видам документов, трём типам контрагента и четырём справочникам видно на дашборде.
- Защита от дублей. Перед созданием записи модуль ищет её пару на другой стороне и обновляет найденную. Если поиск не выполнился из-за сбоя, обмен прерывается и повторяется позже: создавать запись вслепую после ошибки нельзя, это гарантированный дубль.
- Защита от зацикливания. Записи, которые модуль делает сам, не запускают встречный обмен: ни события CRM, ни уведомления МойСклад на них не срабатывают.
- Страница очереди. Видно каждую задачу: направление, документ, состояние, число попыток, полный текст ошибки. Задачу можно выполнить принудительно или удалить, не дожидаясь расписания. Рядом — карточка агента: активен ли, когда следующий запуск, кнопки установить и прогнать проход вручную.
Товары и каталог
Товарная часть — самое трудоёмкое место любой интеграции, и здесь она разобрана подробно.
Товар ищется по выбранному вами полю связи: внешнему коду (XML_ID) или конкретному свойству инфоблока, а на стороне МойСклад — по внешнему коду или внутреннему идентификатору. Если XML_ID уже занят выгрузкой из 1С или интернет-магазина, связь настраивается на своё свойство, не ломая существующие интеграции. После создания товара код связи дозаписывается обратно, чтобы следующий обмен нашёл товар, а не создал второй.
Если товара во второй системе ещё нет, модуль создаёт его сам: переносит название, описание, единицу измерения, картинки и характеристики. Связанные сущности разворачиваются каскадом — у модификации сначала создаётся родительский товар, у комплекта сначала компоненты.
Благодаря этому обмен заказами можно запустить, не выгружая заранее весь каталог: номенклатура наполняется по мере появления реальных заказов и остаётся связанной с обеих сторон.
Разделы документации
| Раздел | О чём |
|---|---|
| Установка и порядок настройки | Установка модуля, подключение к МойСклад, пять шагов настройки и проверка живого обмена. |
| Документы: сделки и заказы | Заказ покупателя и заказ поставщику: тип документа, поиск связанной записи, поля, статусы, фильтры, справочники. |
| Контрагенты и реквизиты | Контакты и компании Битрикс24 ↔ контрагенты МойСклад: юрлицо, ИП, физлицо, реквизиты, адреса, группы и статусы. |
| Товары и состав заказа | Корзина сделки и позиции документа, поиск и создание номенклатуры, модификации, характеристики, цены и НДС. |
| Сопоставление полей | Как значения едут между системами: пары полей, направление, совместимость типов, пустые значения. |
| Очередь обмена | Триггеры, путь задачи, состояния, повторы и лимиты, разбор типовых проблем. |
| Вебхуки и события | Уведомления МойСклад и события CRM — два источника обмена и их настройка. |
| Диагностика | Дашборд, журнал действий, логи, таблицы модуля — где смотреть, что произошло. |
| Требования и ограничения | Редакции Битрикс24, тариф МойСклад, доступ к API — и честный список того, чего модуль не делает. |
| Вопросы и ответы | Дубли, скорость обмена, недоступность МойСклад, ИП и физлица, остатки и цены, удаление записей. |
Инструкции, общие для всех модулей Despi: настройка агентов на cron (без неё очередь обмена не работает) и установка модуля.
Что важно понимать с самого начала
- Обмен идёт в фоне, а не в момент сохранения. Сохранение сделки создаёт задачу, и модуль тут же запускает её фоновым прогоном — обычно заказ появляется за считаные секунды, а работа менеджера не тормозится. Гарантия при массовых изменениях — до минуты.
- Недонастроенная сущность пропускается молча. Если настроек не хватает, модуль не ругается: задача завершится успешно, а в МойСкладе ничего не появится. Причина пишется в журнал действий, а не в ошибки очереди.
- Контрагентов придётся настроить в любом случае. У заказа не может не быть клиента, поэтому внутри сделки контрагент обменивается всегда — даже если отдельный обмен контактами и компаниями выключен.
- Удаления не переносятся. Удалённая сделка не удаляет заказ в МойСкладе, удалённый контакт не удаляет контрагента, и наоборот. Это сделано намеренно: обмен не должен уносить данные.
- Конфликты правок не разрешаются. Если одно и то же поле поменяли с обеих сторон, победит та сторона, чей обмен выполнился последним.
- Права в учётной системе определяются токеном. Модуль работает в МойСкладе от имени той учётной записи, под которой выпущен токен доступа.