Автонаполнение описаний товаров в 1С-Битрикс из внешних источников

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Автонаполнение описаний товаров в 1С-Битрикс из внешних источников
Средний
~1-2 недели
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1368
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    956
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    699
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    848
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    737
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1086

Вы запустили интернет-магазин на 1С-Битрикс. Тысячи товаров, но описания пустые или скопированы из прайса. Контент-менеджеры тратят часы на поиск и форматирование — и всё равно описания различаются стилем и качеством. Ошибки при копировании, дубли, неактуальная информация.

Выход — автоматизированное наполнение из внешних источников. Недавно к нам обратился клиент с каталогом 10 000 товаров электроники. Описания были только у 20%, остальные пустые. После внедрения системы заполнение достигло 95% за две недели. Наш fallback-подход обеспечивает стабильность в 3 раза выше, чем парсинг единичного источника.

Мы проектируем систему, которая сама собирает описания, не затирая ручные правки, и использует цепочку источников с fallback. Интеграция с любыми поставщиками через единый интерфейс провайдера. Получите консультацию по вашему проекту — оценим объём работ бесплатно.

Триггеры для заполнения описаний

Автонаполнение запускается в трёх ситуациях:

  • При добавлении нового товара — обработчик события OnAfterIBlockElementAdd. Товар только создан, поля пустые — система идёт за описанием в источники.
  • По расписанию для незаполненных — cron-задача находит элементы с пустым DETAIL_TEXT и ставит их в очередь.
  • При ручном запросе — менеджер в административной части нажимает «Получить описание» для конкретного товара.

Как защитить ручные правки? Обработчик и флаг блокировки

Ключевой элемент — свойство DESCRIPTION_LOCKED (тип S, значения Y/N). Когда менеджер редактирует описание в административной части вручную:

  • Устанавливается DESCRIPTION_LOCKED = Y
  • Система автонаполнения пропускает этот элемент

Устанавливаем флаг через обработчик OnBeforeIBlockElementUpdate — проверяем, изменился ли DETAIL_TEXT относительно предыдущего значения. Если да и изменение пришло не от системы автонаполнения — ставим флаг.

В документации Bitrix Framework описан рекомендованный подход к контролю изменений через события.

Цепочка источников с fallback

Описание ищется последовательно: если первый источник не дал результата — пробуем следующий:

  1. API производителя по VENDOR_CODE
  2. База Icecat по EAN/штрихкоду
  3. Парсинг сайта производителя
  4. AI-генерация по названию и характеристикам (крайний вариант)

Каждый источник реализует единый интерфейс:

interface DescriptionProviderInterface {
    public function getDescription(string $sku): ?string;
}

Оркестратор перебирает провайдеры в порядке приоритета. Дополнительно кэшируем ответы — если провайдер падает, используем последний успешный результат.

Почему очередь и приоритизация важны?

Не все товары одинаково важны. Приоритет в очереди:

  • Высокий: товары с активными заказами или просмотрами (данные из b_sale_order_item, b_stat_session)
  • Средний: новые товары без описания
  • Низкий: старые товары, не просматривавшиеся более 30 дней

Реализуется через поле priority в таблице очереди, воркер выбирает задачи ORDER BY priority DESC. Это гарантирует, что самые важные позиции получают описание в первую очередь.

Процесс работы

Этап Описание
Архитектура провайдеров Проектируем интерфейсы, описываем контракты для всех источников
Разработка провайдеров Пишем провайдеры для API, Icecat, парсинга, AI (1–2 дня каждый)
Триггеры и очередь Настраиваем обработчики событий и cron-воркер с приоритизацией
Защита ручных правок Внедряем флаг блокировки и обработчик контроля изменений
Административный интерфейс Добавляем кнопку ручного запроса, отображение статусов

Типичные ошибки при автонаполнении:

  • Затирание ручных правок: наше решение с флагом DESCRIPTION_LOCKED исключает эту проблему.
  • Нестабильные источники: fallback и кэширование ответов обеспечивают отказоустойчивость.
  • Смешение источников: приоритет и сохранение мета-информации позволяют отследить происхождение описания.

Что входит в результат

  • Полностью реализованная система автонаполнения с очередью и приоритетами
  • Подключённые источники (до 4 в базовой версии)
  • Механизм защиты ручных правок
  • Документация по архитектуре и эксплуатации
  • Обучение менеджеров (1 час)
  • Техническая поддержка в течение 1 месяца после запуска
