Codebrain поддержка
codebrain.import

Импорт каталога из Excel, XML, YML, JSON

Модуль codebrain.import загружает в каталог Битрикса товары, цены, остатки, картинки и разделы из прайсов поставщиков: Excel, CSV, XML, YML, CommerceML, JSON, HTML-таблиц, DBF и PDF. Прайс берётся с компьютера, с сервера, по ссылке, с FTP, из почты или из API — вручную или по расписанию.

Модуль бесплатный. Он бережёт каталог: показывает пробный прогон до записи, останавливается на «плохих» прайсах, не затирает ручные правки контент-менеджера и умеет откатить любой запуск.

#Возможности

  • Источники: файл с компьютера или с сервера, последний файл в папке по маске, ссылка (в том числе Яндекс.Диск, Google Таблицы и Диск, Dropbox, Облако Mail.ru), сайт поставщика с авторизацией, FTP/FTPS, почтовый ящик IMAP, JSON API с постраничной выдачей. Архивы ZIP, GZ, TAR.
  • Форматы: XLSX, XLS, ODS, CSV, XML, YML, CommerceML, JSON, HTML-таблицы, DBF, PDF. Кодировка, разделитель и строка заголовков определяются автоматически.
  • Все поля каталога: поля элемента, свойства всех типов (списки, справочники и привязки создаются сами), SEO, параметры товара, цены с диапазонами количества, остатки по складам, штрихкоды, скидки, комплекты, торговые предложения, разделы, highload-блоки.
  • Обработка без PHP: цепочки преобразований (наценка, округление, единицы, словари), выражения, правила «если — то» и готовые пресеты.
  • Поиск товаров: по артикулу, составному ключу, с нормализацией («AB-0012» = «ав 0012»), по похожему названию с очередью решений.
  • Защита каталога: пустой или обрезанный файл, смена колонок, массовое «отсутствие», скачок цены — импорт останавливается до вашего решения.
  • Пробный прогон, проверка изменений и откат каждого запуска.
  • Картинки с параллельной загрузкой, дедупликацией и повторами, ZIP-архив картинок по артикулам.
  • Поставщики: портал для загрузки прайса без доступа в админку, webhook, несколько поставщиков одного товара, мониторинг, уведомления на e-mail и в Telegram.
  • Шаблоны профилей: YML, CommerceML, прайс Excel, цены и остатки, картинки, Google Таблица, CSV другого сайта на Битриксе, Gifts.ru, Oasis.
  • ИИ через бесплатный модуль «AI-генератор контента» на ваших ключах: сопоставление колонок, разбор «кривых» прайсов, правила словами, разделы, PDF.

#Требования

Что Требование
Платформа 1С-Битрикс: Управление сайтом, главный модуль 20.0 или новее; модуль «Информационные блоки», для цен, остатков и предложений — «Торговый каталог»
PHP 7.3 или новее, расширения zip, xmlreader, curl, mbstring, dom; рекомендуется intl
Кодировка UTF-8
Агенты Для импорта по расписанию — агенты Битрикса на cron (иначе запуск зависит от посещений сайта)
PDF-прайсы Утилита pdftotext на сервере и модуль «AI-генератор контента»

#Установка

  1. Установите модуль из Маркетплейса: Marketplace → Каталог решений, найдите «Импорт каталога» и нажмите «Установить».
  2. В главном меню административной панели появится раздел Codebrain → Импорт каталога.
Раздел «Импорт каталога» в меню административной панели
  1. Откройте Настройки → Диагностика: модуль проверит агентов, индексы базы, расширения PHP, доступные протоколы и закрыт ли доступ к папке с прайсами.
Диагностика сервера

Если в строке есть кнопка «Исправить» — например, для индекса по значениям свойств, без которого поиск по артикулу на больших каталогах медленнее в десятки раз, — модуль сделает это сам.

