Автонаполнение описаний товаров из внешних источников 1С-Битрикс
Задача автонаполнения описаний отличается от разового парсинга: система должна работать в фоне, обрабатывать новые товары по мере их появления в каталоге и не затирать тексты, отредактированные вручную. Это требует правильной архитектуры триггеров и приоритетов, а не просто скрипта «пройтись по всем товарам».
Триггеры для заполнения описаний
Автонаполнение запускается в трёх ситуациях:
При добавлении нового товара — обработчик события OnAfterIBlockElementAdd. Товар только создан, поля пустые — система идёт за описанием в источники.
По расписанию для незаполненных — cron-задача находит элементы с пустым DETAIL_TEXT и ставит их в очередь.
При ручном запросе — менеджер в административной части нажимает «Получить описание» для конкретного товара.
Цепочка источников с fallback
Описание ищется последовательно: если первый источник не дал результата — пробуем следующий:
- API производителя по
VENDOR_CODE - База Icecat по EAN/штрихкоду
- Парсинг сайта производителя
- AI-генерация по названию и характеристикам (крайний вариант)
Каждый источник реализует DescriptionProviderInterface::getDescription(string $sku): ?string. Оркестратор перебирает провайдеры в порядке приоритета.
Защита ручных правок
Ключевой элемент — свойство DESCRIPTION_LOCKED (тип S, значения Y/N). Когда менеджер редактирует описание в административной части вручную:
- Устанавливается
DESCRIPTION_LOCKED = Y - Система автонаполнения пропускает этот элемент
Устанавливаем флаг через обработчик OnBeforeIBlockElementUpdate — проверяем, изменился ли DETAIL_TEXT относительно предыдущего значения. Если да и изменение пришло не от системы автонаполнения — ставим флаг.
Очередь и приоритизация
Не все товары одинаково важны. Приоритет в очереди:
- Высокий: товары с активными заказами или просмотрами (данные из
b_sale_order_item,b_stat_session) - Средний: новые товары без описания
- Низкий: старые товары, не просматривавшиеся более 30 дней
Реализуется через поле priority в таблице очереди, воркер выбирает задачи ORDER BY priority DESC.
Таймлайн работ
| Этап | Срок |
|---|---|
| Архитектура провайдеров, интерфейсы | 4–8 часов |
| Разработка провайдеров (1–2 дня каждый) | 2–6 дней |
| Триггеры, очередь, приоритизация | 1–2 дня |
| Защита ручных правок | 4–6 часов |
| Административный интерфейс управления | 1 день |
Итого: 6–12 рабочих дней в зависимости от числа источников.







