Двусторонняя синхронизация RetailCRM и МойСклад — это не «зеркало», а чёткое распределение ролей: где рождается заказ, где резервируется товар, где формируется отгрузка. Разберём, что и куда передаётся, как избежать зацикливания и рассинхрона остатков.
Что значит «двусторонняя» и зачем она нужна
Односторонняя интеграция передаёт данные в одну сторону: например, только остатки из МойСклад в RetailCRM. Двусторонняя — это когда обе системы одновременно и источники, и приёмники данных, но по разным объектам. Заказ, созданный оператором в RetailCRM, должен появиться в МойСклад как отгрузка; товар, оприходованный на складе в МойСклад, должен обновить остаток в карточке RetailCRM.
Ключевая идея — не гонять одни и те же поля в обе стороны, а разделить зоны ответственности. Для каждого типа данных назначается мастер-система (система-владелец), а вторая только принимает изменения. Иначе оператор и кладовщик будут перетирать правки друг друга.
Кто чем владеет: карта направлений обмена
Прежде чем включать синхронизацию, зафиксируйте на бумаге, какая система за что отвечает. Типовое разделение для интернет-магазина выглядит так:
| Объект | Мастер-система | Направление |
|---|---|---|
| Каталог, цены, характеристики | МойСклад | МойСклад → RetailCRM |
| Остатки и резервы | МойСклад | МойСклад → RetailCRM |
| Заказы (создание, состав) | RetailCRM | RetailCRM → МойСклад |
| Статус оплаты и отгрузки | МойСклад | МойСклад → RetailCRM |
| Контрагенты и контакты | RetailCRM | RetailCRM → МойСклад |
Такое распределение снимает 90% конфликтов: складской учёт остаётся за МойСклад, а работа с клиентом и воронка — за RetailCRM.
Как подключается модуль
В RetailCRM МойСклад подключается штатным модулем в разделе Настройки → Интеграция → Маркетплейсы и склады. Для связи потребуется учётная запись МойСклад с правами на API и токен, который создаётся в Настройки → Обмен данными → API на стороне МойСклад.
- Создайте отдельного пользователя-робота в МойСклад — не используйте личный аккаунт сотрудника.
- Выдайте ему права на нужные разделы: товары, остатки, отгрузки, контрагенты.
- В RetailCRM введите логин и токен, выберите юрлицо и склады для обмена.
- Сопоставьте статусы RetailCRM с этапами документов МойСклад (заказ, отгрузка, счёт).
Заказы и отгрузки: жизненный цикл
Заказ создаётся в RetailCRM (вручную оператором или автоматически с сайта/маркетплейса) и выгружается в МойСклад как Заказ покупателя. Дальше он живёт по статусной модели: резерв товара, оплата, отгрузка.
Настраивается соответствие: какому статусу RetailCRM отвечает создание отгрузки в МойСклад. Например, при переходе заказа в статус Комплектация в МойСклад формируется документ отгрузки и списывается товар со склада. Обратно в RetailCRM приходит признак «отгружено» и, если настроено, номер документа.
- Резерв — товар бронируется под заказ, чтобы не продать его дважды.
- Отгрузка — фактическое списание, меняет доступный остаток.
- Возврат — при отмене заказа резерв снимается, остаток возвращается.
Правильно связанные статусы позволяют не дублировать отгрузки: один заказ — один документ реализации.
Остатки: частота и точка правды
Остатки — самое чувствительное место. Мастер по остаткам всегда МойСклад: там ведётся приёмка, инвентаризация, списания. RetailCRM показывает доступное к продаже количество, рассчитанное как физический остаток − резерв.
Синхронизация остатков идёт по расписанию (обычно раз в несколько минут) либо по событию изменения. Для магазина с высоким оборотом важна частота: если остатки обновляются раз в час, за это время можно набрать заказов на товар, которого уже нет.
| Модель бизнеса | Рекомендуемая частота |
|---|---|
| Дефицитные/штучные товары | Почти в реальном времени |
| Стандартный интернет-магазин | Каждые 5–15 минут |
| Товар всегда в наличии | Раз в час достаточно |
Защита от циклов и конфликтов
Главный риск двусторонней схемы — эхо-обновления: система A изменила запись, отправила в B, B «увидела изменение» и отправила его обратно в A, и так по кругу. Чтобы этого не было, применяют несколько приёмов:
- Разделение полей по мастеру — цена меняется только в МойСклад, статус воронки только в RetailCRM; никто не пишет чужое поле.
- Идентификация источника — изменения от робота-интеграции не запускают повторную отправку.
- Внешние идентификаторы — каждый заказ и товар связаны по
externalId, что исключает дубли при повторной выгрузке.
Итог
Двусторонняя синхронизация RetailCRM и МойСклад работает предсказуемо, когда для каждого объекта назначена единственная система-владелец: склад и каталог за МойСклад, заказы и клиенты за RetailCRM. Тогда заказы уезжают в отгрузки, остатки возвращаются в карточки, а эхо-циклов не возникает.
Мы настраиваем такой обмен под конкретную товарную специфику: подбираем частоту обновления остатков, связываем статусы с документами и закрываем узкие места с резервами и возвратами. Если нужен обмен, который не придётся ежедневно чинить руками, поможем спроектировать и внедрить его корректно.
Частые вопросы
Можно ли вести каталог одновременно в обеих системах?
Технически да, но это плохая идея. Назначьте одну систему мастером каталога — обычно МойСклад — и правьте товары только там, иначе изменения будут перетирать друг друга.
Что произойдёт при отмене заказа?
При переходе заказа в статус отмены резерв в МойСклад снимается, а доступный остаток возвращается. Если отгрузка уже была создана, потребуется оформить возврат.
Почему остаток в RetailCRM меньше, чем в МойСклад?
RetailCRM показывает доступное количество за вычетом резервов под активные заказы. Физический остаток в МойСклад всегда будет равен или больше доступного.
Как часто обновляются остатки?
Зависит от настроек и оборота. Для большинства магазинов оптимально каждые 5–15 минут; для дефицитных товаров синхронизацию делают близкой к реальному времени.
Появятся ли дубли товаров при повторной выгрузке?
Нет, если товары связаны по внешнему идентификатору или уникальному артикулу. Дубли возникают только при неуникальных артикулах или ручном создании карточек.
Передаются ли данные клиентов в МойСклад?
Да, контрагент и его реквизиты выгружаются вместе с заказом, чтобы в МойСклад можно было корректно оформить отгрузку и закрывающие документы.
Что делать при нескольких складах?
Каждый склад RetailCRM нужно сопоставить со складом МойСклад. Тогда остатки и отгрузки считаются раздельно и не смешиваются между точками хранения.
Поможем с настройкой и поддержкой RetailCRM
Поможем с настройкой, доработкой и поддержкой RetailCRM.