Задача: При импорте из 1С у товаров обновить все поля кроме привязки к категории.
Пробовал писать свои классы и делать через обработку события добавления элемента. Но никак не получается без того, чтобы не залезть в /bitrix/modules/iblock/classes/mysql/iblockelement.php метод update, и не изменить строку if(is_set($arFields, "IBLOCK_SECTION" ] ) ; CIBlockElement::SetElementSection($ID, $arFields["IBLOCK_SECTION" ] ) ;
В надежде на - "Событие вызывается в методе CIBlockElement::Add до вставки информационного блока, и может быть использовано для отмены вставки или переопределения некоторых полей.": создаю обработчик события AddEventHandler('IBlock', 'OnBeforeIBlockElementUpdate', 'customElementUpdate');
function customElementUpdate(&$arFields) { if ($_SERVER['SCRIPT_NAME'] == '/bitrix/admin/iblock_element_edit.php') return true; $arFields['IBLOCK_SECTION_ID'] = [некоторое значение]; $arFields['IBLOCK_SECTION'] = [некоторое значение]; }
но эти значения затем всё равно перебиваются. Так как компонент отправляет к CIBlockCMLImport а тот в совю очередь обращается к CIBlockElement передавая ему то, что я передавать бы не хотел - ид_секции. Как решить данную задачу?