#Быстрый старт

  1. Профили импорта → Новый профиль. Выберите шаблон (например, «Прайс Excel / CSV») или пустой профиль.
  2. На вкладке «Источник» загрузите файл или укажите ссылку, на вкладке «Куда» выберите инфоблок. Сохраните.
  3. На вкладке «Поля» нажмите «Подобрать автоматически»: колонки сопоставятся с полями по названиям. Поправьте то, что не подобралось, и нажмите «Проверить на строках файла».
  4. Нажмите «Сохранить и сделать пробный прогон» — модуль покажет, что будет создано и изменено, ничего не записывая.
  5. Всё верно — «Выполнить импорт с этим файлом». Если нужно — включите расписание.
Список профилей импорта

Над шагами профиля — подсказка «1. Источник → 2. Инфоблок → 3. Поля → 4. Пробный прогон → 5. Импорт и расписание»: пройденные шаги отмечены зелёным.

#Профиль импорта

Профиль — это всё о прайсе одного поставщика: откуда его брать, как читать, что куда записывать и по каким правилам. Профиль можно скопировать, выгрузить в файл кнопкой «Экспорт в файл» и загрузить на другой сайт («Профиль из файла»). Пароли и токены при экспорте не переносятся.

#Шаблоны

Новый профиль можно начать с шаблона — он заполнит формат, сопоставление полей, поиск товаров и расписание:

Шаблон Для чего
YML (Яндекс.Маркет) Фид поставщика: товары, цены, категории, картинки, параметры
CommerceML (выгрузка 1С) import.xml из 1С: товары, группы, артикулы, картинки
Прайс Excel / CSV Артикул, наименование, категория, цена, остаток, описание, фото
Цены и остатки по артикулу Обновление существующих товаров каждый час, отсутствующим — нулевой остаток
Картинки по артикулу Только фото: из ссылок в файле или из папки по имени файла
Google Таблица Таблица по ссылке, обновление каждые 30 минут
CSV-выгрузка другого сайта на Битриксе Штатный экспорт каталога (IE_*, IP_PROP*, IC_GROUP*, CV_PRICE_*)
Gifts.ru — товары / остатки XML API «Проекта 111»
Oasis — категории / товары API v4: дерево разделов, затем товары с ценами, остатками и фото
Новый профиль из шаблона

#Версии профиля

Каждое сохранение профиля попадает в историю: кто, когда, с каким комментарием и что изменилось. Любую версию можно восстановить — текущие настройки при этом тоже сохранятся в истории.

История изменений профиля

#Источник прайса

Вкладка «Источник»
Источник Что указать
Файл с компьютера Загрузите файл в профиль; новый файл — загрузкой поверх
Файл на сервере Путь от корня сайта, например /upload/prices/supplier.xlsx. Служебные папки и файлы кода (/bitrix/, /local/, .php) не читаются
Последний файл в папке Папка и маска: price_*.xlsx, *.csv — берётся самый свежий файл
Ссылка Адрес файла. Публичные ссылки Яндекс.Диска, Google Таблиц и Диска, Dropbox, Облака Mail.ru превращаются в прямые сами
FTP / FTPS Сервер, порт, путь, логин и пароль; шифрование FTPES или FTPS, пассивный режим
Почтовый ящик IMAP-сервер, папка, отправитель, тема. Берётся вложение по маске из самого нового ещё не загруженного письма. Для Яндекса и Mail.ru нужен пароль приложения
JSON API Адрес с {PAGE}, параметры страницы и её размера, путь к списку товаров в ответе. Страницы загружаются, пока API отдаёт товары

Авторизация по ссылке: Basic, Digest, токен (Bearer), свои заголовки или форма входа на сайте поставщика — модуль войдёт с вашим логином и паролем и использует те же cookie для картинок. Закрытые Google Таблицы читаются по JSON-ключу сервисного аккаунта.

