Решение: стандартный (от Битрикса) класс CIBlockCMLImport (лежит здесь:Bitrix/modules/iblock/classes/general/cml2.php) выносим в свой файл задаем собственное имя и в функцию ImportElement дописываем код:
if($arXMLElement[$this->mess["IBLOCK_XML2_DELETE_MARK"]]=='true') { $obElement->Update($arDBElement["ID"], array("ACTIVE"=>"N"), $bWF); } |
if($this->CheckIfElementIsActive($arXMLElement)) { //In case element is not active in database we have to activate it and its offers if($arDBElement["ACTIVE"] != "Y") { $obElement->Update($arDBElement["ID"], array("ACTIVE"=>"Y"), $bWF); $this->ChangeOffersStatus($arDBElement["ID"], "Y", $bWF); $counter["UPD"]++; } } |
if($arDBElement["ACTIVE"] != "Y") { $this->ChangeOffersStatus($arDBElement["ID"], "Y", $bWF); } |
Естественно компонент импорта выносим в свое пространство имен и в нем вызываем наш переименованный и измененный класс.
В новом файле описываем вызов нашего компонента и обмен 1С настраиваем на этот файл.
Как перенести компоненты и переименовать описанно достаточно подробно в других источниках.
Важное замечание: лэнговые файлы сами по себе не подтягиваются, поэтому нужно прописать их вызов через обращение к модулю. Путь должен указываться от корневой папки, а не от корня сайта, лучше распечатать "волшебную" константу PHP __FILE__ и прописать требуемый путь, возможно есть более изящное решение, но здесь приведено работающее решение для "памяти".