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, ]);