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
|
|
|