Ещё на вкладке: файл внутри архива (маска), прокси (http://, socks5://) для файла и картинок, свой User-Agent, «Пропускать тот же файл» (если прайс не изменился, запуск заканчивается сразу) и удаление файла после импорта.

Кнопка «Проверить источник» скачает файл и покажет его имя, размер и формат.

#Формат и структура файла

Вкладка «Формат»

Формат, кодировка и разделитель CSV определяются автоматически. Вручную задаются:

  • Строка заголовков и первая строка данных. 0 — заголовков нет, колонки называются A, B, C…
  • Строки-разделы: строка с одной заполненной ячейкой — название раздела (или бренда) для товаров ниже. В значениях доступна как heading().
  • Склеивать повторяющиеся строки: подряд идущие строки одного товара — один товар (значения множественных свойств и картинки собираются вместе). Так выгружает CSV сам Битрикс и многие поставщики.
  • Элемент товара и категории для XML и JSON. Пусто — определяется автоматически (offer в YML, Товар в CommerceML).
  • Листы книги Excel и лист с торговыми предложениями.

«Показать файл» выводит первые строки с буквами и названиями колонок. «Определить структуру» найдёт строку заголовков и строки-разделы, а с модулем «AI-генератор контента» — «Определить с ИИ» разберёт даже прайс с шапкой, логотипом и объединёнными ячейками.

Просмотр файла

#Куда загружать

Вкладка «Куда»
  • Инфоблок — каталог или любой другой инфоблок. Для торгового каталога предложения загружаются в связанный инфоблок предложений автоматически. Вместо инфоблока можно выбрать highload-блок (справочник цветов, брендов).
  • Разделы из файла:
    • не создавать — товар размещается только полями «Разделы» / «ID раздела»;
    • находить и создавать по названиям — путь «Мебель/Кровати» создаёт недостающие уровни под выбранным корнем;
    • через таблицу сопоставления категорий — новые категории поставщика ждут вашего решения на странице «Разделы поставщиков», а их товары не попадают в корень каталога (см. Разделы поставщиков).
  • Раздел по умолчанию — для строк без раздела. «Не менять разделы, если в строке их нет» — товар, перенесённый вручную, останется на месте.
  • Торговые предложения: в каждой строке товар и его предложение; строки с одинаковым ключом группы — предложения одного товара; предложения на отдельном листе.
  • Поставщик: название, склад поставщика (можно создать здесь же), режим нескольких поставщиков одного товара — см. Поставщики.
  • Проверка перед записью — см. Проверка изменений.

#Поля

На вкладке «Поля» каждой строке сопоставления соответствует поле каталога и значение из файла.

Сопоставление полей
  • «Подобрать автоматически» — по названиям колонок, синонимам («Наименование», «Название товара», «Product name») и названиям свойств инфоблока.
  • «Сопоставить с ИИ» — оставшиеся колонки отдаются модели; уже сопоставленное не меняется.
  • «Создать свойства для колонок без поля» — для колонок, которых нет в каталоге, создаются свойства подходящего типа.
  • Клик по колонке над таблицей вставляет её в выбранное значение.
  • Столбец «Когда»: всегда, только у новых (например, описание и картинки — только при создании), если на сайте пусто.

«Проверить на строках файла» прогоняет первые строки через сопоставление и правила и показывает, какие значения получатся и найден ли товар на сайте. Ничего не записывается.

Проверка сопоставления на строках файла

#Поля каталога

Группа Поля
Элемент Название, символьный код, внешний код, активность и её даты, сортировка, анонс и детальное описание, картинки, галерея, теги
Разделы Путь разделов, раздел 1–5 уровня, ID или внешний код раздела, символьный код
Свойства Все типы: строка, число, список, файл, привязки к элементам и разделам, справочник, дата, HTML; множественные; описание значения. Недостающие значения списков, справочников и привязок создаются
Торговый каталог Цены по типам и диапазонам количества, валюта, доступное и зарезервированное количество, остатки по складам, закупочная цена, вес и габариты, единица измерения и коэффициент, НДС, штрихкод, покупка при отсутствии, количественный учёт, подписка
Скидки Процент, сумма или цена со скидкой, даты действия, название
Комплекты Состав «артикул:количество; …», тип — комплект или набор
SEO Шаблоны META TITLE, KEYWORDS, DESCRIPTION, H1, ALT и TITLE картинок — у товара и у раздела
Раздел из строки Название, код, внешний код, активность, сортировка, описание, картинки, родитель

#Значения и выражения

В поле «Значение из файла» пишется шаблон или выражение:

  • Шаблон: {Бренд} {Модель} — колонки по названию, по букве ({B}) или поля XML ({vendorCode}, {param[Цвет]}, {@id}).
  • Выражение начинается с =:
=num({Цена}) * 1.2
=if(empty({РРЦ}), {Закупка} * 1.3, {РРЦ})
=round_to(max({Цена}, current()), 10)
=dims({Габариты}, 1) / 10

Операторы: + - * / %, & (склейка строк), = != < > <= >=, and or not. Уже рассчитанные поля строки — {@E.PRICE.1}.

Функции
Логика if, and, or, not, empty, coalesce
Числа и цены num, int, round, round_to, ceil_to, floor_to, nines (цена на 9), min, max, abs, percent, convert (валюта по курсу сайта), unit (мм → см, г → кг…)
Строки len, lower, upper, title, sentence, trim, replace, regex, match, substr, left, right, contains, starts, ends, words, pad, concat, strip_tags, nl2br, translit, fmt
Списки split, join, first, last, count, item, unique, pick, lookup («красный=Red; синий=Blue»), dims (числа из «614x463x196»)
Контекст current() — значение поля на сайте, field("E.PRICE.1"), heading() — строка-раздел над товаром, sheet(), row(), col(), date, now

PHP-код не выполняется: выражения разбирает сам модуль, это безопасно.

#Обработка значений

Кнопка «+» в столбце «Обработка» добавляет цепочку простых преобразований — без выражений:

заменить текст или по регулярному выражению, удалить, извлечь часть, убрать лишние пробелы, регистр, добавить в начало или конец, число из текста («1 220,50 руб.» → 1220.5), умножить, прибавить, наценка %, округление до знаков или до кратного, цена на 9, единицы измерения, валюта по курсу сайта, значение по умолчанию, словарь «было=стало», разбить и склеить значения, обрезать, убрать HTML-теги, очистить HTML поставщика, переносы строк в HTML, транслитерация, убрать ведущие нули.

#Правила и фильтр строк

Правила и фильтр

Фильтр строк: загружаются строки, которые подходят под все условия «Загружать, только если» и ни под одно «Не загружать, если». Условия: равно, содержит, начинается с, больше, меньше, пусто, одно из списка, регулярное выражение, выражение истинно и другие.

Правила «если — то» применяются по порядку после полей: меняют значения (наценки, округление, раздел по слову) или пропускают строку. Готовые правила добавляются одним кликом:

  • наценка по категории или по бренду;
  • нет РРЦ — закупка × 1,25;
  • не снижать цену; поднимать не больше чем на 10%;
  • цена на 9;
  • перевести USD в рубли;
  • не загружать бренды;
  • раздел по слову в названии;
  • отметить новинкой новые товары.

С модулем «AI-генератор контента» правило можно описать словами — «если нет РРЦ, умножить закупку на 1,25 и округлить до десятков» — и нажать «Создать правило из описания». Модель соберёт обычное правило из условий и действий: его видно и можно поправить.

Правила и создание правила из описания

#Поиск товаров

Вкладка «Поиск товаров»
  • Поля поиска товара — обычно артикул. Несколько полей — составной ключ (бренд + артикул). Пусто — внешний код или название. Для предложений — свои поля поиска.
  • Нормализация: «AB-0012», «ab 0012» и «АВ0012» (кириллица) — один товар.
  • Память профиля: найденная пара «строка прайса — товар» запоминается. Поставщик сменил артикул или название — связь сохраняется.
  • Похожие названия: если точного совпадения нет, ищутся товары с похожим названием. Сходство выше порога «связывать сразу» — товар связывается, между порогами — строка ждёт решения на странице «Сопоставление товаров», а дубль не создаётся. С ИИ модель может сама выбрать среди похожих.
  • Создавать новые товары / Обновлять найденные — выключите создание для прайсов «только цены и остатки».

#Сопоставление товаров

Сопоставление товаров

Для каждой неуверенной строки — похожие товары с процентом сходства. Выберите товар, «Это новый товар — создать», «Не загружать эту строку» или найдите другой товар по названию или ID. Решение запоминается и применяется при следующем запуске.

#Защита каталога

Вкладка «Защита»

Товары, которых нет в файле: не трогать, деактивировать, обнулить остаток, задать значения или удалить. По умолчанию действие касается только товаров, загруженных этим профилем — товары других поставщиков и созданные вручную не затрагиваются. Отдельно — для предложений и для разделов, в которых не осталось активных товаров.

Активность: новые товары активны или нет, «активен только при наличии» (остаток 0 — деактивировать, появился — активировать), активировать товары, вернувшиеся в прайс.

Защита от «плохих» прайсов — импорт останавливается до вашего решения, каталог остаётся нетронутым, если:

  • в файле нет ни одной строки или строк намного меньше, чем в прошлый раз (обрезанный файл);
  • поставщик переименовал или переставил колонки, которые использует профиль;
  • действие «отсутствующие в файле» затронуло бы больше заданной доли товаров профиля.

Карантин цен: строка с ценой, изменившейся сильнее заданного процента, или с нулевой ценой не записывается и ждёт решения на странице «Проверка изменений».

Ручные правки: модуль помнит, что записал в каждое поле. Если контент-менеджер изменил на сайте поле из отмеченных групп (SEO, свойства, разделы, цены), импорт это поле больше не трогает. А на карточке товара появляется вкладка «Импорт»: какими профилями обновляется товар, и флажок «Не обновлять этот товар из импорта».

#Картинки

Вкладка «Картинки»
  • Первая картинка — детальная, остальные — в галерею (свойство выбирается); картинка анонса из детальной.
  • Разделитель ссылок определяется сам (, ; | перенос строки); относительные ссылки дополняются адресом поставщика.
  • Загрузка в несколько потоков с ограничением запросов в секунду к одному сайту — поставщик не заблокирует ваш сервер.
  • Одинаковые картинки не скачиваются дважды; те же ссылки при следующем импорте не качаются. «Перепроверять скачанные картинки» — если поставщик меняет картинки по тем же ссылкам.
  • Папка с картинками: если ссылок в файле нет, ищутся файлы ART.jpg, ART_1.jpg, ART-2.jpg или папка ART/ по артикулу.

Картинки, которые не скачались, не задерживают импорт: товар сохраняется без них, а агент повторяет попытки через 5 минут, 15 минут, 1, 3 и 12 часов. Очередь и сайты с ошибками — на странице «Картинки»; там же загружается ZIP-архив картинок по артикулам.

Страница «Картинки»

#Пробный прогон и запуск

Пробный прогон проходит весь импорт — поиск товаров, правила, защиты, отсутствующие — без записи и показывает итог: что будет создано, изменено, деактивировано, что уйдёт в карантин или на сопоставление.

Пробный прогон

Каждое изменение — «было → стало» по полям. Фильтры: новые товары, цены, остатки, описание и свойства, разделы, активность. Изменения, ошибки, пропущенные строки и журнал выгружаются в XLSX. Если всё верно — «Выполнить импорт с этим файлом»: запуск возьмёт тот же файл.

Запуск импорта

Запуск идёт по шагам и продолжается сам после перерыва (агентом, cron или открытой страницей запуска). На вкладках — ошибки, предупреждения, пропущенные строки и сообщения.

Предупреждения запуска

Пропускать неизменённые строки: строка прайса, которая не изменилась с прошлого раза, не обрабатывается — ежедневное обновление 100 тысяч строк занимает минуты. «Полный прогон» обрабатывает всё заново.

#Откат

«Откатить запуск» возвращает прежние значения изменённых товаров, активирует деактивированные и удаляет созданные запуском товары. Поля, которые после запуска изменили вручную или следующим импортом, не откатываются — модуль покажет их список. Удалённые действием «удалить» товары откатить нельзя.

#Проверка изменений

В профиле выбирается, что ждёт проверки перед записью:

  • ничего — записывать сразу;
  • все изменения;
  • только новые товары;
  • цены и остатки сразу, остальное (описания, свойства, новые товары) — после проверки.
Проверка изменений

На странице «Проверка изменений» собраны изменения из всех профилей и строки в карантине. Отметьте нужные и примените или отклоните — целиком или только выбранные виды (например, только цены). Применённые изменения можно откатить на странице запуска.

#Разделы поставщиков

В режиме «через таблицу сопоставления» категории поставщика связываются с разделами вашего каталога. Новая категория ждёт решения, а её товары — пока вы не выберете раздел: они не попадают в корень каталога.

Разделы поставщиков

Для категории: «в раздел →» (выбрать раздел сайта), «создать как в файле» или «не загружать». С ИИ кнопка «Подобрать разделы с ИИ» заполнит подсказки — проверьте их перед «Принять все подсказки»: модель может ошибиться с похожими категориями.

#Поставщики

Поставщики

Страница «Поставщики» показывает все профили: последний запуск и последний успешный, когда прайс менялся, сколько строк и товаров, какая доля строк найдена на сайте, и что требует внимания — изменения на проверке, похожие товары, категории без раздела, картинки в очереди.

#Несколько поставщиков одного товара

Если один товар продают несколько поставщиков, включите в профилях режим нескольких поставщиков и задайте приоритет. Цена и остаток каждого поставщика хранятся отдельно, а на товар записывается минимальная цена среди поставщиков с наличием (при равенстве — по приоритету) и суммарный остаток.

#Портал и webhook

Портал и webhook

Ссылка для поставщика открывает простую страницу, где поставщик загружает прайс без доступа в админку и сразу видит результат проверки.

Страница загрузки прайса для поставщика

Webhook запускает импорт запросом — для 1С и скриптов поставщика:

# запустить импорт с файлом по источнику профиля
curl "https://ваш-сайт.ru/bitrix/tools/codebrain_import_hook.php?token=…"
# передать файл
curl -F "file=@price.xlsx" "https://ваш-сайт.ru/bitrix/tools/codebrain_import_hook.php?token=…"
# пробный прогон
curl -F "file=@price.xlsx" "https://ваш-сайт.ru/bitrix/tools/codebrain_import_hook.php?token=…&mode=dry"

Ответ — JSON {"ok": true, "run": 123, "status": "…"}. «Сменить ссылки» отключает старые ссылки портала и webhook.

#Расписание и уведомления

Вкладка «Расписание»
  • Запуск: вручную, каждые N минут или ежедневно в заданное время (несколько времён через запятую).
  • Цепочка: после профиля запустить другой — например, сначала каталог, затем цены и остатки.
  • Прайс не меняется N дней — предупреждение: поставщик сменил ссылку или перестал обновлять файл.
  • Уведомления на e-mail и в Telegram: только о проблемах, после каждого запуска или никогда.
  • После импорта: сбросить кеш каталога, 301-редиректы при смене адреса товара, чистить HTML описаний поставщика, количество = сумма складов, отправить новые товары в «AI-генератор контента» (заполняются только пустые поля).

Остановленные защитой запуски, давно не выполнявшееся расписание, устаревший прайс и запуск, который не продвигается, попадают в блок «Требует внимания» на странице «Поставщики» и в уведомления. Число изменений на проверке и похожих товаров, ждущих решения, видно в информере административной панели (кнопка «i»).

#История запусков

История запусков

Все запуски с фильтром по профилю и статусу: когда, как запущен (вручную, по расписанию, порталом, webhook), файл и итог. Срок хранения истории задаётся в настройках; последний запуск профиля и изменения на проверке хранятся всегда.

#ИИ в импорте

Модуль работает и без ИИ: колонки подбираются по названиям и синонимам, структура файла — эвристиками. С бесплатным модулем «AI-генератор контента» на ваших ключах (OpenAI, Claude, Gemini, DeepSeek, GigaChat, YandexGPT, OpenRouter и другие) в импорте появляются:

  • сопоставление колонок прайса с полями и свойствами одной кнопкой;
  • определение структуры «кривых» прайсов: заголовки, строки-разделы, товары и предложения;
  • сопоставление категорий поставщика с разделами сайта;
  • правила наценки и обработки, описанные обычными словами;
  • выбор того же товара среди похожих названий;
  • прайсы в PDF;
  • описания, SEO и характеристики для новых товаров после импорта.
Настройки ИИ

ИИ помогает настроить профиль, а результат — обычные сопоставления и правила, которые видно и можно поправить. Обычный импорт по расписанию к модели не обращается (кроме выбора среди похожих товаров и PDF, если вы их включили).

#Настройки

Codebrain → Импорт каталога → Настройки:

Вкладка Что настраивается
ИИ Включение ИИ в импорте, ссылка на провайдеров «AI-генератора контента»
Уведомления E-mail по умолчанию, срок хранения истории, бот и чат Telegram (с прокси), число созданных 301-редиректов
Права Группы для запуска, настройки профилей, проверки и отката
Диагностика Агенты на cron, индексы, PHP, протоколы, PDF, защита папки с прайсами
Уведомления и хранение данных

#Права доступа

Права
Право Что даёт Если группы не выбраны
Запуск импорта Запускать профили, смотреть историю и запуски Пользователи с правом изменять каталог
Настройка профилей Создавать и менять профили Только администраторы
Проверка и откат Применять и отклонять изменения, откатывать запуски Только администраторы

Запуск и настройка профиля дополнительно требуют права на изменение элементов его инфоблока. Источники во внутренней сети сервера (localhost, частные адреса) может задать только администратор.

#Как это работает

  • Запуск состоит из шагов: получить файл → один раз прочитать его в служебный файл строк → проверить защиты → обработать строки пачками → обработать отсутствующие → завершить. Каждый шаг можно продолжить после перерыва, поэтому импорт больших прайсов не упирается в лимит времени PHP.
  • Прайсы и служебные файлы хранятся в /upload/codebrain.import/ (закрыта .htaccess; на nginx добавьте location ^~ /upload/codebrain.import/ { deny all; }).
  • Два запуска одного профиля одновременно не идут.

#Агенты

Агент Как часто Что делает
Импорт Раз в минуту Запуски по расписанию и продолжение начатых запусков
Картинки Раз в 2 минуты Повторная загрузка картинок, которые не скачались
Мониторинг Раз в час Устаревшие прайсы, пропущенное расписание, зависшие запуски
Очистка Раз в сутки Старые запуски, журналы, копии картинок для отката и файлы прайсов

#Данные и конфиденциальность

  • Никаких данных на серверы Codebrain модуль не отправляет.
  • Внешние запросы — только к источникам, которые вы указали (сайт, FTP, почта, API поставщика, ссылки на картинки), в Telegram при включённых уведомлениях и к LLM-провайдеру через «AI-генератор контента», если вы пользуетесь ИИ. В модель уходят названия колонок, примеры строк прайса и список полей каталога.
  • Пароли и токены источников хранятся в профиле, в форме показываются замаскированными и не попадают в экспорт профиля.
  • Ссылки портала и webhook содержат секретный токен — передавайте их только поставщику и меняйте кнопкой «Сменить ссылки», если ссылка попала не туда.

#Для разработчиков

#События

use Bitrix\Main\EventManager;
use Bitrix\Main\EventResult;

EventManager::getInstance()->addEventHandler('codebrain.import', 'OnImportRow', function ($event) {
    $values = $event->getParameter('values');
    $row = $event->getParameter('row');            // ['n' => номер строки, 'c' => ['Колонка' => значение, …]]
    if (($row['c']['Статус'] ?? '') === 'снят с производства') {
        return new EventResult(EventResult::SUCCESS, ['skip' => true]);
    }
    $values['E.NAME'] = trim($values['E.NAME'] ?? '');
    return new EventResult(EventResult::SUCCESS, ['values' => $values]);
});
Событие Параметры Что можно сделать
OnImportStart run, profile Перед запуском
OnImportRow run, profile, row, values Изменить значения строки (SUCCESS с values) или пропустить её (SUCCESS с skip => true)
OnImportEnd run, profile После запуска: run['STATUS'], run['STATS'], run['FILE']

Ключи values — коды полей профиля: E.NAME, E.PROP.<ID свойства>, E.PRICE.<ID типа цены>, E.STORE.<ID склада>, E.CAT.QUANTITY, O.* — поля предложения.

#Удаление модуля

Marketplace → Установленные решения → Импорт каталога → Удалить. Модуль спросит, сохранить ли данные: профили, историю запусков и настройки. Если снять галочку, будут удалены таблицы модуля и папка /upload/codebrain.import/ с прайсами.

Загруженные товары, разделы и картинки остаются в каталоге в любом случае.

#Частые вопросы

Импорт создал дубли товаров. Поиск идёт по полям вкладки «Поиск товаров». Проверьте, что выбран артикул (или составной ключ), и включите нормализацию и поиск по похожим названиям — неуверенные совпадения будут ждать решения, а не создавать дубли. Пробный прогон покажет, сколько товаров будет создано.

Импорт остановился: «Возможно, поставщик прислал неполный файл». Сработала защита каталога. Откройте запуск: если файл правильный, подтвердите запуск, иначе дождитесь нового прайса — каталог не тронут.

Контент-менеджер поправил описание, а импорт его перезаписал. Включите на вкладке «Защита» «Не перезаписывать ручные правки» и отметьте группы полей. Правки, сделанные до включения, модуль отличить не может — для них используйте столбец «Когда: только у новых» или флажок на карточке товара.

Картинки не загрузились. Товар сохраняется без них, а картинки повторяются агентом. Причины видны на странице «Картинки» по сайтам: обычно поставщик ограничивает частоту запросов (уменьшите число запросов в секунду) или требует авторизацию (форма входа на вкладке «Источник»).

Импорт по расписанию не запускается. Агенты выполняются при посещениях сайта. Переведите агентов на cron — инструкция на вкладке «Диагностика».

Excel-файл читается с ошибкой или пустой. Нажмите «Показать файл» на вкладке «Формат»: проверьте лист, строку заголовков и первую строку данных.

Прайс в PDF. Нужны pdftotext на сервере и модуль «AI-генератор контента»: текст страниц разбирается моделью в таблицу.

Как загрузить только цены и остатки? Шаблон «Цены и остатки по артикулу»: выключено создание новых товаров, сопоставлены артикул, цена и остаток, отсутствующим — нулевой остаток.

Как перенести профиль на другой сайт? «Экспорт в файл» в профиле и «Профиль из файла» на другом сайте. Пароли не переносятся — введите их заново.

Не нашли ответ — нажмите «Техподдержка» вверху страницы.