foreach($arDocument["items"] as $k=>$items){
foreach($items as $productID=>$item){
if($item['TYPE'] <> "Услуга")){
$orderFields["BASKET_ITEMS"][$productID]=$item;
$arProductsXmlId[]=$productID;
}
}
}
$objResult = \CIBlockElement::GetList(array(), array('IBLOCK_ID' => 24,'=XML_ID' => $arProductsXmlId),false,false,array('IBLOCK_ID','ID',"XML_ID"));
$arProducts = array();
while($arElement = $objResult->GetNext()){
$arProducts[] = array(
'PRODUCT_ID' => $arElement['ID'],
'QUANTITY' => $orderFields["BASKET_ITEMS"][$arElement["XML_ID"]]['QUANTITY'],
'PRICE' => $orderFields["BASKET_ITEMS"][$arElement["XML_ID"]]['PRICE']
);
}
if($arProducts){
$otvet=CCrmProductRow::SaveRows('D', $arOrder["ORDER_ID"], $arProducts);
}
У другого клиента была интересная задача - создание товаров во время бизнес-процесса. Это осуществлялось через приложение. Но возникла проблема в установке ставки ндс в товар. и тут есть одна интересная особенность, что поле "ставка ндс" в товаре и в строке товара в сделке отличаются кодом. в товаре поле имеет код "VAT_ID" - и должно быть равно ID значения списка ставок, а в строке товара в сделке поле ставка НДС имеет код "TAX_RATE" и должно быть равно числу процентов ставки. Если добавление товаров происходит через приложение Битрикс24, то тут используются похожие функции:
$response = $api->send("crm.product.add", [
'fields' => [
'NAME' => $name,
'PRICE' => $pricePerOne,
'PREVIEW_PICTURE' => $previewPicture,
"VAT_ID"=>3,
"VAT_INCLUDED"=>"N",
],
]);
$productId = $response['result'];
$dealProductsRows[] = [
'PRODUCT_ID' => $productId,
'PRODUCT_NAME' => $name,
'PRICE' => $pricePerOne,
'PRICE_EXCLUSIVE' => $pricePerOne,
'QUANTITY' => $quantity,
"TAX_RATE"=>20,
"TAX_INCLUDED"=>"N",
];
}
$api->send("crm.deal.productrows.set", [
'id' => $dealId,
'rows' => $dealProductsRows,
]);