Bitrix api Как добавить торговых предложений к товару?

Суть, надо загрузить много товаров в битрикс, делаю это через api

добавляю элемент

// если иблок создан то добавим товар в торговое предложение
$productID = CCatalogProduct::add(array("ID" => $PRODUCT_ID,
//"PRICE" => $item['info']['price'],
"WEIGHT" => $item['info']['weight'],
"WIDTH" => $item['info']['width'],
"HEIGHT" => $item['info']['height'],
"LENGHT" => $item['info']['length'],
"QUANTITY" => 9999
//"QUANTITY" => $item['info'][''],
//"WEIGHT" =>$weight
));
echo '
'.$productID.'
';

$arFields = Array(
"CURRENCY" => "RUB", // валюта
"PRICE" => $item['info']['price'], // значение цены
"CATALOG_GROUP_ID" => 1, // ID типа цены
"PRODUCT_ID" => $PRODUCT_ID, // ID товара
);

CPrice::Add( $arFields );

так добавляется один товар, а как сделать у него много торговых предложений?
  • Вопрос задан
  • 10590 просмотров
Решения вопроса 2
Bankir77
@Bankir77
Для этого нужно иметь два инфоблока: товары и торговые предложения, инфа по настройке тут https://dev.1c-bitrix.ru/learning/course/?COURSE_I...

Рабочий пример:
CModule::IncludeModule('iblock');
CModule::IncludeModule('sale');

$ciBlockElement = new CIBlockElement;

// Добавляем товар-родитель, у которго будут торг. предложения
$product_id = $ciBlockElement->Add(
    array(
        'IBLOCK_ID' => 13, // IBLOCK товаров
        'NAME' => "Товар 1",
        "ACTIVE" => "Y",
        // Прочие параметры товара
    )
);
// проверка на ошибки
if (!empty($ciBlockElement->LAST_ERROR)) {
    echo "Ошибка добавления товара: ". $ciBlockElement->LAST_ERROR;
    die();
}
// добавляем нужное кол-во торговых предложений
$arLoadProductArray = array(
    "IBLOCK_ID"      => 14, // IBLOCK торговых предложений
    "NAME"           => "Торговое предложение 1",
    "ACTIVE"         => "Y",
    'PROPERTY_VALUES' => array(
        'CML2_LINK' => $product_id, // Свойство типа "Привязка к товарам (SKU)", связываем торг. предложение с товаром
    )
    // Прочие параметры товара 
);
$product_offer_id = $ciBlockElement->Add($arLoadProductArray);
// проверка на ошибки
if (!empty($ciBlockElement->LAST_ERROR)) {
    echo "Ошибка добавления торгового предложения: ". $ciBlockElement->LAST_ERROR;
    die();
}
// Добавляем параметры к торг. предложению
CCatalogProduct::Add(
    array(
        "ID" => $product_offer_id,
        "QUANTITY" => 9999
    )
);
// Добавляем цены к торг. предложению
CPrice::Add(
    array(
        "CURRENCY" => "RUB",
        "PRICE" => 999,
        "CATALOG_GROUP_ID" => 1,
        "PRODUCT_ID" => $product_offer_id,
    )
);
Ответ написан
@eternalfire
Если что методом CCatalogProduct::add добавляются параметры товара к элементу каталога.
Сам элемент каталога добавляется методом CIBlockElement::Add
А торговое предложение можно добавить указав в методе CIBlockElement::Add в массиве $arFields в ключе "PROPERTY_VALUES" свойство, по которому привязаны каталог и торговые предложения
CIBlockElement::Add(
    [
        'IBLOCK_ID' => 2, // инфоблок с торговыми предложениями
        'PROPERTY_VALUES' => [
            'CML2_LINK' => 12, // id товара, для которого торговые предложения
        ],
        ...
    ]
)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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