Кастомизация импорта заказов из 1С
Если в заказах из 1С есть что-то, чего нет в битриксе, то добавить это можно во время импорта, расширив класс CSaleOrderLoader.
Я столкнулся с версией обмена 2.05, поэтому в примере будут устаревшие методы.
Для начала нужно скопировать компонент bitrix:sale.export.1c в папку local, что бы можно было изменить код component.php. В этом компоненте находится отправная точка импорта: $loader = new CSaleOrderLoader;
$loader = new CSaleOrderLoader; // меняем на свой класс, например $loader = new CSaleOrderLoaderCustom;
Всё, с этого момента xml данные будут попадать не в стандартный класс/метод, а в кастомный.
Где-нибудь в init.php добавим свой класс импорта заказов, который будет расширять стандартный.
class CSaleOrderLoaderCustom extends CSaleOrderLoader // /bitrix/modules/sale/general/order_loader.php { function oldSaveOrder ($arOrder, $option=array()) { // В этом методе можно менять алгоритм импорта заказа, скопировав код метода из ядра // Всё необходимые поля есть в массиве $arOrder } }
oldSaveOrder используется если версия протокола обмена меньше 2.1. Так же новый класс будет использовать только когда начнется новый импорт. Если поменять во время импорта, изменений не будет.
Посмотреть какие данные приходят из 1С можно в xml, обычно она находится в папке /upload/1c_exchange/. Там же есть логи обмена.
Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.