Спасибо!
[QUOTE] Дмитрий Шкуркин пишет:
Вы всегда можете получить позиции заказа зная ID заказа... т.е. если это обновление заказа (статуса например) то врядли вам будут переданы параметры о товарах там содержащихся.
[/QUOTE]Дмитрий, я так ведь и делаю :) Передаю в фильтр номер заказа и получаю массив корзин.
[QUOTE]Dmitry Sirotin пишет:
В данном цикле лишний вызов GetByID. По идее в $ar_baskets уже содержатся параметры позиции в корзине.
[/QUOTE]+1. Переписал на работу с массивом. Работает также.
Вот так выглядит конечный код:
[CODE]//событие по изменению заказа
AddEventHandler("sale", "OnOrderAdd", "onOrderCreateHandler");
function onOrderCreateHandler($ID, $arFields){
//временные переменные
$result = "Внимание, был создан заказ:\n\n";
//получить сущность заказа по ID
$arOrder = CSaleOrder::GetByID($ID);
//переменные заказа
$result .= "НОМЕР ЗАКАЗА:\t".$ID."; СТАТУС ЗАКАЗА:\t".$arFields['STATUS_ID']."\n";
//список корзин
$filteredBaskets = CSaleBasket::GetList(array('ID' => 'DESC'), array("ORDER_ID" => $ID));
while ($basket = $filteredBaskets->Fetch())
{
$result .= $basket["PRODUCT_ID"]." - ".$basket["NAME"]." - ".$basket["PRICE"]." - ".$basket["QUANTITY"]."\n";
}
sendEmail("----" , $result);
}
[/CODE]Т.е. при создании заказа, отправляю на почту информацию по номеру и товарное наполнение. Самое интересное, что а) на тестовой инсталляции это работает, б) на боевой инсталляции строки не приходят, ID и статус приходит - строки нет... На боевой инсталляции, если использовать OnSaleStatusOrder, то строки приходят...
[QUOTE] Дмитрий Шкуркин пишет:
Вы всегда можете получить позиции заказа зная ID заказа... т.е. если это обновление заказа (статуса например) то врядли вам будут переданы параметры о товарах там содержащихся.
[/QUOTE]Дмитрий, я так ведь и делаю :) Передаю в фильтр номер заказа и получаю массив корзин.
[QUOTE]Dmitry Sirotin пишет:
В данном цикле лишний вызов GetByID. По идее в $ar_baskets уже содержатся параметры позиции в корзине.
[/QUOTE]+1. Переписал на работу с массивом. Работает также.
Вот так выглядит конечный код:
[CODE]//событие по изменению заказа
AddEventHandler("sale", "OnOrderAdd", "onOrderCreateHandler");
function onOrderCreateHandler($ID, $arFields){
//временные переменные
$result = "Внимание, был создан заказ:\n\n";
//получить сущность заказа по ID
$arOrder = CSaleOrder::GetByID($ID);
//переменные заказа
$result .= "НОМЕР ЗАКАЗА:\t".$ID."; СТАТУС ЗАКАЗА:\t".$arFields['STATUS_ID']."\n";
//список корзин
$filteredBaskets = CSaleBasket::GetList(array('ID' => 'DESC'), array("ORDER_ID" => $ID));
while ($basket = $filteredBaskets->Fetch())
{
$result .= $basket["PRODUCT_ID"]." - ".$basket["NAME"]." - ".$basket["PRICE"]." - ".$basket["QUANTITY"]."\n";
}
sendEmail("----" , $result);
}
[/CODE]Т.е. при создании заказа, отправляю на почту информацию по номеру и товарное наполнение. Самое интересное, что а) на тестовой инсталляции это работает, б) на боевой инсталляции строки не приходят, ID и статус приходит - строки нет... На боевой инсталляции, если использовать OnSaleStatusOrder, то строки приходят...