Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Обработчик события OnOrderAdd

00 голосов
5
Всем привет. Пытаюсь реализовать добавление товаров заказа в собственно-созданную таблицу при возникновении события OnOrderAdd, которое вызывается после добавления заказа.

В файле init.php подключаю обработчик события:
AddEventHandler("sale", "OnOrderAdd", "Top20AddUpdate");

В функции хочу сделать запрос
function Top20AddUpdate($id, $arFields) {
global $DB;
$query = $DB->Query(......................
}

Этот запрос не срабатывает. Если в phpmyadmin сделать его - он рабочий, ошибки нет. Он не получает $query, такое ощущение, что global $DB он тут не видит. Подскажите, что делать? Что неправильно делаю?
спросил 06 Дек, 13 от JIauJIa (280 баллов)

5 Ответы

00 голосов
у вас запрос не срабатывает или не срабатывает обработчик события?
вы проверяли сработку самого обработчика?
ответил 06 Фев, 14 от jenia (1,500 баллов)
00 голосов
Сам обработчик срабатывает. Я проверял, в теле функции обработчика написал функцию mail - письма приходят. Не срабатывает именно запрос. При чем повторяю, запрос правильный, проверял напрямую в phpmyadmin.

В письме, которое из обработчика отправляю - сообщением ставлю id заказа, он приходит, например 573. Этот id в запросе подставляю в phpmyadmin, тестирую, данные получаю, все нормально. А вот в самом обработчике не могу получить.

Пробую такую конструкцию:

Код
$query = $DB->Query("SELECT bsb.PRODUCT_ID, bsb.NAME, bsb.QUANTITY FR OM b_sale_basket bsb, b_sale_order bso 
                WHERE bso.ID=bsb.ORDER_ID AND bso.CANCELED='N' AND bso.ID=".$id);
    $result = $query->Fetch();
    mail(мой_email, 'Test', $result["PRODUCT_ID"]);
Не работает, пустое письмо.
ответил 26 Май, 14 от JIauJIa (280 баллов)
00 голосов
Вообще, если мы в обработчике события подключаем global $DB, можно работать с функциями Query, Update, Insert без проблем?
ответил 22 Сен, 14 от JIauJIa (280 баллов)
00 голосов
При оформлении заказа сначала создается заказ, срабатывает событие и только потом товары перемещаются в корзину (CSaleBasket::orderBasket).
Вы можете использовать события, которые срабатывают при оформлении заказа уже после добавления заказа, например OnSaleComponentOrderOneStepComplete (http://dev.1c-bitrix.ru/api_help/sale/sale_events.php)
ответил 27 Янв, 15 от BlackEva (820 баллов)
00 голосов
Сейчас попробую
ответил 10 Май, 15 от JIauJIa (280 баллов)

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

0 голосов
7 ответов
0 голосов
4 ответов
0 голосов
5 ответов
0 голосов
1 ответ