Таймлайн работ
Этап Срок
Архитектура провайдеров, интерфейсы 4–8 часов
Разработка провайдеров (1–2 дня каждый) 2–6 дней
Триггеры, очередь, приоритизация 1–2 дня
Защита ручных правок 4–6 часов
Административный интерфейс 1 день

Итого: 6–12 рабочих дней в зависимости от числа источников.

Экономический эффект

Для каталога на 10 000 товаров ежегодная экономия составляет сотни тысяч рублей. Замена ручного труда автоматизацией позволяет сократить расходы в несколько раз. Проект окупается за 2–3 месяца.

Гарантируем, что после внедрения менеджеры тратят на описание товаров до 80% меньше времени. Сертифицированные специалисты с опытом более 10 лет. Свяжитесь с нами, чтобы обсудить ваш каталог и получить оценку.

Разработка парсеров для 1С-Битрикс: с чего начать?

XMLReader, а не SimpleXML — выбор инструмента определяет судьбу проекта. SimpleXML загружает весь XML в память, и при файле поставщика на 800 МБ PHP упадёт с fatal error на лимите 512 МБ. XMLReader обрабатывает потоково, node за node, потребляя 20–30 МБ — в 30 раз эффективнее. С этой детали стартует любая разработка парсеров под Битрикс. Мы делаем такие системы уже 10+ лет, и ни один проект не обходится без правильного выбора парсера.

Какие проблемы решает парсинг?

  • Первичное наполнение каталога — 15 000 карточек с описаниями, характеристиками, фото. Вручную это три месяца контент-менеджера; парсер — неделя с отладкой.
  • Мониторинг цен конкурентов — сбор данных с Ozon, Wildberries, сайтов конкурентов. Конкурент снизил цену на ходовую позицию — узнаёте через два часа, а не через две недели.
  • Агрегация поставщиков — пять прайсов в разных форматах (CSV с CP1251, XML в CommerceML, Excel с объединёнными ячейками) превращаются в единый каталог с общей системой свойств инфоблока.
  • Обогащение карточек — подтягиваем характеристики, инструкции, 3D-модели с сайтов производителей. Без этого карточка товара — пустышка для SEO.
  • Обновление ассортимента — товары, пропавшие из фида поставщика, деактивируются через CIBlockElement::Update($ID, ['ACTIVE' => 'N']). Новые — создаются. Каталог синхронизирован.

Какие инструменты используем в разработке парсеров?

Статические сайты — PHP (Goutte, Symfony DomCrawler) или Python (Scrapy, lxml). Скорость: 50–100 страниц/сек. Хватает для каталогов без JS-рендеринга.

SPA и динамические сайты — Puppeteer или Playwright. Бесконечный скролл, AJAX-фильтры, lazy-load картинок — headless-браузер всё это обработает. Скорость падает до 1–10 страниц/сек, но альтернативы нет: данные существуют только после выполнения JavaScript.

Файлы поставщиков:

  • Excel (XLS, XLSX) — PhpSpreadsheet. Осторожно с объединёнными ячейками и формулами — они ломают автоматический маппинг.
  • CSV — fgetcsv() с правильной кодировкой. Поставщики любят CP1251, BOM в UTF-8 и точку с запятой вместо запятой. Всё это нужно детектить и обрабатывать.
  • XML/YML — XMLReader для больших файлов, SimpleXML для фидов до 50 МБ.
  • CommerceML — стандартный формат обмена с 1С. Разбираем import.xml и offers.xml, маппим на структуру инфоблоков.

API — REST-эндпоинты поставщиков, API маркетплейсов (Ozon Seller API, Wildberries API). Работаем в рамках rate limits, обрабатываем пагинацию.

Как устроен пайплайн автонаполнения?

