Кастомизация импорта каталога из 1С в Bitrix

Для начала ссылки на сторонние статьи:
Итак, из всех статей выше мы можем заключить, что обмен проходит через файл /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С.

Если есть вопросы или что-то написано не верно - прошу в комментарии!
0
Игорь
10.03.2020 20:17:49
Есть смысл
0
Местный
07.09.2020 21:45:21
Еще какой есть, особенно когда дорабатываешь на стороне 1с обмен

Коэффициенты к примеру, как выгрузить штатными средствами ?
0
08.09.2020 00:37:37
На стороне 1С не дорабатывал.