Задать вопрос
@inviziblll

Почему событие OnSaleOrderSaved отрабатывает несколько раз?

Сделал обработчик на событие OnSaleOrderSaved и обратил внимание, что событие это срабатывает у меня три раза после оформления заказа, хотя наверное должно сработать только один раз.

Код моего обработчика события OnSaleOrderSaved

use Bitrix\Main;
use Bitrix\Main\EventManager;
use Bitrix\Main\Loader;
use Bitrix\Main\Event;
use Bitrix\Sale\Order;
use Bitrix\Main\Entity;
global $USER;

$eventManager = EventManager::getInstance();


// ЗАКАЗ
// при создании заказа
$eventManager->addEventHandler(
    "sale", 
    "OnSaleOrderSaved", 
    "onSaleOrderSaved"
);

function onSaleOrderSaved(Bitrix\Main\Event $event){
	$order = $event->getParameter("ENTITY");
	setLog('OnSaleOrderSaved'); // записываем в файл что обработчик был вызван
}

// запись в файл логов
function setLog($arFields){
    file_put_contents($_SERVER['DOCUMENT_ROOT'].'/log_iblock_setlog.txt', serialize($arFields)."\r\n", FILE_APPEND);
}


Когда я оформляю заказ то функция setLog вызывается три раза и в файле создается три записи хотя должна создаваться только одна. В чем может быть причина? Или так и должно быть OnSaleOrderSaved минимум три раза всегда срабатывает?
  • Вопрос задан
  • 2851 просмотр
Подписаться 1 Средний Комментировать
Решения вопроса 1
@ggrachdev
Возможно это связано с тем, что заказ имеет несколько статусов. Вот ты создал заказ - там один статус, прошла оплата - становится другой статус (т.е нужно пересохранить его), поставился статус - оплата выполнена - срабатывает автоматизация процессов и статус ставится выполнен - еще раз пересохранение идет
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы