Задать вопрос
@Cyber-Pavel

Как при создание заказа в битрикс 1с выводить покупателя в заказах?

Добрый день. Я написал следующий код. Заказ создается, но в заказах, где поле "Покупатель"- нет информации. Как это сделать. Буду рад любой помощи!

<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$_POST['radio']=1;
$basket = CSaleBasket::GetList(
    array("NAME"=>"ASC", "ID"=>"ASC"),
    array("FUSER_ID" => CSaleBasket::GetBasketUserID(),"LID" => SITE_ID, "ORDER_ID" => "NULL"),
    false,
    false,
    array()
);
//Дальше пишем каждый товар из корзины в массив products
while($elem = $basket->getNext()){
    $products[] = array(
        'PRODUCT_ID' => $elem['ID'], 
        'NAME'       => $elem['NAME'], 
        'PRICE'      => $elem['PRICE'], 
        'CURRENCY'   => 'RUB', 
        'QUANTITY'   => $elem['QUANTITY']
    );
}


$basket = Bitrix\Sale\Basket::create(1);
foreach ($products as $product){
    $item = $basket->createItem("catalog", $product["PRODUCT_ID"]);
    unset($product["PRODUCT_ID"]);
    $item->setFields($product);
}
$order = Bitrix\Sale\Order::create(1, CSaleBasket::GetBasketUserID());
$order->setPersonTypeId(1);
$order->setBasket($basket);
$shipmentCollection = $order->getShipmentCollection();
$shipment = $shipmentCollection->createItem(
    Bitrix\Sale\Delivery\Services\Manager::getObjectById($_POST['radio'])
);
$shipmentItemCollection = $shipment->getShipmentItemCollection();
foreach($basket as $basketItem){
    $item = $shipmentItemCollection->createItem($basketItem);
    $item->setQuantity($basketItem->getQuantity());
}
//Пользовательские поля из POST-запроса
$propertyCollection = $order->getPropertyCollection();
foreach($propertyCollection as $propertyItem){
print_r($propertyItem->getField("NAME"));
}
$paymentCollection = $order->getPaymentCollection();
$payment = $paymentCollection->createItem(
    Bitrix\Sale\PaySystem\Manager::getObjectById(1)
);
$payment->setField("SUM", $order->getPrice());
$payment->setField("CURRENCY", $order->getCurrency());
$result = $order->save();
if(!$result->isSuccess()){
    $result->getErrors();
}
CSaleBasket::DeleteAll(CSaleBasket::GetBasketUserID(), False);
?>
  • Вопрос задан
  • 42 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@itauditmedia
странный код конечно по работе с заказом
но вот как-то так
//Пользовательские поля из POST-запроса
//допустим у вас есть имя и телефон и есть в заказе 2 свойства
// Устанавливаем свойства
$propertyCollection = $order->getPropertyCollection();
$phoneProp = $propertyCollection->getPhone();
$phoneProp->setValue($_POST'phone']);
$nameProp = $propertyCollection->getPayerName();
$nameProp->setValue($_POST'[name']);

предварительно в админке надо завести все нужные свойства для заказа для нужного типа плательщика
вот тут
66e357ed66898882652665.png
и отметить в "имени" или ФИО что
66e358e3bcdcd286961885.png
ну и в телефоне соответсвенно
66e359547ca88768128684.png

вот тут замечательное описание по работе с заказом
https://mrcappuccino.ru/blog/post/work-with-order-...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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