Реализация двусторонней синхронизации каталога товаров с ERP-системой

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Реализация двусторонней синхронизации каталога товаров с ERP-системой
Сложная
от 2 недель до 3 месяцев
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1214
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    852
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1041
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    823
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    815

Реализация двусторонней синхронизации каталога товаров с ERP-системой

ERP (SAP, Oracle NetSuite, Microsoft Dynamics, Odoo) — система управления ресурсами предприятия. В отличие от 1С, ERP-системы имеют зрелые REST API или SOAP/OData-интерфейсы, но каждая со своей моделью данных и логикой версионирования.

Варианты интеграционных протоколов

ERP Протокол Формат
SAP S/4HANA OData v4, REST JSON/XML
Oracle NetSuite REST (SuiteQL) JSON
Microsoft Dynamics 365 OData v4 JSON
Odoo JSON-RPC / REST JSON
1С:ERP CommerceML + REST XML/JSON

Паттерн интеграции: Event-Driven vs Polling

Polling — сайт периодически запрашивает изменения в ERP. Проще реализовать, но создаёт задержку.

Webhooks / Change Data Capture — ERP уведомляет сайт о каждом изменении. Минимальная задержка, но требует поддержки со стороны ERP.

Гибридный подход (рекомендуется): webhooks для критичных данных (цены, остатки), polling раз в час для менее срочных (описания, характеристики).

Пример интеграции с Odoo

import xmlrpc.client

class OdooConnector:
    def __init__(self, url, db, username, password):
        self.url = url
        self.db  = db
        # Аутентификация
        common = xmlrpc.client.ServerProxy(f'{url}/xmlrpc/2/common')
        self.uid = common.authenticate(db, username, password, {})
        self.models = xmlrpc.client.ServerProxy(f'{url}/xmlrpc/2/object')

    def get_products(self, since: datetime = None):
        domain = [['active', '=', True]]
        if since:
            domain.append(['write_date', '>', since.isoformat()])

        return self.models.execute_kw(
            self.db, self.uid, self.password,
            'product.template', 'search_read',
            [domain],
            {'fields': ['id', 'name', 'default_code', 'list_price',
                        'qty_available', 'categ_id', 'description_sale']}
        )

Обработка изменений

class ERPSyncService:
    def sync_products(self):
        last_sync = SyncState.get_last_sync('erp_products')
        products  = self.erp.get_products(since=last_sync)

        updated = 0
        for erp_product in products:
            product, created = Product.objects.update_or_create(
                erp_id=erp_product['id'],
                defaults={
                    'name':     erp_product['name'],
                    'sku':      erp_product.get('default_code', ''),
                    'price':    erp_product['list_price'],
                    'stock':    erp_product['qty_available'],
                    'category': self.map_category(erp_product['categ_id']),
                }
            )
            updated += 1

        SyncState.update_last_sync('erp_products', datetime.now())
        return updated

Сроки

Интеграция с конкретной ERP через API с двусторонней синхронизацией: 12–20 рабочих дней в зависимости от качества документации и доступности тестовой среды ERP.