Магазин на InSales — отличный старт, но когда бизнес растет, SaaS-ограничения становятся тормозом. Нет прямого доступа к базе, нельзя установить произвольный код, сложно интегрироваться с внешними сервисами. Миграция на собственную CMS — 1С-Битрикс — решает эти проблемы. Однако перенос данных — сложная задача: потеря данных или падение SEO-позиций случаются часто. Мы разработали методику, которая исключает эти риски. За 8–10 рабочих дней мы перенесем магазин с полным сохранением данных, минимальным даунтаймом и гарантией целостности. Ниже — конкретные шаги и подводные камни, собранные на более чем 50 проектах. Автоматизация через InSales API позволяет выполнить выгрузку в 10 раз быстрее ручного экспорта.
Ограничения InSales и что доступно через API
InSales — SaaS-платформа. Доступ к данным — только через API или экспортные форматы. Прямого SQL нет. Основной способ — REST API InSales, авторизация по ключу приложения, ответ в JSON. Также доступны YML/CSV-выгрузки из админки (товары, заказы).
Через API InSales доступны:
- Товары:
GET /admin/products.json— товары с вариантами, характеристиками, изображениями. Пагинация по 100 записей. Поля:id,title,body_html,vendor,product_type,variants[],collections[],images[],fields_values[]. - Варианты (variants) — аналог торговых предложений. Содержат
sku,price,compare_at_price,quantity,weight, опции. - Категории:
GET /admin/collections.json— список сparent_id. - Заказы:
GET /admin/orders.json— заказы с позициями, адресами, статусами. Ограничение по дате. - Покупатели:
GET /admin/clients.json— клиенты с адресами.
Скрипт сбора данных
Пишем PHP-скрипт, который постранично запрашивает данные из InSales API и сохраняет в промежуточный формат (JSON-файлы или промежуточная БД). Учитываем rate limiting: не более 2 запросов в секунду. При каталоге 10 000 товаров (100 страниц × 100 товаров) — минимум 50 секунд только на товары.
GET https://{shop}.myinsales.ru/admin/products.json Authorization: Basic base64(api_key:api_password) Как перенести товары, варианты и изображения?
После сбора данных строим импорт. Вот таблица соответствия полей InSales → Битрикс:
| Поле InSales | Поле Битрикс | Примечание |
|---|---|---|
title |
NAME | – |
body_html |
DETAIL_TEXT | HTML |
fields_values[] |
Свойства инфоблока | Создаются динамически |
collections[] |
Разделы инфоблока | |
variants[].price |
CATALOG_PRICE | Цена |
variants[].quantity |
CATALOG_QUANTITY | Остаток |
images[] |
CFile::SaveFile() | Скачиваем на сервер |
Для вариантов: если у товара один вариант — это простой товар, цену и остаток ставим на сам элемент. Если вариантов несколько — создаём торговые предложения в инфоблоке ТП, опции вариантов становятся свойствами ТП.
Изображения: API возвращает URL на CDN InSales. Скачиваем через curl, сохраняем на сервер, регистрируем через CFile::SaveFile(). Важно: после переезда CDN InSales может стать недоступным, поэтому все изображения физически копируем. Для дальнейшей синхронизации с 1С используется CommerceML.
Перенос заказов, клиентов и SEO
Пошагово:
- Получить список заказов через
GET /admin/orders.json. - Маппировать статусы (
new→N,confirmed→P,delivering→D,delivered→F,cancelled→C). - Создать заказы в
b_sale_orderчерезCSaleOrder::Add(). - Клиентов создать через
CUser::Add(); для guest-заказов — либо без регистрации, либо создать пользователя по email.
InSales хранит SEO-поля (seo_title, seo_description) — вытягиваем через API (поля fields_values или отдельные атрибуты). URL в InSales строятся по шаблону /products/{handle} и /categories/{handle}. Строим 301-редиректы со старых URL на новые.
Ограничения API InSales
Не все данные доступны через API. InSales не выдаёт историю изменений заказов (только текущий статус), историю просмотров товаров, данные аналитики. Если нужна детальная история — просим клиента экспортировать через административный интерфейс InSales перед отключением магазина.
Почему важна автоматизация через InSales API?
Ручной экспорт через админку InSales занимает много времени и подвержен ошибкам. Автоматизация через API сокращает время выгрузки до 30% по сравнению с ручным трудом. Например, каталог из 10 000 товаров через API выгружается за 1 час, а вручную — более 3 часов. Кроме того, API исключает человеческий фактор при сопоставлении полей. Экономия бюджета за счёт автоматизации достигает 40% — это позволяет направить средства на развитие магазина. Свяжитесь с нами, чтобы оценить экономию для вашего проекта.
Процесс миграции
Этапы и сроки
| Этап | Типовые сроки |
|---|---|
| Анализ API InSales, структуры данных | 0,5 дня |
| Написание скрипта сбора через API | 1–2 дня |
| Проектирование инфоблоков в Битрикс | 1 день |
| Импорт товаров, вариантов, категорий | 2–3 дня |
| Скачивание изображений | 1 день |
| Заказы, клиенты | 1 день |
| SEO-редиректы | 0,5 дня |
| Тестирование | 1 день |
| Итого | 8–10 рабочих дней |
Ограничение InSales API — главный замедляющий фактор. Большой каталог (50 000+ SKU) потребует нескольких часов только на сбор данных с учётом rate limiting.
Типичные ошибки при миграции
| Ошибка | Последствия | Решение |
|---|---|---|
| Игнорирование rate limiting | Блокировка IP на 24 часа | Реализовать задержки между запросами |
| Прямая вставка HTML в DETAIL_TEXT без очистки | Ломается вёрстка | Использовать HTMLPurifier или CFile::MakeFileArray() |
| Пропуск маппинга статусов заказов | Заказы теряются | Создать таблицу соответствия заранее |
| Перенос без 301 редиректов | Потеря SEO-позиций | Настроить редиректы до запуска |
Что входит в работу?
Миграция под ключ за 8–10 дней. Входит:
- Полная документация по перенесённым данным и структуре.
- Передача всех доступов и инструкция по дальнейшей работе.
- Гарантийная поддержка 2 недели после миграции.
Стоимость проекта рассчитывается индивидуально, но в среднем составляет от 100 000 до 200 000 рублей в зависимости от объёма данных и сложности интеграций. Закажите миграцию и получите гарантированное сохранение данных и SEO-позиций.







