Что уезжает в какую сторону
Слово «синхронизация» скрывает, что потоков на самом деле четыре. Держать их в голове по отдельности полезно: ломаются они тоже по отдельности.
- Номенклатура — из 1С. Названия, артикулы, описания, группы, свойства, единицы измерения, картинки. Каталог становится отражением справочника, а не самостоятельным списком.
- Цены и остатки — тоже из 1С, но отдельной выгрузкой. Она лёгкая, её можно гонять часто, тогда как полный обмен каталогом тяжёлый.
- Заказы — с сайта в 1С. Состав, покупатель, адрес, доставка, оплата. В базе появляется документ, с которым дальше работает менеджер.
- Судьба заказа — обратно из 1С. Оплачен, собран, отгружен, номер накладной. Без этого потока кабинет показывает «принят» до самой доставки, и покупатель звонит спросить.
Как это устроено
Битрикс поднимает точку обмена по адресу вида /bitrix/admin/1c_exchange.php, закрытую отдельным логином и паролем. 1С по расписанию стучится туда и отдаёт XML в формате CommerceML — большие каталоги пакетами, по частям.
Деталь, объясняющая половину проблем: обмен всегда инициирует 1С. Сайт в учётную базу не ходит и постучаться в неё не может. Стоит 1С на офисном компьютере, а его выключили на ночь — обмена ночью не будет.
Вторая деталь: товар на сайте и товар в базе связывает не артикул и не название, а идентификатор из 1С. В интерфейсе он не виден, но держится всё именно на нём.
Где ломается
Список ниже — не страшилки, а то, что встречается на каждом втором проекте.
- Каталог наполняли руками до интеграции. Идентификаторов из 1С у карточек нет, связывать не с чем — первый же обмен создаёт вторую тысячу товаров рядом с первой. Лечится разовым сопоставлением по артикулу, но артикулы для этого должны быть уникальны, а они уникальны примерно никогда.
- Цен несколько. В базе живут розничная, оптовая, закупочная и рекомендованная. Выгружаются все, а какая показывается покупателю — решает настройка на стороне сайта. Ошибка здесь выглядит как магазин, торгующий по закупочным ценам.
- Остаток — это какое число? Сумма по всем складам или по одному? Физический или за вычетом резерва? Оба ответа разумны; беда начинается, когда 1С считает одним способом, а на сайте ждали другого.
- Размеры и цвета. В 1С это характеристики номенклатуры, на сайте — отдельные торговые предложения. Если в справочнике соседствуют «Синий», «синий» и «Cиний» с латинской C, на витрине будет три цвета вместо одного.
- Скидки живут отдельно. Часто они считаются документом уже внутри 1С и в цену выгрузки не попадают. Сайт честно показывает цену без скидки, а разницу потом объясняет менеджер.
- Статусы не совпадают. У 1С свой список состояний заказа, у Битрикса свой. Их сопоставляют вручную, один к одному, до начала работ. Пропустили — оплаченный заказ висит на сайте новым.
- Каталог не влезает в таймаут. Двадцать тысяч товаров с картинками одним куском веб-сервер не переварит. Решается размером пакета и лимитами, но узнают об этом обычно после третьей остановки обмена.
Общее у списка одно: ни один пункт нельзя выяснить по телефону — только открыв базу. Поэтому смету на интеграцию мы называем после того, как её посмотрим; почему цену нельзя назвать сразу, разобрали отдельно.
Как часто обмениваться
Соблазн ответить «постоянно» понятен, но каждая частота стоит денег и нагрузки. Рабочее решение — два расписания вместо одного.
- Полный обмен каталогом — раз в сутки, ночью. Описания, свойства и картинки меняются редко, гонять их днём незачем.
- Цены и остатки — лёгкой выгрузкой, от 15 минут до часа. Здесь считаются деньги: суточная частота означает, что покупатель днём закажет то, что кончилось утром.
- Заказы — сразу или пачкой раз в несколько минут. Задержка тут заметна не покупателю, а менеджеру.
Скажем прямо: если товаров двести, они не кончаются и заказов пять в день — двусторонний обмен не окупится. Хватит выгрузки прайса раз в сутки, и стоит она в разы дешевле.
Что подготовить до старта
Половина работ по интеграции происходит не на сайте, а в 1С. Нужен человек с правом менять конфигурацию базы: свой программист или обслуживающий вас франчайзи.
- Конфигурация и версия: УТ, УНФ, КА, Розница или самописная — от этого зависит почти всё
- Копия базы для тестов: отлаживать обмен на боевой — плохая идея
- Решение по ценам и складам: что показываем, что считаем доступным к заказу
- Таблица соответствия статусов между двумя системами
- Ответственный со стороны 1С и его контакты — не «бухгалтер спросит»
Те же вопросы стоят в разделе «Что должно работать без человека» нашего шаблона ТЗ на сайт. Заполненные ответы превращают разброс смет втрое в сравнимые цифры.
Сроки, цена и ради чего всё это
Интеграция занимает 20–30% сметы магазина — вторая статья по величине после каталога и первая по риску сорвать срок. Магазин под ключ с двусторонним обменом стоит от 250 000 ₽ и занимает 6–8 недель. Обмен на уже существующем сайте считаем после осмотра базы.
На нашем проекте с обменом Битрикс ↔ 1С обработка одного заказа сократилась с примерно 15 минут до 2, ручной перенос убрали полностью. При тридцати заказах в день это больше шести часов чужой работы ежедневно — и ноль опечаток в адресе доставки.
Что входит в работу — на странице услуги интернет-магазины на Битрикс. Если задаче хватает решения проще и дешевле, скажем об этом прямо.