Битрикс восстановление Типа товара

02.11.2019

При добавлении добавления товаров скриптом (код см. ниже), у них не проставляется поле "Тип товара" и не отображается цена.

Нормального способа решения не нашел, но помогает сделать "Переиндексацию".

В настройках модуля Торговый каталог - Служебные процедуры - закладка "Переиндексация"

 
<?php
    function add($product)
    {
        $oElement = new \CIBlockElement;
        
        $IBLOCK_ID = 1; // IBLOCK_ID для каталога

        $aOptions = Array(
            "IBLOCK_SECTION_ID" => 101,          // ID категории
            "IBLOCK_ID"      => $IBLOCK_ID,
            "NAME"           => $product->title,
            "ACTIVE"         => "N",             // активен
            "CODE"         => $product->seo_url, // Ссылочный код
        );

        if($id = $oElement->Add($aOptions))
        {
            \CIBlockElement::SetPropertyValuesEx($id, $IBLOCK_ID, array(
                "UId" => $product->uid,
            ));

            $arField = array(
                "PRODUCT_ID" => $id,
                "CATALOG_GROUP_ID" => 1,
                "PRICE" => $product->price,
                "CURRENCY" => "RUB"
            );
            \CPrice::Add($arField);

        }
        else
        {
            throw new \Exception('Add Error: "'.$oElement->LAST_ERROR.'"');
        }


        $aOptions1 = $aOptions[0];
        $aOptions2 = $aOptions[1];

        $aOptions1['EL_SKU'] = $product->sku;

        $aOptions2['NAME'] = html_entity_decode($product->title);
        $aOptions2['PREVIEW_TEXT'] = $product->description;
        $aOptions2['PREVIEW_TEXT_TYPE'] = 'html';


        // Price:
        $arField = Array(
            "PRODUCT_ID" => $id,
            "CATALOG_GROUP_ID" => 1,
            "PRICE" => $product->price,
            "CURRENCY" => "RUB"
        );
        $res = \CPrice::GetList(array(),array("PRODUCT_ID" => $id, "CATALOG_GROUP_ID" => 1));
        if ($aTMP = $res->Fetch()) {
            $bTMP = \CPrice::Update($aTMP["ID"], $arField);
            //var_dump($bTMP).'<br />';
        } else {
            $bTMP = \CPrice::Add($arField);
            //var_dump($bTMP).'<br />';
        }



        // Images
        $aTMPFiles = [];
        $sTMPPath = $_SERVER['DOCUMENT_ROOT'].'/TMP/';
        $aFiles = array();
        $i=0;
        foreach($product->picture as $sImage)
        {
            $i++;
            preg_match_all('|code=(.*?)&|si', $sImage, $aMatches, PREG_SET_ORDER);

            $sFile = $sTMPPath.'vatten_'.$product->id.'_'.$i.'.jpg';

            if(!file_exists($sFile))
            {
                copy($sImage, $sFile);
            }
            $aFiles[] = \CFile::MakeFileArray($sFile);
            $aTMPFiles[] = $sFile;
        }
        $aOptions1['9'] = $aFiles;

        $aOptions2['PREVIEW_PICTURE'] = $aFiles[0];
        $aOptions2['DETAIL_PICTURE'] = $aFiles[0];

        \CIBlockElement::SetPropertyValuesEx($id, $IBLOCK_ID, $aOptions1);

        $el = new \CIBlockElement;
        $el->Update($id, $aOptions2); 
    }


Категории: Bitrix CMS
Пометки: Битрикс Тип товара
Яндекс.Метрика