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

Захват событий

Блок «Захват событий» решает, когда карточка попадает в очередь генерации сама, без вашей команды. Например: менеджер или импорт из 1С создал товар с названием и артикулом — а описание и мета-теги дописываются автоматически.

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

Карточка может попасть в очередь двумя путями:

  • вручную — массово по фильтру или точечно с дашборда;
  • автоматически — по событиям создания и изменения элемента, которые настраиваются здесь.
Захват сам ничего не отбирает

Элемент попадает в очередь, только если проходит фильтр профиля. Всё, что фильтру не соответствует, в очередь не встаёт, даже при включённом захвате.

Настройки блока​

НастройкаЧто делаетПо умолчанию
Ставить в очередь при созданииНовый элемент в выбранном инфоблоке, подходящий под фильтр, автоматически встаёт в очередьВыключено
Ставить в очередь при обновленииСохранённый элемент, подходящий под фильтр, встаёт в очередь — если по нему ещё нет успешной генерации в этом профилеВыключено

Ставить в очередь при создании​

Самый безопасный режим. Элемент создаётся один раз, поэтому и задача на него ставится один раз: «появился новый подходящий товар → одна задача в очередь».

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

Ставить в очередь при обновлении​

Срабатывает на сохранение подходящего элемента — руками контент-менеджера, импортом, другим модулем, — но только если по этому элементу ещё нет успешной генерации в профиле. Уже обработанная карточка при следующих правках повторно в очередь не встаёт, поэтому лишних расходов и перезаписи вычитанного текста не будет.

Когда включать. Если карточки появляются в несколько приёмов: например, импорт сначала создаёт пустой товар, а описание и свойства дописывает позже. Захват при создании сработает на пустую карточку слишком рано, а захват при обновлении подхватит её, когда данные появятся. Для полного контроля над моментом запуска используйте свойство-флаг (см. сценарий ниже).

Как перегенерировать уже обработанную карточку

Захват при обновлении её не подхватит. Откройте товар на странице «Элементы» и нажмите «Перезапустить» — или отметьте несколько товаров и перезапустите их пачкой.

Запись результата самим модулем тоже является изменением карточки, но цикла «сгенерировал → сохранил → снова сгенерировал» не возникает.

Как очередь разбирается дальше​

Постановка в очередь не запускает генерацию мгновенно. Очередь каждого профиля разбирает его фоновый агент Битрикс: он запускается примерно раз в минуту и берёт в работу несколько элементов за раз. Сохранение карточки при этом не замедляется — генерация идёт в фоне, отдельно от сохранения.

Если профиль выключен, агент очередь не разбирает: задачи дождутся включения профиля.

Агенты на cron

Фоновая обработка очереди зависит от агентов Битрикс. Чтобы очередь не стояла, когда на сайте нет посетителей, агенты должны работать по cron — эту настройку делает администратор сервера. См. Пошаговая настройка модуля.

Сценарий «Статус генерации»​

Рекомендуемый способ безопасно использовать захват при обновлении. Идея — не ловить любое редактирование, а дать себе явный переключатель: карточка уходит в генерацию ровно тогда, когда вы этого захотели.

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

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

Какой режим выбрать​

СитуацияЧто включить
Новые товары должны получать описание сами, правки руками — не трогатьТолько «при создании»
Карточки приходят из 1С«При создании»; если импорт ещё и обновляет карточки — не включайте «при обновлении» без флага
Хотите запускать генерацию из карточки по готовности«При создании» + «при обновлении» + фильтр по «Статусу генерации»
Нужно обработать весь существующий каталогЗахват не нужен: поставьте записи в очередь массово с дашборда
Короткое правило

В большинстве случаев достаточно одного захвата при создании. Захват обновления включайте, только когда редактирование действительно должно перезапускать генерацию, — и лучше через сценарий со «Статусом генерации».

Источник данных и захват настроены — переходите к конвейеру и описывайте, что и куда генерировать.