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

Частые вопросы

Сработает ли сценарий на заказах, созданных до его включения?​

Зависит от события сценария:

  • Заказ сохранён — нет, сценарий проверяет заказ только при его следующем сохранении. Старые заказы, которые никто не трогает, он не увидит.
  • По расписанию — да: агент перебирает существующие заказы в выбранных статусах, которые менялись за последние 30 дней (срок меняется в настройках расписания).

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

Срабатывают ли сценарии на заказах из обмена с 1С, API и других модулей?​

Да. Событие «Заказ сохранён» срабатывает при любом сохранении заказа: покупателем на сайте, менеджером в админке, обменом с 1С, агентом или кодом другого модуля.

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

Можно ли отменить изменения, которые сделал сценарий?​

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

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

Что будет, если сценарий упадёт с ошибкой или очередь остановится? Не потеряются ли заказы?​

Модуль разделяет три вида проблем и ведёт себя по-разному:

  • Магазин отказал в изменении — например, обработчик другого модуля запретил отмену. В журнале прогонов итог Ошибка с текстом Битрикса, заказ этим сценарием не изменён, остальные сценарии применяются без него. Повтора нет — с теми же данными результат был бы тем же. Исправьте причину и примените сценарий к заказу ещё раз. Подробно — в разделе Отказы интернет-магазина.
  • Сбой среды — недоступна база данных, блокировка, ошибка PHP. Проход откатывается целиком, заказ не меняется, а задача повторяется сама — всего до трёх попыток.
  • Массовые сбои. Если за час 100 и больше задач завершились ошибкой после всех повторов, срабатывает предохранитель: агент очереди останавливается, чтобы не плодить ошибки и не нагружать сайт. В окне агента очереди видно «остановлен предохранителем», а в Журнале действий — самые частые ошибки.

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

Заказы не попадают в очередь только в трёх случаях: модуль выключен кнопкой питания, в очереди уже 20 000 ждущих задач (агенты давно не работают), или сбой случился в сам момент постановки — об этом запись в Логах. Такие заказы обработайте запуском по заказам за нужный период. Подробно — в разделе Фоновая обработка и защиты модуля.

Почему изменения появились в заказе не сразу?​

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

Сценарии по расписанию срабатывают при проходе агента — по умолчанию раз в час.

Могут ли сценарии зациклиться и бесконечно менять заказ?​

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

Что будет со сценарием, если удалить статус, службу доставки или свойство заказа?​

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

Как сделать, чтобы на заказ срабатывал только один сценарий из нескольких?​

Расставьте сценарии в нужном порядке — они проверяются сверху вниз — и включите «Стоп после срабатывания» у тех, после которых остальные проверять не нужно. См. Порядок проверки.

Зачем нужны профили?​

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

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

У каждого профиля свои:

  • сценарии и их порядок;
  • настройки сценариев: тестовый режим, предел сохранений, срок хранения журнала;
  • агент очереди;
  • кнопка питания — профиль можно выключить, не трогая остальные.

Пример 1. Статусы и логистика. В профиле «Статусы» — цепочка жизненного цикла заказа: оплачен — в сборку, не оплачен за 3 дня — отменить. Наверху стоит исключение «заказы из 1С не трогаем» со «стопом». В профиле «Доставка» — правила выбора службы доставки по весу и товарам. Исключение для заказов из 1С не мешает подбирать им доставку, а логистику можно обкатать в тестовом режиме, пока статусы уже работают по-настоящему.

Пример 2. Новое правило рядом с работающими. Набор новых сценариев собирают в отдельном профиле с включённым тестовым режимом. Основной профиль продолжает работать, а по журналу видно, что сделали бы новые правила. Когда всё проверено, тестовый режим в новом профиле выключают.

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

Не давайте двум профилям менять одно и то же

Профили работают независимо и друг о друге не знают. Если один профиль ставит заказу статус «В сборке», а другой — «Ожидает проверки», они будут перетягивать заказ, пока не сработает защита от петель: её счётчик сохранений общий для заказа во всех профилях. Делите между профилями не только заказы, но и то, что сценарии в них меняют.

Сколько сценариев можно создать?​

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

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

Если сценариев много:

  • сужайте событие — «Только создание заказа» или «Если изменилось поле»: сценарий не будет проверяться на сохранениях, которые его не касаются;
  • указывайте сайты сценария, если правило нужно не везде;
  • в сценариях по расписанию выбирайте только нужные статусы;
  • объединяйте похожие правила в один сценарий с группами условий «ИЛИ»;
  • выключайте или удаляйте сценарии, которые больше не нужны.

Нагружает ли модуль сайт?​

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