Решение: стандартный (от Битрикса) класс 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__ и прописать требуемый путь, возможно есть более изящное решение, но здесь приведено работающее решение для "памяти".