if(CModule::IncludeModule("iblock")){ // получим все инфоблоки в каталоге $resB = CIBlock::GetList( Array(), Array( 'TYPE'=>'offers' ), false ); while($ar_res_blo = $resB->Fetch()) { $iblon[] = $ar_res_blo['ID']; } // запустим цикл для того что бы пройтись по инфоблокам foreach ($iblon as $iblon_id) { // пройдемся по всем элементам инфоблоков торговых предожений $arSelect = Array("ID"); $arFilter = Array("IBLOCK_ID"=>$iblon_id , "PROPERTY_CML2_ARTICLE" => false); $res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect); while($ob = $res->GetNextElement()) { $arFields = $ob->GetFields(); // получим связь с товаром $resLink = CIBlockElement::GetProperty($iblon_id, $arFields['ID'], "sort", "asc", array("CODE" => "CML2_LINK")); while ($obLink = $resLink->GetNext()) { //получим артикул для торгового предложения $arSelectElement = Array("PROPERTY_CML2_ARTICLE"); $arFilterElement = Array("ID" => $obLink['VALUE']); $resElement = CIBlockElement::GetList(Array(), $arFilterElement, false, false, $arSelectElement); while($obElement = $resElement->GetNextElement()) { $arFieldsElement = $obElement->GetFields(); $article = $arFieldsElement['PROPERTY_CML2_ARTICLE_VALUE']; if($article) { CIBlockElement::SetPropertyValueCode($arFields['ID'], "CML2_ARTICLE", $article); } } } } } }
Применять его довольно просто, надо указать тип инфоблока с торговыми предложениями, свойство привязки и свойство для артикула, кинуть на любую страницу и перезагрузить. Удачного применения
Опубликовано: 12 сентября 2012
|
|