Битрикс24 API: добавление и обновление товаров в сделке

Битрикс24 API: добавление и обновление товаров в сделке
11.05.2020
Во время доработки обмена с 1с, когда требовалось выгружать из 1с контрагентов в компании, а заказы и реализации в сделки, одной из задач бьло добавлять товары в сделку и обновлять товары в сделке.

Естественно, товары должны быть выгружены из 1с. И тогда при получении реализаций из 1с, мы делаем запрос к инфоблоку товаров с фильтром по внешнему коду, далее составляем массив для добавления в сделку и одной функцией обновляем товары в сделке.
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,
	]);


Возврат к списку


Материалы по теме: