bitrix
Правильное создание товара в инфоблоке + миграция цен из свойств элементов в цены типа "торгового каталога"
При создании товара через API обязательно нужно указывать коэффициент
if (\Bitrix\Main\Loader::includeModule('catalog')) { $useStoreControl = (string)\Bitrix\Main\Config\Option::get('catalog', 'default_use_store_control') === 'Y'; CModule::IncludeModule('iblock'); $IBLOCK_ID = 129; $arSelect = Array("ID", "IBLOCK_ID", "NAME", "DATE_ACTIVE_FROM","PROPERTY_*"); $arFilter = Array("IBLOCK_ID"=>$IBLOCK_ID, "ACTIVE_DATE"=>"Y", //"SECTION_CODE" => "elektrobezopasnost", ); $res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>9999), $arSelect); while($ob = $res->GetNextElement()){ $arFields = $ob->GetFields(); $arProps = $ob->GetProperties(); // pre2($arFields['NAME']); $id = $arFields['ID']; if ($id > 0)//$id > 0 { $fields = array( 'ID' => $id, 'QUANTITY_TRACE' => \Bitrix\Catalog\ProductTable::STATUS_DEFAULT, 'CAN_BUY_ZERO' => \Bitrix\Catalog\ProductTable::STATUS_DEFAULT, 'WEIGHT' => 0, 'MEASURE' => 5//id еденицы измерения - Штука ); if (!$useStoreControl) { // выключен складской учет $fields['QUANTITY'] = 3000; } // создание товара $result = CCatalogProduct::Add($fields); if ($result) { // добавление коэффициента единицы измерения товара $ratioResult = \Bitrix\Catalog\MeasureRatioTable::add(array( 'PRODUCT_ID' => $id, 'RATIO' => 5//коэффициент_единицы_измерения - Штука ) ); if (!$ratioResult->isSuccess()) { echo 'Ошибка создания коэффициента
'.implode('
', $ratioResult->getErrorMessages()); } // добавление цены $priceId = CPrice::Add(array( 'PRODUCT_ID' => $id, 'CATALOG_GROUP_ID' => 1,//ID_типа_цены - base_cost 'PRICE' => ($arProps['PR_PRICE']['VALUE'] / 100) * 90, 'CURRENCY' => 'RUB' ) ); if (!$priceId) { if ($ex = $APPLICATION->GetException()) echo 'Ошибка создания цены: '.$ex->GetString(); else echo 'Неизвестная ошибка при создании цены'; unset($ex); } } else { if ($ex = $APPLICATION->GetException()) echo 'Ошибка создания товара: '.$ex->GetString(); else echo 'Неизвестная ошибка при создании товара'; unset($ex); } } } }
Афоризм дня:
Луций Анней Сенека (Младший) (598)
Leave a reply