Каталог на 1С-Битрикс редко наполняется один раз. Сначала — руками, потом — Excel-файлом от поставщика, потом поставщик заводит API, потом появляется МойСклад или 1С, и каждая итерация оставляет после себя скрипт, который «не забыть запустить». Через год выясняется, что остатки на сайте не сходятся, цены отстают на сутки, а никто не помнит, какой из трёх импортов актуален. Эта статья — навигатор: какой тип модуля подходит под конкретный источник данных, что именно он умеет и что проверить до покупки, чтобы не платить дважды.
Почему «просто импорт» — плохая постановка задачи
Словом «импорт» называют четыре разных класса задач, и они требуют разных инструментов.
- Разовая заливка. Перенести каталог из таблицы, создать инфоблок, разделы и свойства. После этого файл может больше не понадобиться.
- Регулярное обновление из файла. Каждый день или каждый час приходит прайс или выгрузка — нужно обновить цены, остатки и карточки, не создав дублей.
- Синхронизация с учётной системой. Товары, остатки и заказы должны ходить в обе стороны между сайтом и МойСклад или 1С.
- Сбор данных извне. Парсинг сайтов поставщиков, работа с их REST API, загрузка изображений и характеристик.
Ошибка выбора обычно такая: покупают мощный универсальный модуль для разовой миграции (и потом не пользуются половиной настроек) или, наоборот, берут простой загрузчик Excel для ежедневного обмена с МойСклад (и строят вокруг него костыли). Поэтому дальше — по источникам.
Источник 1: Excel/CSV вручную — «залить и обновить»
Самый частый сценарий у небольшого магазина: есть таблица, есть сайт, нужно перенести.
Что должна уметь такая загрузка. Первое — показать структуру файла до записи: выбрать лист и строку заголовков, проверить сопоставление колонок. Второе — обновлять по стабильному ключу, чтобы повторный импорт не создавал дубли. Третье — предварительная проверка перед записью.
Именно так устроен ВебЕнот: Импорт из Excel. Он переносит каталоги из XLSX, XLS, ODS и CSV в инфоблоки 1С-Битрикс и до записи показывает структуру книги, позволяет выбрать лист и строку заголовков, проверить сопоставление колонок и выполнить проверку без изменения данных. В возможностях перечислены: создание нового инфоблока или обновление существующего, обновление элементов по стабильному ключу без дубликатов, вложенные разделы из нескольких колонок, создание свойств и сопоставление с существующими полями, импорт названий, кодов, активности, сортировки, дат, текстов и изображений, базовые и дополнительные цены с валютами, складские остатки с учётом режима товарного учёта, отдельные инфоблоки товаров и торговых предложений. Плюс поиск повторяющихся ключей и неоднозначных совпадений, безопасные преобразования значений с просмотром результата, пакетная обработка больших заданий, история и CSV с ошибками строк, откат по явному выбору пользователя.
Порядок, который предлагает модуль: создать профиль и выбрать инфоблок → загрузить файл, выбрать лист и строку заголовков → проверить автоматическое сопоставление → выполнить проверку без записи → изучить предупреждения и подтвердить импорт → проверить результат и историю. Требования: модуль «Информационные блоки» обязательно, а цены, товары, предложения и остатки — только при наличии «Торгового каталога»; поддерживаются 64-битный PHP 8.2–8.4 и распространённые серверные расширения для XML, ZIP, изображений и многобайтовых строк. И отдельная рекомендация в описании: перед первым запуском на рабочем сайте проверить сценарий на резервной копии или тестовой среде.
Важно не перепутать с другим Excel-модулем. Gigabyte: Импорт товаров из Excel/CSV — это решение для Битрикс24 CRM, а не для каталога сайта: оно добавляет кнопку «Импорт из файла» на вкладку «Товары» в карточках CRM, работает в сделках, лидах и смарт-процессах. Файл .xlsx или .csv перетаскивается в окно, первая строка должна содержать названия колонок, дальше — сопоставление колонок, предпросмотр и загрузка; товары добавляются к уже существующим, ничего не удаляется. В описании прямо сказано: позиции добавляются как произвольные товары по названию, к товарам каталога они не привязываются. Лимиты — файл до 15 МБ, до 2000 строк. Если ваша задача — «загрузить позиции в сделку для коммерческого предложения», это подходящий инструмент; если «обновить каталог на сайте» — нет.
Источник 2: веб-сайты поставщиков и REST API
Когда поставщик не даёт файл, а даёт сайт или API, нужен другой класс инструмента — с парсингом.
Bussol: Парсер и импорт данных PRO закрывает оба варианта и заявлен как единый инструмент вместо набора отдельных скриптов для HTML-парсинга, импорта Excel/XML/CSV и синхронизации API. Поддерживаемые источники в описании:
| Источник | Возможности |
|---|---|
| HTML-сайты | CSS-селекторы, XPath, обход ссылок, пагинация, изображения, Headless/-JavaScript-парсинг |
| REST API / JSON | GET/POST/PUT/PATCH/DELETE, headers, Bearer, Basic Auth, OAuth2, mapping вложенных данных |
| XML / YML | XPath, потоковая обработка больших файлов, товары и предложения |
| CSV | Работа по заголовкам колонок, большие файлы, потоковый импорт |
| XLSX / ODS | Импорт таблиц, выбор листа, mapping колонок |
| FTP / SFTP | Получение файлов поставщиков напрямую с удалённых серверов |
Для HTML-источников предусмотрен Visual Selector PRO: визуальный выбор элементов страницы, автоматическое построение CSS-селектора, формирование XPath, несколько вариантов устойчивых селекторов, подсчёт количества совпадений, автоматическое обнаружение повторяющихся карточек товаров и работа с DOM после JavaScript-рендеринга в Headless-режиме. Для сайтов на React, Vue или SPA есть Headless-режим — с локальным Playwright/Chromium или внешним headless-renderer; обычные HTML-профили при этом работают без Node.js.
Преобразования описаны цепочкой: trim, замена текста, регулярные выражения, извлечение чисел, округление, умножение и деление, префиксы и суффиксы, преобразование дат, ограничение длины, работа с HTML и текстом. В описании есть показательный пример: цена поставщика «12 990 руб.» → number → multiply 1.15 → round → 14 939.
Про масштаб: для больших каталогов предусмотрены очередь, потоковая обработка CSV, XML, YML, XLSX и ODS, а также многопроцессные workers с атомарным захватом задания, lease-блокировками, heartbeat, защитой от двойной обработки и автоматическим возвратом зависших задач. Watchdog контролирует состояние очереди и возвращает задачи в очередь после аварийного завершения процесса. Про безопасность заявлено отдельно: защита от SSRF и обращений к приватным/служебным сетям, CSRF-проверки, проверка прав, проверка SFTP fingerprint, фильтрация опасного HTML, ограничение типов загружаемых файлов, защита от передачи Authorization/Cookie на сторонние origin — модуль, по описанию, прошёл отдельный security-аудит.
Что важно проверить здесь. Перед первым запуском нового поставщика используйте Dry-run: модуль анализирует источник, но не изменяет данные, и показывает, какие элементы будут созданы, какие обновлены, старое и новое значение полей, изменения цен и валют. И отдельно — режимы для исчезнувших товаров: ничего не делать, деактивировать, обнулить остаток, деактивировать и обнулить. В описании есть важная защитная логика — массовая деактивация не выполняется при ошибке источника, неполном обходе или достижении лимитов импорта. Это ровно тот механизм, который спасает каталог, когда сайт поставщика отдал половину страниц.
Источник 3: файлы, FTP, email и Google Sheets как канал доставки
Отдельная проблема — не «что импортировать», а «откуда взять файл». Поставщик кладёт прайс на FTP, другой присылает письмо с вложением, третий ведёт Google-таблицу, и менеджер каждый раз скачивает это вручную.
BUSSOL DataBridge: импорт, экспорт и автоматизация каталога строится вокруг профиля обмена, который описывает всю цепочку: ИСТОЧНИК → ПРЕОБРАЗОВАНИЯ → ПОИСК ОБЪЕКТОВ → СОЗДАНИЕ/ОБНОВЛЕНИЕ → ПРОВЕРКА → РАСПИСАНИЕ → ДОСТАВКА РЕЗУЛЬТАТА. Источники: XLSX, XLSM, XLS, CSV, Google Sheets, HTTP/HTTPS, FTP/FTPS и email по IMAP. Для email настраиваются папка, отправитель, фрагмент темы, режим «только непрочитанные» и максимальный размер вложения; типовой сценарий в описании — поставщик отправил price.xlsx → DataBridge нашёл письмо → забрал вложение → обновил каталог.
Результат экспорта может быть доставлен на FTP/FTPS, через HTTP POST/PUT, в Google Drive, в Google Sheets или по email, сразу в несколько назначений. Расписание — через заданный интервал, ежедневно в определённое время или только в выбранные дни недели. Пример из описания: 05:00 забрать прайс поставщика, 05:05 обновить товары, SKU, цены и склады, 05:20 сформировать B2B-прайс, 05:25 отправить партнёрам и сохранить копию в Google Drive. Для production рекомендуется штатный перевод агентов 1С-Битрикс на cron.
Три вещи, которые в DataBridge стоит отметить отдельно, потому что они часто и есть настоящая причина сбоев:
- Составные ключи. Не все каталоги синхронизируются по ID или артикулу. Поддерживаются ключи вида АРТИКУЛ + ПОСТАВЩИК или БРЕНД + МОДЕЛЬ + ЦВЕТ — это критично, когда товары приходят от нескольких поставщиков.
- Стратегии и защитная логика. Для найденных и ненайденных объектов независимо определяется поведение (обновить, создать, пропустить, считать ошибкой), для отсутствующих во входном файле — оставить, деактивировать или удалить, для дублей — своя стратегия. При этом массовая обработка отсутствующих позиций не запускается, если импорт завершился с ошибками или файл фактически не содержит данных.
- Dry Run и откат. Перед записью изменения показываются полностью, а при включённом журнале отката сохраняются обратные действия — отдельная операция «Откатить импорт». В описании прямо сказано: rollback не заменяет резервное копирование базы данных.
Отдельно про безопасность внешних ресурсов — у DataBridge есть контроль схемы URL, DNS- и IP-проверка, блокировка localhost, private, reserved и link-local адресов, повторная проверка после redirect, запрет HTTPS → HTTP downgrade, ограничение размера ответа. Для внешних изображений проверяются реальный MIME-тип и геометрия, поддерживаются JPEG, PNG, GIF и WebP, а SVG из внешних источников не принимается. Для требовательных проектов — allowlist разрешённых доменов.
Источник 4: МойСклад — двусторонняя синхронизация
Если учёт ведётся в МойСклад, сайт не должен быть «второй бухгалтерией». Здесь нужен не импорт, а интеграция.
IDETA: Интеграция с МойСклад заявляет мастер-данные со стороны МойСклад и настраивается без программирования.
МойСклад → сайт. Товары и модификации (торговые предложения) создаются и обновляются по расписанию агентом Битрикс, большой каталог обрабатывается порциями без таймаутов. Остатки суммируются по выбранным складам. Типы цен МойСклад сопоставляются с типами цен Битрикс. Разделы создаются и сопоставляются по структуре групп МойСклад (поиск по названию, без дублей). Характеристики модификаций и доп. поля товара сопоставляются со свойствами инфоблоков, недостающие свойства могут создаваться автоматически. Если свойство привязано к элементам другого инфоблока или к highload-блоку (например, бренд), значение ищется в справочнике, а при отсутствии создаётся и привязывается. Есть фильтры по группам товаров (включить или исключить, с подгруппами) и по доп. полю товара.
Архивные товары и модификации деактивируются на сайте и возвращаются в публикацию, когда их достают из архива. Товары и разделы, которых больше нет в МойСклад или которые вне фильтра, деактивируются или удаляются (на выбор) — но затрагиваются только записи, связанные с МойСклад, созданное вручную не трогается. Деактивированные модулем записи возвращаются в публикацию автоматически.
Сайт → МойСклад. Заказы отправляются как «Заказ покупателя» сразу после сохранения, по выбранным статусам, в фоновом режиме, без задержки оформления. Организация, склад, канал продаж и статусы выбираются из списков, загруженных из МойСклад; заказ можно отправить вручную из настроек. Вы выбираете, из каких свойств заказа брать ФИО, телефон и e-mail покупателя, адрес доставки и комментарий; способ оплаты и способ доставки добавляются в описание заказа или передаются в выбранное дополнительное поле. Любое свойство заказа Битрикс можно передать в доп. поле заказа МойСклад (строка, текст, число, дата, флажок), список полей загружается одной кнопкой. Название заказа настраивается шаблоном (например, «Заказ с сайта №{ID}») либо назначается самим МойСклад. Статусы заказов подтягиваются обратно на сайт опционально.
Для эксплуатации важны детали: все списки (инфоблоки, типы цен, склады, организации, каналы продаж, доп. поля, значения справочников, свойства заказа) выбираются из выпадающих меню — копировать ID не нужно; ручной запуск по шагам с прогрессом, «живым» журналом и кнопкой остановки; итоговый отчёт (сколько создано, обновлено, пропущено, деактивировано, удалено, возвращено, а также предупреждения и ошибки); история последних 100 запусков с отчётами; управление агентами на отдельной вкладке с инструкцией по cron; проверка подключения одной кнопкой, причём токен и пароль не выводятся в форме настроек.
Требования: модули «Главный модуль», «Информационные блоки», «Торговый каталог» и «Интернет-магазин» (для заказов), PHP 8.2 или новее, UTF-8, аккаунт МойСклад с доступом к JSON API 1.2 и исходящие HTTPS-соединения с api.moysklad.ru.
Источник 5: обмен с 1С — эксплуатация, а не загрузка
Стандартный обмен с 1С в Битрикс уже есть. Проблема обычно не в том, чтобы его запустить, а в том, чтобы понять, почему он не работает и почему остатки не сходятся.
Бандл: Продвинутый обмен с 1С, Тюнинг стандартного обмена и Журнал изменений товаров — это набор из трёх модулей именно для настройки стандартного обмена с 1С или с МойСклад и для его эксплуатации. Состав заявлен так:
- Продвинутый обмен с 1С — отладчик, чтобы видеть, как идёт обмен, как завершается, какие ошибки в процессе; мониторинг обмена и лог-файл; дополнительные настройки для повышения отказоустойчивости и скорости.
- Тюнинг стандартного обмена с 1С или с МойСклад — мини-модули для модификации данных в процессе обмена: изменения при выгрузке товаров, при создании заказов и для иных задач.
- Журнал изменений товаров — запись изменений в карточке товаров, остатках, складах и ценах.
Зачем журнал: в описании приведён типичный вопрос — остаток в 1С не совпадает с сайтом, и нужно сразу видеть, как обновлялся остаток и куда он делся, было списание или резерв. Или просто посмотреть, когда 1С в последний раз присылала изменения.
Отдельная деталь, о которой легко забыть: в описании указано, что модуль «Продвинутый обмен с 1С» может пропускать описания товаров и загружать только цены и остатки, сокращая время обмена до 10 раз, — но этот ограниченный режим подойдёт не во всех случаях. Для нескольких одновременных выгрузок нужен отдельный модуль параллельного обмена, который в бандл не входит. То есть «ускорить обмен» — не кнопка, а конфигурация, и её нужно осознанно выбирать.
Матрица выбора: источник → тип модуля → что проверить
| Источник данных | Подходящий тип модуля | Что проверить перед запуском |
|---|---|---|
| Таблица XLSX/CSV, разовая или регулярная заливка | Загрузчик Excel в инфоблоки (ВебЕнот: Импорт из Excel) | Выбор листа и строки заголовков, обновление по стабильному ключу, проверка без записи, откат |
| Файлы с FTP, вложения email, Google Sheets | Модуль с профилями обмена и расписанием (BUSSOL DataBridge) | Забор файла по расписанию, составные ключи, Dry Run, откат, контроль пустого файла |
| Сайт поставщика, REST API, XML/YML | Парсер и мультиисточник (Bussol: Парсер и импорт PRO) | Проверка селекторов/API на тестовой выборке, Dry-run и diff, режим для исчезнувших товаров, лимиты |
| МойСклад как учётная система | Готовая интеграция (IDETA: Интеграция с МойСклад) | Обратный поток заказов, фильтры по группам, обработка архива, что нельзя перезаписывать вручную |
| 1С (стандартный обмен) | Обвязка над штатным обменом (бандл модулей) | Логи, мониторинг, журнал изменений остатков, отказоустойчивость и скорость |
| Позиции в сделку/лид для КП | CRM-модуль (Gigabyte: Импорт товаров из Excel/CSV) | Что это позиции сделки, а не товары каталога; лимиты 15 МБ и 2000 строк |
Сценарии связки нескольких модулей
В реальных проектах источники комбинируются.
- МойСклад + парсер. Основной каталог синхронизируется из МойСклад, а редкие позиции другого поставщика добираются парсером в отдельный инфоблок или раздел. Важно договориться, какие поля кто перезаписывает, иначе оба процесса будут спорить за одну цену.
- DataBridge + CRM-загрузка. Полный каталог на сайте обновляется DataBridge, а менеджер для быстрого КП грузит несколько позиций в сделку через Gigabyte: Импорт товаров из Excel/CSV — это позиции сделки, каталог они не затрагивают.
- 1С + журнал изменений. Стандартный обмен остаётся основным, а бандл добавляет диагностику и журнал: когда пропал остаток, видно было это списание, резерв или ошибка выгрузки.
- МойСклад + DataBridge для отчётов. Каталог синхронизируется из МойСклад, а регулярный B2B-прайс формируется в DataBridge по XLSX-шаблону и уходит партнёрам по расписанию.
Типичные ошибки внедрения импорта
- Импорт без проверки на пустой файл. Поставщик прислал обрезанную выгрузку — и модуль деактивировал полкаталога. Смотрите, есть ли защита: у DataBridge массовая обработка отсутствующих позиций не запускается, если импорт завершился с ошибками или файл фактически не содержит данных; у парсера — не выполняется массовая деактивация при ошибке источника, неполном обходе или достижении лимитов.
- Ключ поиска «по артикулу», когда артикулы повторяются у разных поставщиков. Отсюда дубли и перепривязка SKU. Нужны составные ключи.
- Первый запуск сразу на живом каталоге. И Dry Run, и проверка без записи, и тестовая среда нужны именно потому, что импорт — это массовая запись.
- Забытый rollback. Откат — дополнительный уровень, а не замена бэкапу. В описании DataBridge это сказано прямо.
- Ожидание, что обмен с 1С «сам разберётся». Без логов, мониторинга и журнала изменений остатков поиск расхождения превращается в расследование.
- Обмен только в одну сторону. Заказы, созданные на сайте, должны уходить в учётную систему — иначе остатки снова разойдутся.
- Агент по обращению в браузере. Регулярные обмены должны идти по cron; в описаниях DataBridge и парсера это указано отдельно.
- Публичный URL для источника без проверок. Автоматизация не должна превращать сервер в неконтролируемый загрузчик — важны ограничения на схемы, приватные адреса и размер ответа.
- Импорт изображений с внешних адресов без проверки типа. Даже если модуль проверяет MIME и отказывается от SVG, ответственность за контент остаётся на владельце сайта.
- Отсутствие журнала и истории запусков. Без них невозможно понять, какой из трёх импортов сломал цену.
Чек-лист перед покупкой
- Опишите источник: файл вручную, файл по расписанию, API, учётная система. Не смешивайте.
- Проверьте, нужна ли обратная запись (заказы в МойСклад или 1С). Если да — Excel-загрузчик не подойдёт.
- Посчитайте объём: количество товаров, SKU, изображений. Уточните, есть ли пакетная обработка и streaming.
- Проверьте уникальность ключа: хватает ли артикула или нужен составной ключ.
- Уточните, что модуль делает с товарами, исчезнувшими из источника: ничего, деактивировать, обнулить остаток.
- Убедитесь, что есть проверка без записи (Dry Run / проверка) и откат.
- Проверьте требования: версия PHP, модули iblock, catalog, sale, highloadblock, расширения PHP и права на /upload.
- Спросите про расписание и cron — не только про ручной запуск.
- Уточните, настраивается ли обмен на тестовой среде и переносится ли конфигурация между проектами.
- Отдельно уточните, какие права нужны администраторам и есть ли журнал действий.
- Если учёт в 1С — проверьте, что вы покупаете не «загрузку», а диагностику и журнал изменений.
Итог
Выбор модуля импорта начинается не с модуля, а с ответа на два вопроса: откуда приходят данные и нужно ли что-то отправлять обратно. Разовая заливка таблицы не требует платформы с очередью и workers; ежедневный обмен с МойСклад не делается загрузчиком Excel; парсинг сайта поставщика — это про селекторы и проверку на тестовой выборке, а не про «импорт файла». Внутри одного класса решает не список возможностей, а три вещи: есть ли проверка без записи, что происходит с исчезнувшими позициями и можно ли откатить неудачный прогон. Если эти три вопроса закрыты, остальное — вопрос удобства. Перед первым запуском на рабочем каталоге сделайте один прогон на копии: это дешевле, чем восстанавливать цены и остатки в сезон.