Сначала определите направление данных
Типичная схема: 1С выгружает каталог, цены и остатки на сайт, а сайт передаёт заказы обратно. Но источник истины нужно зафиксировать отдельно для каждого поля: название, цена, остаток, статус и контактные данные.
Что синхронизировать и кто главный
| Данные | Частый источник истины |
|---|---|
| Товар/артикул | 1С |
| Цена | 1С |
| Остаток | 1С |
| SEO-текст/URL | сайт |
| Фото | зависит от процесса |
| Заказ клиента | сайт |
| Статус исполнения | 1С/ERP |
| Трек-номер | логистика/1С |
CommerceML и протокол обмена
Официальный протокол 1С описывает обмен каталогами и заказами через HTTP и CommerceML. Сеанс включает авторизацию, согласование параметров, передачу файлов и пошаговый импорт. Это важно учитывать при больших каталогах: обмен должен уметь продолжаться пакетами, а не ждать один огромный запрос.
Проверить endpoint обмена вручную
# checkauth
curl -i -u 'login:password' 'https://example.com/1c_exchange.php?type=catalog&mode=checkauth'
# init
curl -i -b cookies.txt -c cookies.txt 'https://example.com/1c_exchange.php?type=catalog&mode=init'
# Точные параметры и формат ответа сверяйте
# с вашей реализацией протокола CommerceML.Типовые проблемы обмена
| Проблема | Причина |
|---|---|
| Дубли товаров | нет устойчивого ID/external_id |
| Цена откатывается | два источника истины |
| Обмен обрывается | timeout/слишком большой пакет |
| Остатки старые | обмен не завершился или кэш |
| Заказы дублируются | повтор без идемпотентности |
| Характеристики пропадают | неверный mapping CommerceML |
| Фото не обновляются | отдельный процесс/права/лимиты |
Не связывайте товар по названию
Используйте стабильный идентификатор из 1С/CommerceML. Название и артикул могут меняться. При повторной загрузке один и тот же external_id должен обновлять существующий объект, а не создавать новый.
Лог обмена нужен обязательно
Записывайте session id, этап протокола, имя файла, количество обработанных объектов и последнюю ошибку. Не логируйте пароль 1С.
Связанные материалы
Контроль качества обмена 1С и сайта
Согласуйте источник истины для артикула, цены, остатка и статуса заказа. Используйте постоянный идентификатор товара, иначе повторный импорт способен создавать дубли. При больших каталогах отдельно проверьте пакетную загрузку, частичные ошибки, удалённые товары, варианты характеристик и восстановление после обрыва обмена.
Приёмка должна включать контрольную выборку товаров и заказов до и после обмена, а не только сообщение «импорт завершён».