Сделал обработчик на событие 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 минимум три раза всегда срабатывает?