в этом случае надо xml id сделать в нужном формате. ,Внимание, код работает с уже готовыми xml_id содержащими решетку- ваш случай мне не известен.
Было 1225 — подхватывает 1эска кодРодителя#1253 . Для этого можно востпользоваться скриптом и пройтись по всем торговым предложениям
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
<?php /** * Created by PhpStorm. * User: user * Date: 21.01.2020 * Time: 15:44 */ require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); echo 1; $arProds = Array(); // Массив со всеми товарами $resOffers = CIBlockElement::GetList( // Делаем выборку офероф Array(), Array("IBLOCK_ID" => 13), false, false, Array("IBLOCK_ID", "ID","XML_ID", "ACTIVE", "PROPERTY_CML2_LINK.ID") ); while($arOffer = $resOffers->GetNext()) { // Записываем активность офферов товара в массив $arProds $iProdId = $arOffer["PROPERTY_CML2_LINK_ID"]; $iOfferId = $arOffer["ID"]; $arProds[$iProdId][$iOfferId] = $arOffer["XML_ID"]; // print_r($arOffer); } $arProdsToDeact = Array(); // Массив товаров для деактивации foreach($arProds as $iProdId=>$arOffers) { // Перебор всех товаров // По умолчанию товар декативируем foreach($arOffers as $iOfferId=>$sOfferXmlId) { // Но саначала посмотрим оферы товара $pos = strripos($sOfferXmlId, "#"); if ($pos !== false) { $res= CIBlockElement::GetByID($iProdId); $XML_ID_PARRENT='noxml'; if($ar_res = $res->GetNext()){ // echo $ar_res['NAME']; $XML_ID_PARRENT=$ar_res['XML_ID']; } $pieces = explode("#", $sOfferXmlId); // $pieces[0]; // кусок1 $end_str= $pieces[1]; // кусок2 $sOfferXmlId= $XML_ID_PARRENT.'#'.$end_str; $arProdsToDeact[] =array('ID'=>$iOfferId,'XML_ID'=> $sOfferXmlId) ; }else{ break; } } } echo '<pre>'; print_r($arProdsToDeact); echo '<pre>'; $elProd = new CIBlockElement; // Каждому указываем новое значение активности foreach($arProdsToDeact as $key=>$val) { // Пройдем массив товаров для деактивации по порядку $arProd = Array("XML_ID" => $val['XML_ID']); //echo $val['ID'].'<br/>'; // $res = $elProd->Update($val['ID'], $arProd); // И обновляем } |