Интеграция с 1С почти никогда не бывает «просто выгрузкой товаров». Проблемы начинаются там, где две системы считают одни и те же данные по-разному: цены, остатки, статусы заказов и права менеджеров.
Разберём, какие решения принимаются до первой строки кода и почему они определяют, будет обмен стабильным или превратится в ежедневный ручной труд.
Кто владеет данными
Первый вопрос: какая система является источником правды для каждого типа данных. Обычно товары и цены ведёт 1С, заказы — сайт, остатки — 1С или склад. Как только роли определены, конфликты «кто прав» перестают возникать.
Что и как часто передаётся
- Номенклатура и характеристики — реже, по факту изменений или раз в сутки.
- Цены и скидки — чаще, потому что от них зависит продажа.
- Остатки — самый чувствительный блок: чем чаще, тем меньше продаж «в минус».
- Заказы — из сайта в 1С практически в реальном времени.
- Статусы и документы — обратно из 1С на сайт, чтобы клиент видел правду.
Технические требования, без которых обмен ломается
- 1 Идемпотентность: повторная передача того же пакета не должна создавать дубли.
- 2 Внешние идентификаторы: у каждой сущности должен быть стабильный ключ из 1С, а не только внутренний id.
- 3 Пакетная обработка: тысячи позиций передаются порциями, а не одним запросом.
- 4 Логирование каждого обмена: что принято, что отклонено и почему.
- 5 Повторные попытки с задержкой при недоступности одной из сторон.
- 6 Мониторинг и уведомление ответственного, если обмен не прошёл.
// Идемпотентная обработка позиции: ключ из 1С, а не внутренний id
Product::updateOrCreate(
['external_id' => $item['Ref_Key']],
[
'name' => $item['Description'],
'price' => $item['Price'],
'synced_at' => now(),
]
);
Ошибки, которые встречаются чаще всего
- Обмен «раз в сутки» при продаже остатков, которых уже нет.
- Отсутствие журнала: непонятно, почему у товара старая цена.
- Полная выгрузка каталога вместо изменений — на больших каталогах это часы работы.
- Обработка ошибок «на потом», из-за чего сбой обнаруживается через неделю по жалобе клиента.
Если обмен уже внедрён, но ведёт себя непредсказуемо, первым шагом стоит проверить его целиком — это часть технического аудита. Дальше мы обычно переводим обмен на схему с журналом и мониторингом, чтобы сбой был виден сразу, а не по звонку.