UPD: в скрипте используются старые методы работы с заказами, для тех у кого Битрикс новых редакций рекомендую в работе с заказами использовать D7!
Всем привет!
На одном из проектов необходимо было реализовать добавление заказов в БД используя API Битрикса.
Для этого решил использовались метод CSaleOrder::DoSaveOrder , не описанный пока в официальной документации битрикса, в связи с чем возникли некоторые сложности.
А именно, не было понятно, как без дополнительных методов CSaleOrderPropsValue::Add сразу же добавлять в заказ все дополнительные свойства.
Путем проб и ошибок, а также изучив исходники метода понял, что при формировании массива для DoSaveOrder , все доп.свойства нужно помещать массив формата "ID свойства заказа" => "значение" и передавать в переменную ORDER_PROP.
Пример кода:
$arFields = array( "LID" => SITE_ID, "PERSON_TYPE_ID" => $PERSON_TYPE_ID, "PAYED" => "N", "CANCELED" => "N", "STATUS_ID" => "N", "PRICE" => $summ, "CURRENCY" => "RUB", "USER_ID" => (int)$USER->GetID(), "PAY_SYSTEM_ID" => $PAY_SYSTEM_ID, "DELIVERY_ID" => $DELIVERY_ID, "USER_DESCRIPTION" => $post["SITE"], "ORDER_PROP" => array( 85 => $post["PHONE"], 87 => $post["FIO"], 91 => $post["ADDRESS"], 109 => $post_data["CITY"], ), ); $orderID = (int)CSaleOrder::DoSaveOrder($arOrderDat, $arFields, 0, $arErrors);
Надеюсь, что кому то облегчил поиски решения:)