Импорт каталога из 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-генератор контента» |
#Установка
- Установите модуль из Маркетплейса: Marketplace → Каталог решений, найдите «Импорт каталога» и нажмите «Установить».
- В главном меню административной панели появится раздел Codebrain → Импорт каталога.
- Откройте Настройки → Диагностика: модуль проверит агентов, индексы базы, расширения PHP, доступные протоколы и закрыт ли доступ к папке с прайсами.
Если в строке есть кнопка «Исправить» — например, для индекса по значениям свойств, без которого поиск по артикулу на больших каталогах медленнее в десятки раз, — модуль сделает это сам.
#Быстрый старт
- Профили импорта → Новый профиль. Выберите шаблон (например, «Прайс Excel / CSV») или пустой профиль.
- На вкладке «Источник» загрузите файл или укажите ссылку, на вкладке «Куда» выберите инфоблок. Сохраните.
- На вкладке «Поля» нажмите «Подобрать автоматически»: колонки сопоставятся с полями по названиям. Поправьте то, что не подобралось, и нажмите «Проверить на строках файла».
- Нажмите «Сохранить и сделать пробный прогон» — модуль покажет, что будет создано и изменено, ничего не записывая.
- Всё верно — «Выполнить импорт с этим файлом». Если нужно — включите расписание.
Над шагами профиля — подсказка «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 запускает импорт запросом — для 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-генератор контента»: текст страниц разбирается моделью в таблицу.
Как загрузить только цены и остатки? Шаблон «Цены и остатки по артикулу»: выключено создание новых товаров, сопоставлены артикул, цена и остаток, отсутствующим — нулевой остаток.
Как перенести профиль на другой сайт? «Экспорт в файл» в профиле и «Профиль из файла» на другом сайте. Пароли не переносятся — введите их заново.
Не нашли ответ — нажмите «Техподдержка» вверху страницы.