Добрый день.
Сейчас пытаюсь сделать обработчик события, чтоб при создании нового заказа информация о нем записывалась в лог файл.
В файле bitrix/php_interface/init.php создаю обработчик события:
Далее создаю сам класс и в нем функцию:
Теперь подключаю модуль интернет-магазина (он нужен для получения сведений о товарах):
Теперь используя ID заказа получаю массив с данными о купленных товарах:
И вот тут возникает проблема. $dbOrders не получает массив полей с данными о товаре. Причем если вместо $id в массив $arFilter подставлять конкретные значения, то все срабатывает нормально, и данные о товарах записываются в массив $arOrders.
Пробовал писать (int) $id тоже не срабатывает.
При этом при записи в лог использую $id и значение записывается значит $id не пусто.
Помогите если кто знает что я делаю не так.
____________________________________________________________ _______________
Ошибка найдена.
Событие OnOrderAdd срабатывает до того как товарам в корзине будет присвоен идентификатор заказа. Поэтому при создании обьекта с данными о товарах он получается пустым.
Решение.
Использовал событие OnSaleComponentOrderComplete компонента bitrix:sale.order.full
Сейчас пытаюсь сделать обработчик события, чтоб при создании нового заказа информация о нем записывалась в лог файл.
В файле bitrix/php_interface/init.php создаю обработчик события:
Код |
---|
AddEventHandler("sale", "OnOrderAdd", array("orderAdd", "doFollowing")); |
Код |
---|
class orderAdd { function doFollowing($id, $arFields) { |
Код |
---|
if (CModule::IncludeModule("sale")){ |
Код |
---|
$arSelectFields = array("PRICE", "CURRENCY", "QUANTITY", "NAME"); $dbOrders = CSaleBasket::GetList(array("NAME" => "ASC"), array("ORDER_ID" => $id), false, false, $arSelectFields); while ($arOrder = $dbOrders->Fetch()) { $arOrders [] = $arOrder; } |
Пробовал писать (int) $id тоже не срабатывает.
При этом при записи в лог использую $id и значение записывается значит $id не пусто.
Помогите если кто знает что я делаю не так.
____________________________________________________________
Ошибка найдена.
Событие OnOrderAdd срабатывает до того как товарам в корзине будет присвоен идентификатор заказа. Поэтому при создании обьекта с данными о товарах он получается пустым.
Решение.
Использовал событие OnSaleComponentOrderComplete компонента bitrix:sale.order.full