Связываем 1С с интернет-магазином (и перестаем продавать товары, которых нет)
Коротко
Чтобы интернет-магазин на Битрикс показывал правильные цены и наличие, нужно согласовать идентификаторы товаров, правила расчёта остатков и порядок обновления данных. Сервер должен успевать обрабатывать обмен вместе с заказами покупателей. У Maxiplace есть серверы для 1С-Битрикс, но выбор площадки решает только инфраструктурную часть задачи: ошибки сопоставления и учёта исправляются в настройках интеграции.
Связать 1С с сайтом кажется простой задачей: выгрузить каталог, включить расписание, проверить несколько карточек. Однако первая успешная загрузка ещё не означает, что магазин готов продавать. Проблемы проявляются позже: после поступления товара, изменения цены, отмены заказа или продажи последней единицы через другой канал.
Поэтому полезнее ставить задачу иначе: как сделать так, чтобы сайт продавал по согласованным данным, а менеджерам не приходилось вручную сверять каждый заказ?
Определите, какая система отвечает за каждое поле
В типовой схеме 1С передаёт сайту товары, характеристики, цены и остатки. Интернет-магазин передаёт заказы в 1С; обратный обмен может обновлять сведения об их обработке. Конкретный состав данных зависит от конфигурации 1С, версии модуля и настроек.
До подключения составьте правила владения данными. Например, цены меняются в 1С, а описания для покупателей редактируются на сайте. Тогда импорт не должен затирать работу редактора.
Отдельно согласуйте склады, типы цен, единицы измерения и характеристики. Если склад магазина исключён из выгрузки, сервер не сможет восстановить отсутствующие сведения.
Сопоставьте товары до первой массовой загрузки
Название и артикул сами по себе не гарантируют правильного сопоставления. В стандартном обмене важны внешние идентификаторы: они связывают объект учётной системы с соответствующей записью сайта.
Если каталог уже существует на обеих сторонах, сначала проверьте эту связь. При несовпадении идентификаторов импорт может создать новые карточки вместо обновления существующих. Дубли также требуют проверки повторных загрузок, доработок и параллельных процессов.
Для товаров с вариантами учитывайте отдельные предложения: остаток чёрной футболки размера M нельзя записывать как наличие всех футболок модели. Удалять дубли сразу опасно: карточки могут быть связаны с заказами, ссылками и контентом. Сначала установите причину и определите, какие записи сохранять.
Передавайте доступный остаток, а не просто количество
Товар на складе и товар, доступный для нового заказа, могут означать разные величины. Часть запаса бывает зарезервирована, предназначена для другого канала или находится на складе, который не обслуживает интернет-магазин.
Поэтому договоритесь, какую величину 1С отправляет на сайт и как учитываются резервы. Иначе технически исправный обмен будет регулярно публиковать неверное наличие.
При обмене по расписанию данные неизбежно запаздывают. Между обновлениями последнюю единицу могут купить офлайн. Более частая выгрузка сокращает это окно, но не гарантирует защиту от одновременных продаж.
Для дефицитных позиций предусмотрите подтверждение наличия, страховой запас или отдельный механизм резервирования, согласованный между каналами.
Проверяйте завершение импорта, а не отправку файла
Стандартный импорт каталога использует CommerceML: сайт принимает данные и обрабатывает их. Передача файла и применение изменений являются разными этапами.
Если обработка оборвалась, часть каталога могла обновиться, а часть остаться прежней. Поэтому сообщение об отправке данных ещё не подтверждает актуальность витрины. При сбое выберите конкретный товар и проследите цепочку: значение в 1С, содержимое выгрузки, результат импорта, запись на сайте, отображение покупателю. Так можно отличить ошибку источника от проблемы загрузки или кеширования.
Сохраняйте журнал обмена и время последнего успешного завершения. Предупреждение о просроченном обновлении полезнее, чем обнаружение ошибки после обращения покупателя.
Снижайте нагрузку без потери актуальности
Обмен нагружает сервер не только объёмом передаваемых файлов. Импорт читает данные, обновляет базу, обрабатывает изображения и запускает обработчики, добавленные разработчиками.
Полная загрузка большого каталога может конкурировать с оформлением заказов за процессор, память и диск. Если поддерживается выгрузка изменений, используйте её для регулярных обновлений, а необходимость полного обмена определяйте отдельно.
Не запускайте новый обмен, пока предыдущий не завершён. Частоту выбирайте по скорости изменения ассортимента и длительности обработки. Учащение запусков при накопившейся очереди способно увеличить задержку.
В Битрикс предусмотрен пошаговый импорт. Размер передаваемой части файла и длительность шага нужно согласовать с ограничениями серверного окружения.
Отделите серверную настройку от исправления интеграции
Администратор проверяет загрузку ресурсов, свободное место, медленные запросы базы, ограничения PHP и тайм-ауты веб-сервера. По результатам корректирует окружение или обосновывает увеличение ресурсов.
Разработчик и специалист по 1С проверяют сопоставление товаров, правила выгрузки, резервы и обработчики. Дополнительная память не исправит неверный идентификатор, а увеличение тайм-аута само по себе не ускорит медленный код.
Принимайте интеграцию по торговым сценариям
Начните с резервных копий и тестовой среды. Проверьте изменение цены, обнуление остатка, новый вариант товара, оформление и отмену заказа. Затем прервите обмен и проверьте повторный запуск. Также проверьте, что заказ попадает в нужную организацию, а выбранные доставка и оплата корректно отображаются в 1С.
После тестов назначьте ответственного за ошибки, установите допустимую задержку обновления и включите контроль завершения. Критерий готовности прост: изменения проходят весь путь между системами, повторная обработка не создаёт дубли, а покупатель получает согласованные цену и наличие.