Автонаповнення описів товарів із зовнішніх джерел 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 робочих днів залежно від кількості джерел.







