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

144
Алексей,
Кастомизация импорта заказов из 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/. Там же есть логи обмена.

Опубликовано 14 июля 2020
импорт, , разработчику
Комментарии