События массовой обработки очередного шага импорта
События вызываются после того, как модуль провел очередной шаг массового импорта товаров (модификаций, услуг и комплектов).
[OnAfterImportItems] - вызывается после массового импорта новых сущностей
[OnAfterUpdateItems] - вызывается после массового импорта существующих сущностей (после их обновления)
[OnAfterImporItems] Событие после импорта новых элементов
Поиск созданного элемента можно осуществить с помощью внешнего кода, который доступен в массиве обрабатываемых объектов из МС.
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'rbs.moyskladstocks',
'OnAfterImportItems',
'OnAfterImportItemsHandler'
);
function OnAfterImportItemsHandler(\Bitrix\Main\Event $event)
{
$eventParams = $event->getParameters();
$entity= $eventParams['entity']; //сущность в МойСклад, которая обрабатывается (четыер варианта значения: product / variant / bundle / service)
$items = $eventParams['items']; //массив обрабатываемых объектов (ниже пример их обработки)
foreach ($items as $xmlId => $itemMs) {
// $xmlId -- внешний код элемента, для модификаций это значение будет без решетки # во внешнем коде
// $itemMs -- сущность в МС, доступ к полям идет через свойства объекта
}
// \Rbs\MoyskladStocks\Logger::debugMsg($arItems, 'importItemsLog.log'); //запись в логи, логи хранятся в папке /bitrix/rbs.moyskladstocks/logs/
}
[OnAfterUpdateItems] Событие после импорта существующих элементов
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'rbs.moyskladstocks',
'OnAfterUpdateItems',
'OnAfterUpdateItemsHandler'
);
function OnAfterUpdateItemsHandler(\Bitrix\Main\Event $event)
{
$eventParams = $event->getParameters();
$entity= $eventParams['entity']; //сущность в МойСклад, которая обрабатывается (четыер варианта значения: product / variant / bundle / service)
$items = $eventParams['items']; //массив обрабатываемых объектов (ниже пример их обработки)
$productsBxArray = $eventParams['products']; //массив полей товара
foreach ($items as $xmlId => $currentItem) {
// $xmlId -- внешний код элемента, для модификаций это значение будет без решетки # во внешнем коде
$itemBx = $currentItem['BX']; //сущность в битриксе, доступ к полям идет через ассоциативный массив
$item = $currentItem['MS']; //сущность в МС, доступ к полям идет через свойства объекта
//поля товара в торговом каталоге
$productBxArray = isset($productsBxArray [$itemBx['ID']]) ? $productsBxArray[$itemBx['ID']] : [];
}
// \Rbs\MoyskladStocks\Logger::debugMsg($arItems, 'updateItemsLog.log'); //запись в логи, логи хранятся в папке /bitrix/rbs.moyskladstocks/logs/
}