Господа, у меня есть свойство заказа, которое должно автоматически заполняться, в зависимости от выбранных товаров. Все вроде бы ничего, вот только что бы добраться до свойства заказа, мне нужен сам ИД заказа, а его по факту нет, т.к. появляется только после того, как заказ уже создан. Помогите пож-а.
Не то что бы я все это время пробовал, но попыток было не мало...Никак не получается выбрать все ID товаров, находящихся в корзине. Дергал событие OnSaleComponentOrderOneStepComplete. Сперва пробовал:
Код
define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/au-au-au.txt");
AddEventHandler("sale", "OnSaleComponentOrderOneStepComplete", "OnSaleComponentOrderOneStepCompleteHandler"); // Добавление параметров заказа (закупочная цена, а так же базовая.)
function OnSaleComponentOrderOneStepCompleteHandler($ID, $arOrder){
$dbBasketItems = CSaleBasket::GetList(
array(
"NAME" => "ASC",
"ID" => "ASC"
),
array(
"ORDER_ID" => false,
),
false,
false,
array("PRODUCT_ID")
while ($arIt = $dbBasketItems->Fetch()) // клеим ID и цену всех товаров в корзине
{
AddMessage2Log('$arIt = '.print_r($arIt, true),'');
...
Вот хрен знает почему, но $arIt у меня всегда равен 4637... Пробовал еще вставлять в обработчик код из документации: Разумеется в конце ставил не print_r($arBasketItems); , а AddMessage2Log('$arBasketItems= '.print_r($arBasketItems, true),''); Вообще ничего не выводит, такое ощущение что событие перестает обрабатываться, но если я прописываю код в шаблоне sale.order.ajax, то выводится отличная информация. Хэлп.
Артем Хлебус написал: AddEventHandler("sale", "OnSaleComponentOrderOneStepComplete", "OnSaleComponentOrderOneStepCompleteHandler"); // Добавление параметров заказа (закупочная цена, а так же базовая.)
Если хотите использовать событие OnSaleComponentOrderOneStepComplete, то учитывайте, что в момент вызова его обработчиков заказ уже создан, а корзина пустая. Поэтому для CSaleBasket::GetList укажите ORDER_ID = $ID.
Цитата
Вызывается в компоненте bitrix:sale.order.ajax после создания заказа и всех его параметров