Перейти к основному содержимому

Автогенерация для новых товаров

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

Сложность: средне. Шагов: 1–2 (любой готовый конвейер).

Короткая версия этого рецепта — последний шаг пошаговой настройки: «Новые товары — автоматически». Здесь — подробности, второй вариант со свойством-флагом и разбор ошибок.

Что получится​

  1. Менеджер сохраняет новый товар «Стиральная машина AquaLine 7» без описания.
  2. Модуль сам ставит его в очередь, и при следующем запуске агента — обычно в пределах минуты-двух — заполняет «Детальное описание» и «Анонс».
  3. Если менеджер уже вписал описание сам, модуль его не перезапишет.

Главное правило: «без описания» — это режим записи, а не фильтр​

Хочется сделать фильтр «Детальное описание пусто». Так делать не нужно, и вот почему:

  • страница «Элементы» и плитки дашборда показывают только записи, которые сейчас попадают в фильтр;
  • как только модуль напишет описание, товар перестанет быть «пустым», выпадет из фильтра и исчезнет из списка — вы не увидите ни статус, ни результат;
  • к тому же в фильтре источника нет условия «пусто / заполнено».

Правильная связка:

ЗадачаЧем решается
Какие товары вообще обрабатыватьФильтр по стабильному признаку: раздел каталога, тип товара, служебный флаг
Не трогать готовые описанияРежим записи «Не трогать» в блоке «Запись результата» каждого шага
Запускать генерацию для новых товаров«Захват событий» → «Ставить в очередь при создании»

С режимом «Не трогать» модуль запишет ответ, только если поле пустое. Товар с готовым описанием останется как был.

Вариант 1. Простой: генерация при создании​

Настройки​

  1. Профиль «Элемент инфоблока» с каталогом — см. Источник данных.
  2. Фильтр — например, только разделы с бытовой техникой. Без критериев под фильтр попадёт весь инфоблок.
  3. На странице «Основное», вкладка «Захват событий»:
    • «Ставить в очередь при создании» — включить;
    • «Ставить в очередь при обновлении» — оставить выключенным.

Блок «Захват событий»: «Ставить в очередь при создании» — включено, «Ставить в очередь при обновлении» — выключено

  1. Агент очереди установлен — на «Дашборде», карточка «Агент очереди», статус «Активен». Если агента нет, нажмите там «Установить». Без него очередь не движется.

Конвейер​

Возьмите конвейер из рецепта «Описание товара» или из пошаговой настройки — анонс и SEO-поля — и проверьте в каждом шаге:

НастройкаЗначение
Если в поле уже что-то естьНе трогать
Проверять вручную перед записьюна первые недели — включить, потом можно снять

Готово: каждый новый товар, подходящий под фильтр, один раз попадёт в очередь. Редактирование карточки после этого генерацию не перезапускает.

Вариант 2. По команде: свойство «Статус генерации»​

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

  1. В инфоблоке создайте свойство-список «Статус генерации» со значениями «Не генерировать», «В очередь», «Успешно».
  2. В фильтре добавьте критерий: «Статус генерации» равно «В очередь».
  3. В «Захвате событий» включите оба переключателя — при создании и при обновлении.
  4. Новый товар создавайте со статусом «Не генерировать» — модуль его не трогает, пока вы заполняете карточку.
  5. Когда карточка готова, переключите статус на «В очередь» и сохраните — товар уйдёт в генерацию и появится на странице «Элементы».
  6. Проверив результат, переведите статус в «Успешно». Товар покинет фильтр — но по вашему решению.

Этот флаг меняете вы, а не модуль, поэтому правило стабильного фильтра не нарушается. Подробнее — Захват событий.

Когда срабатывает захват при обновлении

При сохранении товар встаёт в очередь, только если он проходит фильтр и по нему ещё нет успешной генерации в этом профиле. Уже обработанный товар от правки цены или импорта остатков в очередь заново не попадёт. Чтобы перегенерировать такой товар, откройте его на странице «Элементы» и нажмите «Перезапустить».

Захват при обновлении без флага

Без свойства-флага «Ставить в очередь при обновлении» отправит в очередь каждый ещё не обработанный товар под фильтром при любом его сохранении — руками, импортом, другим модулем. Если в каталоге тысячи старых товаров, одна выгрузка из 1С поставит их все. Включайте этот режим вместе с флагом или когда так и задумано.

Как протестировать​

  1. Сначала отладьте сам конвейер на странице «Тестирование» на уже существующем товаре.
  2. Создайте тестовый товар в разделе, который попадает в фильтр, и сохраните.
  3. Откройте страницу «Элементы» и нажмите «Обновить» — товар должен появиться в статусе «В очереди» или «В работе», а затем «Готово». Если в шагах включена ручная проверка, он попадёт и в фильтр «Требует проверки».
  4. Создайте второй товар с уже заполненным описанием — после обработки его описание должно остаться прежним.
  5. Удалите тестовые товары, когда закончите.

Сколько стоит​

Ровно столько, сколько стоит выбранный конвейер на один товар, — и только для новых товаров. Режим «Не трогать» не экономит на запросе: модель всё равно отвечает, просто ответ не записывается в заполненное поле. Если в каталоге много товаров с готовыми описаниями, лучше сузить фильтр по разделам или использовать вариант 2 со статусом.

Типичные ошибки​

СимптомПричина и решение
Новый товар не появился на странице «Элементы»Товар не проходит фильтр или выключен «Ставить в очередь при создании». Проверьте раздел товара и критерии фильтра
Товар в очереди, но не обрабатываетсяАгент очереди не установлен или агенты Битрикса работают «на хитах». Передайте администратору — см. Очередь застряла
Товар пропал из списка сразу после генерацииВ фильтре стоит условие по полю, которое заполнил модуль. Фильтруйте по стабильным признакам
После импорта в очередь встали старые товарыВключён «Ставить в очередь при обновлении», а старые товары ещё ни разу не обрабатывались. Выключите захват при обновлении или используйте свойство «Статус генерации»
Перезаписались описания, сделанные вручнуюВ шаге режим «Заменить». Поставьте «Не трогать»; записанное можно вернуть кнопкой «Откатить» в карточке товара — см. Проверка и откат результата