Итак, из всех статей выше мы можем заключить, что обмен проходит через файл /bitrix/admin/1c_exchange.php посмотрев этот файл мы понимаем, что импорт каталога происходит через компонент catalog.import.1c
Вынесем этот компонент для кастомизации (перенесём папку /bitrix/components/bitrix/catalog.import.1cв /local/components/bitrix/catalog.import.1c) Далее смотрим в созданной папке файл component.php и прочитав немного код, понимаем, что вся логика происходит в классе CIBlockCMLImport... значит нам нужно "отпочковаться" от него и откорректировать некоторые методы (например ImportSection и ImportElement - отвечающие за сбору массива из XML)
Собственно делаем вышеописанное, создав в папке /local/components/bitrix/catalog.import.1c/ файл EX_CIBlockCMLImport.php со следующим кодом:
<?php
use Bitrix\Main,
Bitrix\Iblock,
Bitrix\Catalog;
IncludeModuleLangFile(__FILE__);
/**
* дорабатываем класс под свои нужды
*/
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/iblock/classes/general/cml2.php");
class EX_CIBlockCMLImport extends CIBlockCMLImport
{
// Обмен разделами
function ImportSection($xml_tree_id, $IBLOCK_ID, $parent_section_id)
{
}
// Обмен элементами
function ImportElement($arXMLElement, &$counter, $bWF, $arParent)
{
}
}
Расширяемый класс CIBlockCMLImport находится в файле /bitrix/modules/iblock/classes/general/cml2.php Далее нам следует заменить ВСЕ вызовы класса CIBlockCMLImport в файле /local/components/bitrix/catalog.import.1c/component.php на строку EX_CIBlockCMLImport, и в начале этого файла подключить наш файл строчкой
require_once(__DIR__."/EX_CIBlockCMLImport.php"); // подключаем расширение класса
Всё! Теперь обмен с 1С будет происходить через наш класс EX_CIBlockCMLImport где мы можем легко изменить любую логику скопировав соответствующий метод из файла /bitrix/modules/iblock/classes/general/cml2.php Очень сжато и кратко это и есть весь ужас и недопонимание кастомизации обмена каталогом БУС и 1С.
Если есть вопросы или что-то написано не верно - прошу в комментарии!
Коэффициенты к примеру, как выгрузить штатными средствами ?