
А на сайте иметь инфоблок с брендами
AddEventHandler( "iblock", "OnAfterIBlockElementAdd", array( "nika_import", "FillTheBrands" ) ); AddEventHandler( "iblock", "OnAfterIBlockElementUpdate", array( "nika_import", "FillTheBrands" ) ); class nika_import { function FillTheBrands( $arFields ){ $arCatalogID=array(10); //каталоги товаров $brandsCatalogId = 35;//ID инфоблока с произодителями (брендами) //обычно 1С выгружает в свойство с кодом 'CML2_MANUFACTURER', если настроено заменить 'CML2_MANUFACTURER' на свой код свойства $codePropBrand = 'BRAND'; //код свойства типа привязка к элементам инфоблока if(in_array($arFields['IBLOCK_ID'], $arCatalogID) ){ $arFilter = array('IBLOCK_ID' => $arFields['IBLOCK_ID'],'ID' => $arFields['ID']); $arSelect = array( 'ID', 'PROPERTY_CML2_MANUFACTURER'); $arItem = CIBlockElement::GetList( false, $arFilter, false, false, $arSelect)->fetch(); if($arItem['PROPERTY_CML2_MANUFACTURER_VALUE']){ $arFilter = array( 'IBLOCK_ID' => $brandsCatalogId, 'NAME' => $arItem['PROPERTY_CML2_MANUFACTURER_VALUE'] ); $arSelect = array("ID"); $arBrand = CIBlockElement::GetList( false, $arFilter,false,array("nPageSize"=>1),$arSelect)->fetch(); if( $arBrand ){ //cтавим найденный элемент-бренд CIBlockElement::SetPropertyValuesEx($arFields['ID'], false, array( $codePropBrand => $arBrand['ID'] )); } else{ //создаем новый бренд в инфоблоке и ставим его $el = new CIBlockElement; $arParams = array( "replace_space" => "-", "replace_other" => "-" ); $id = $el->Add( array( 'ACTIVE' => 'Y', 'NAME' => $arItem['PROPERTY_CML2_MANUFACTURER_VALUE'], 'IBLOCK_ID' => $brandsCatalogId, 'CODE' => Cutil::translit( $arItem['PROPERTY_CML2_MANUFACTURER_VALUE'], "ru", $arParams ) ) ); if( $id ){ CIBlockElement::SetPropertyValuesEx( $arFields['ID'], false, array( $codePropBrand => $id ) ); } else{ echo $arItem['PROPERTY_CML2_MANUFACTURER_VALUE']." ".Cutil::translit( $arItem['PROPERTY_CML2_MANUFACTURER_VALUE'], "ru", $arParams )." "; echo $el->LAST_ERROR; } } } } } } |