Четыре этапа. Каждый может сломаться по-своему.

  1. Сбор. Парсер обходит источники по cron-расписанию. Сырые данные пишем в промежуточную таблицу — не сразу в b_iblock_element. Логируем всё: сколько страниц обошли, сколько элементов распарсили, где получили 403 или timeout. Без логов отладка парсера — гадание на кофейной гуще.

  2. Нормализация. Здесь основная работа:

    • Очистка HTML-тегов, лишних пробелов, Unicode-мусора
    • Единицы измерения: «мм» → «мм», «millimeters» → «мм», «миллиметр» → «мм»
    • Маппинг категорий поставщика → разделы инфоблока Битрикс. У одного поставщика «Ноутбуки», у другого «Ноутбуки и планшеты», у третьего «Laptops» — всё в одну секцию
    • Дедупликация по артикулу, EAN/GTIN. Один товар от трёх поставщиков не должен появиться трижды
  3. Загрузка в Битрикс. Через CIBlockElement::Add() для новых элементов, CIBlockElement::Update() для существующих. Изображения: скачиваем, ресайзим через CFile::ResizeImageGet(), конвертируем в WebP. Свойства — через CIBlockElement::SetPropertyValuesEx(). SEO-мета через \Bitrix\Iblock\InheritedProperty\ElementValues. ЧПУ генерируем из транслитерации названия.

  4. Обновление. Ключевой момент — не затереть ручные правки контент-менеджера. Обновляем только цену, остатки, активность. Описание и фото, доработанные вручную, помечаем флагом UF_MANUAL_EDIT в свойствах элемента и пропускаем при импорте. Товары, пропавшие из фида — деактивируем, но не удаляем.

Почему мониторинг цен конкурентов необходим?

Отдельная подсистема со своей спецификой:

Параметр Как устроено
Частота От раза в день до каждых 2 часов — зависит от волатильности рынка
Сопоставление По артикулу, EAN, нечёткое сравнение названий через расстояние Левенштейна
Хранение Своя таблица vendor_price_monitor с историей, не инфоблоки
Алерты Telegram/email при отклонении цены конкурента более чем на X%
Автоправила «Держать цену на 3% ниже минимальной среди конкурентов, но не ниже себестоимости + 15%»

Результат — дашборд: ваш товар vs конкуренты, история цен, тренды. Менеджер видит, где можно поднять цену без потери позиции, а где нужно реагировать.

Модуль импорта CSV/XML: настройка под ваш формат

Для файлов от поставщиков — кастомный модуль с админкой:

  • Настраиваемый маппинг: «колонка B в файле → свойство BRAND инфоблока»
  • Автодетект кодировки (CP1251, UTF-8, UTF-16) через mb_detect_encoding() с проверкой
  • Загрузка изображений по URL с очередью — чтобы не забить канал
  • Инкрементальное обновление по хешу строки: изменилась строка — обновляем, нет — пропускаем
  • Cron-расписание, отчёт: создано 145, обновлено 892, ошибок 3 (с деталями)

Большие файлы: CSV обрабатываем батчами по 1000 строк через fgetcsv(), XML потоково через XMLReader, фоновое выполнение через очередь агентов Битрикс — никаких PHP-таймаутов.

Правовая сторона — что важно учесть

  • robots.txt — уважаем. Crawl-delay — соблюдаем.
  • Частота запросов — 1–2 в секунду, не больше. Не нужно DDoS-ить чужой сайт.
  • Контент производителей — используем. Уникальные авторские тексты — не копируем.
  • Персональные данные — не собираем.

Что входит в разработку парсера под ключ?

Составляющая Описание
Прототип Парсер 1–2 источников за 2–3 дня для оценки качества данных
Основной парсер Полный сбор данных с одного источника (статический/динамический)
Модуль импорта в Битрикс Нормализация, загрузка, обновление, админка маппинга
Мониторинг цен Если требуется – система сбора и алертов (до 10 конкурентов)
Документация Описание архитектуры, инструкция по обновлению селекторов
Поддержка Гарантия 3 месяца на бесперебойную работу, правка при изменении вёрстки донора

Как мы работаем и сроки

  1. Прототип — парсер для 1–2 источников за 2–3 дня. Оцениваем качество данных, подводные камни (защита Cloudflare, капча, динамическая подгрузка).
  2. Разработка — полный пайплайн: парсер → нормализация → импорт в Битрикс → админка для управления.
  3. Тестирование — прогоняем на полном объёме каталога, проверяем edge-кейсы (пустые поля, кривой HTML, битые картинки).
  4. Запуск — настраиваем cron, мониторинг ошибок через Telegram-бот.
  5. Поддержка — конкурент переделал вёрстку? Обновляем CSS-селекторы в парсере.
Задача Сроки
Парсер одного сайта (статический HTML) 3–5 дней
Парсер SPA-сайта (Puppeteer/Playwright, обход защиты) 1–2 недели
Модуль импорта CSV/XML в Битрикс 1–2 недели
Система мониторинга цен (5–10 конкурентов) 2–4 недели
Комплексная система автонаполнения 4–8 недель
Поддержка и адаптация парсеров по подписке

Свяжитесь для оценки вашего проекта — мы предложим оптимальное решение под ваш бюджет. Гарантируем стабильную работу парсеров и полную поддержку в течение всего срока использования.