Задача: Разработать модуль интеграции 1С-Битрикс с МойСклад для сайта AUDIO-DRIVE.
AUDIO-DRIVE - популярный интернет магазин электроники и аксессуаров.
Наша компания уже несколько лет занимается технической поддержкой и доработкой проекта, мы выполняли доработки верстки, оптимизировали быстродействие сайта, дорабатывали интеграционные модули и разрабатывали собственные. Про одну из таких задач и пойдет речь, мы расскажем, как реализовали самописный обмен 1С-Битрикс с учетной системой Мой Склад.
По мере увеличения каналов продаж, перед клиентом встал вопрос о переработке интеграции с системой учета МойСклад. Так после запуска интеграции с OZON проблема синхронизации встала особенно остро, задержка обмена остатками неизбежно приводила к отмене заказов, а маркетплейс грозил отключением магазина.
Анализ требований
Мы проанализировали бизнес процессы клиента, изучили текущую логику обмена и дополнительные требования к интеграции.
Штатный модуль обмена решили не использовать, поскольку он не покрывает всех потребностей клиента, например:
Анализ готовых решений сторонних разработчиков показал, что без доработок под конкретную специфику магазина не обойтись. Доработка готового модуля не является оптимальным решением, ввиду сложности доработок, зависимости от обновлений и чужой архитектуры. Чтобы избежать дополнительных рисков и учесть все нюансы бизнес процессов клиента - мы пошли путем разработки собственного решения в виде модуля интеграции с МойСклад (на основе JSON API)
Разработка модуля
Поскольку новые товары заводятся как в МС так и в битрикс, синхронизацию сделали двухсторонней.
При синхронизации товаров происходит проверка по полю артикул (ID товара в МС), товары созданные в МС импортируются в отдельный раздел каталога битрикс для последующего распределения по разделам.
Товары созданные в битрикс - передаются в МС, происходит проверка на уникальность (по ID товара) и создаются новые товары, при этом ID товара в МС соответствует артикулу на сайте. Такая привязка позволяет работать с несколькими сайтами в рамках битрикс, где наименования и цены одних и тех же товаров различаются.
При изменении товара (название, цена, гарантия, вес, размер и штрихкод) в одной из систем - изменения синхронизируются в другой.
Синхронизация заказов односторонняя, созданный заказ в битрикс - выгружается в МС, с заказом передаются товары, количество и стоимость (с учетом скидок), вариант доставки и ее стоимость (в МС выгружается как услуга), синхронизируются контрагент/покупатель.
Актуальные остатки хранятся только в МС и импортируются в битрикс по расписанию.
Резервирование товара в МС происходит после установки “Доставка разрешена”, при этом происходит проверка доступного остатка в МС и установка флагов “Проведено” и “Резерв”, а также флага “Ошибка”, в случае недостаточности доступного остатка.
При создании оплаты в битрикс - в МС создается входящий платеж на выбранное (в битрикс) юрлицо и соответствующий счет.
Если по одному заказу в битриксе создаются несколько оплат, то в МС создаются несколько входящих платежей, при этом в МС устанавливается флаг “Проведено”. При удалении или отмене оплаты в битрикс - удаляется платеж в МС
При установке флага “Отгружено” в битрикс - в МС создается отгрузка. При удалении или отмене отгрузки в битрикс - удаляется отгрузка в МС
Заключение
Кроме непосредственно самой интеграции, мы реализовали функционал загрузки оплат на основе отчетов транспортных компаний и маркетплейсов.
Так в битрикс можно загрузить файл отчета, например от СДЭК, после его обработки в МС будут созданы входящие платежи (на выбранное при импорте файла юрлицо и расчетный счет) и будут привязаны к заказам покупателей.
Наш модуль интеграции 1С-Битрикс с МойСклад работает быстрее штатного, например среднее время загрузки заказа в МС (после появления его в битрикс) составляет 10 секунд, примерно такое-же время требуется на синхронизацию статусов, а полный обмен остатками, ≈ 20 000 товаров, проходит за 3 минуты.